主要内容

rlContinuousGaussianActor

随机高斯演员为强化学习代理一个持续的行动空间

自从R2022a

描述

对象实现一个函数的估计值作为一个随机的演员在强化学习代理和一个持续的行动空间。连续高斯演员需要一个环境观察作为输入并返回输出随机行动从参数化高斯概率分布采样,从而实现参数化随机政策。当你创建一个rlContinuousGaussianActor对象,使用它来创建一个合适的代理,如一个rlACAgentrlPGAgent代理。创建表示更多的信息,请参阅创建政策和价值功能

创建

描述

演员= rlContinuousGaussianActor (,observationInfo,actionInfoActionMeanOutputNames =netMeanActNameActionStandardDeviationOutputNames =netStdvActName)创建一个高斯随机演员与一个连续动作使用深层神经网络空间作为近似模型。在这里,必须有两个名字不同的输出层,每个都有尽可能多的元素数量的维度的空间,指定在吗actionInfo。两个输出层必须返回每个组件的平均值和标准偏差的行动,分别。演员使用这些层的输出,根据名字中指定的字符串netMeanActNamenetStdActName,代表高斯概率分布的行动是采样。这个语法设置ObservationInfoActionInfo的属性演员的输入参数observationInfoactionInfo,分别。

请注意

演员不强制约束设定的行动规范。当使用这个演员比在其他任何地方都囊剂,你必须执行行动空间中约束环境。

例子

演员= rlContinuousGaussianActor (,observationInfo,actionInfoActionMeanOutputNames =netMeanActNameActionStandardDeviationOutputNames =netStdActNameObservationInputNames =netObsNames)指定的名称与环境相关的网络输入层观测通道。函数分配,按顺序排列的,每个环境观察通道中指定observationInfo指定的层相应名称的字符串数组netObsNames。因此,网络的输入层,命令的名称netObsNames,必须具有相同的数据类型和维度观察规范,是命令observationInfo

演员= rlContinuousGaussianActor (___UseDevice =useDevice)指定的设备用来执行计算操作演员对象,并设置UseDevice的属性演员useDevice输入参数。您可以使用该语法与任何以前的输入参数组合。

输入参数

全部展开

深层神经网络用作底层近似模型内的演员。它必须尽可能多的输入层环境观测通道的数量(每个输入层接收来自一个观测通道输入)。网络必须有两个名字不同的输出层各有尽可能多的元素数量的维度的空间,作为中指定actionInfo。两个输出层返回每个组件的平均值和标准偏差的行动。演员使用这些层,根据名字中指定的字符串netMeanActNamenetStdActName,代表高斯概率分布的行动是采样。

请注意

由于标准差必须负的,返回的输出层必须softplus或标准差ReLU层,执行nonnegativity。还,除非演员囊剂中使用,意味着值必须在范围之内的所有行动。在这种情况下,按比例输出范围的平均值,使用一个扩展层作为输出层为平均值,之前一个双曲正切层。囊剂自动读取的行动范围UpperLimitLowerLimit行为规范的属性,然后在内部规模分布和边界行动。因此,如果演员在囊剂必须使用,不添加任何层鳞片或范围平均值的输出。

您可以指定网络是下列之一:

请注意

在不同的网络表示选项,dlnetwork是首选的,因为它有内置的验证检查,支持自动分化。金宝app如果你通过另一个网络对象作为输入参数,转换为内部dlnetwork对象。然而,最佳实践是将其他表示dlnetwork显式地之前使用它来创建一个评论家或演员强化学习代理。你可以使用dlnet = dlnetwork(净),在那里任何神经网络对象的深度学习工具箱™。由此产生的dlnetdlnetwork对象,你使用你的批评或者演员。这种做法允许更大程度的洞察力和控制的情况下,转换并非易事,可能需要额外的规范。

rlContinuousGaussianActor复发性深层神经网金宝app络对象支持。

可学的参数的演员是深层神经网络的权重。深层神经网络层的列表,请参阅深度学习层的列表。更多信息为强化学习创造深层神经网络,看到的创建政策和价值功能

网络输出层的名称对应操作的平均值渠道,指定为字符串或字符向量。演员使用这个名称来选择网络输出层返回的每个元素的平均值行动通道。因此,这个网络输出层必须命名为示netMeanActName。此外,它必须是一个层,缩放返回的值所需的行动范围。

例子:“myNetOut_Force_Mean_Values”

网络输出层的名称对应操作的标准差渠道,指定为字符串或字符向量。演员使用这个名称来选择网络输出层返回的每个元素的标准差行动通道。因此,这个网络输出层必须命名为示netStdvActName。此外,它必须是一个softplus或ReLU层,执行nonnegativity返回的标准差。

例子:“myNetOut_Force_Standard_Deviations”

网络输入层名称对应于环境观察渠道,指定为字符串数组或单元阵列的特征向量。当你使用这个论点“ObservationInputNames”,该函数分配,按顺序排列的,每个环境观测通道中指定observationInfo每个网络输入层由相应的指定名称的字符串数组netObsNames。因此,网络的输入层,命令的名称netObsNames,必须具有相同的数据类型和维度观察通道,是命令observationInfo

例子:{“NetInput1_airspeed”、“NetInput2_altitude”}

属性

全部展开

观测规范,指定为一个rlFiniteSetSpecrlNumericSpec对象或数组包含一个混合的对象。数组中每个元素定义了一个环境观测通道的特性,比如尺寸,数据类型和名称。

rlContinuousGaussianActor设置ObservationInfo的属性演员输入observationInfo

您可以提取ObservationInfo从现有的环境或代理使用getObservationInfo。你也可以手动构建规范。

动作规范,指定为一个rlNumericSpec对象。这个对象定义环境行动通道的属性,如尺寸,数据类型和名称。

请注意

只有一个动作频道是被允许的。

rlContinuousGaussianActor设置ActionInfo的属性评论家输入actionInfo

您可以提取ActionInfo从现有的环境或代理使用getActionInfo。你也可以手动构建规范。

计算设备用于执行操作,如梯度计算,参数更新和预测在训练和仿真,指定为“cpu”“图形”

“图形”选择需要并行计算工具箱和CUDA™软件®使英伟达®GPU。支持gpu看到更多的信息金宝appGPU计算的需求(并行计算工具箱)

您可以使用gpuDevice(并行计算工具箱)查询或选择一个当地的GPU设备使用MATLAB®

请注意

培训或模拟一个代理在GPU包括特定于设备的数字舍入错误。这些错误可以产生不同的结果相比,使用一个CPU执行相同的操作。

加快培训通过使用并行处理多个核心,您不需要使用这个参数。相反,当训练你的代理,使用一个rlTrainingOptions对象的UseParallel选项设置为真正的。关于培训的更多信息使用多核处理器和gpu培训,明白了培训代理商使用并行计算和gpu

例子:“UseDevice”、“gpu”

对象的功能

rlACAgent Actor-critic (AC)强化学习代理
rlPGAgent 策略梯度(PG)强化学习代理
rlPPOAgent 近端政策优化(PPO)强化学习代理
rlSACAgent 软actor-critic (SAC)强化学习代理
getAction 从代理,获得动作演员,或政策对象环境的观察
评估 评估函数近似者对象给定的观察(或observation-action)输入数据
梯度 评价梯度函数近似者对象给定的输入数据观察和行动
加速 选择加速计算梯度的近似者对象基于神经网络
getLearnableParameters 从代理,获得可学的参数值函数近似者,或政策对象
setLearnableParameters 设置代理可学的参数值,函数近似者,或政策对象
setModel 集函数近似模型的演员或评论家
getModel 从演员或评论家得到函数近似者模型

例子

全部折叠

创建一个观察对象(或者使用规范getObservationInfo从环境中提取规范对象)。对于本例,观察空间定义为一个连续的六维空间,所以只有一个观测通道,携带一个列向量包含五个双打。

obsInfo = rlNumericSpec (1 [5]);

创建一个操作规范对象(或者使用getActionInfo从环境中提取规范对象)。在这个例子中,定义了行动空间作为一个连续的三维空间,这行动通道包含三个双打携带一个列向量,每个-10和10之间。

actInfo = rlNumericSpec (1 [3],LowerLimit = -10,UpperLimit = 10);

连续高斯参与者实现了参数化随机政策连续操作空间。这演员需要一个观察作为输入并返回输出随机行动从高斯概率分布采样。

近似高斯分布的平均值和标准偏差,您必须使用神经网络和两个输出层,每一个拥有尽可能多的元素行为空间的维数。一个输出层必须返回一个向量包含每个行动维度的平均值。另一个必须返回向量包含每个行动维度的标准差。

注意,必须负的值和均值标准差必须在范围之内的所有行动。因此输出层返回必须softplus或标准差ReLU层,执行nonnegativity,而输出层返回平均值必须扩展层,按比例输出范围的平均值。然而,不添加一个tanhLayer作为最后一个非线性层平均输出路径如果你要使用囊剂中的演员。更多信息见软Actor-Critic (SAC)代理

对于这个示例环境只有一个观测通道,因此网络只有一个输入层。请注意,刺激(obsInfo.Dimension)刺激(actInfo.Dimension)返回的数量的维度观察和行动空间,分别不管他们是否安排行向量,列向量或矩阵。

定义每个网络路径层对象数组,并将名称分配给每条路径的输入和输出层。这些名字让你连接路径,然后明确关联网络的输入和输出通道层与适当的环境。

%的输入路径层inPath = [featureInputLayer (刺激(obsInfo.Dimension),Name =“netOin”)fullyConnectedLayer (刺激(actInfo.Dimension),Name =“infc”));%路径层平均值%利用scalingLayer规模从(1)到(-10年,10)meanPath = [tanhLayer (Name =“tanhMean”);fullyConnectedLayer(刺激(actInfo.Dimension));scalingLayer (Name =“规模”,规模= actInfo.UpperLimit)];%路径层标准差%使用softplus层使其非负的sdevPath = [tanhLayer (Name =“tanhStdv”);fullyConnectedLayer(刺激(actInfo.Dimension));softplusLayer (Name =“splus”));%添加层网络对象网= layerGraph (inPath);网= addLayers(净,meanPath);网= addLayers(净,sdevPath);%连接层网= connectLayers(网络,“infc”,“tanhMean /”);网= connectLayers(网络,“infc”,“tanhStdv /”);%画出网络情节(净)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

网络转换为一个dlnetwork对象和显示可学的参数的数量(重量)。

网= dlnetwork(净);总结(净)
初始化:可学的真正的数量:42输入:1 netOin 5特性

创建的演员rlContinuousGaussianActor使用网络,观察和操作规范对象,网络的输入和输出层的名字。

演员= rlContinuousGaussianActor(净、obsInfo actInfo,ActionMeanOutputNames =“规模”,ActionStandardDeviationOutputNames =“splus”,ObservationInputNames =“netOin”);

检查你的演员,使用getAction返回一个行动从一个随机观测向量,使用当前的网络权值。每个操作的三个元素向量是一个随机样本平均值和标准偏差计算的高斯分布,作为当前的观测,函数的神经网络。

行动= getAction(演员,{兰德(obsInfo.Dimension)});行为{1}
ans =3 x1单一列向量-12.0285 1.7628 10.8733

返回操作的高斯分布,给定一个观察,使用评估

dist =评估(演员,{兰德(obsInfo.Dimension)});

显示向量的平均值。

dist {1}
ans =3 x1单一列向量-5.6127 3.9449 9.6213

显示标准差的向量。

dist {2}
ans =3 x1单一列向量0.8516 0.8366 0.7004

您现在可以使用演员(以及一个评论家)创建一个代理对环境给予规范所描述的对象。代理的例子可以处理连续操作和观察空间,并使用一个连续高斯演员,rlACAgent,rlPGAgent,rlSACAgent,rlPPOAgent,rlTRPOAgent

有关创建接近者对象的更多信息,如演员和评论家,明白了创建政策和价值功能

版本历史

介绍了R2022a