主要内容

rlContinuousDeterministicActor

确定性演员与一个连续动作的强化学习空间代理

自从R2022a

描述

对象实现一个函数的估计值作为一个确定的演员在强化学习代理一个持续的行动空间。连续确定的演员需要一个环境观察作为输入并返回输出一个动作,观察的是一个参数化的确定性函数,从而实现参数化确定的政策。当你创建一个rlContinuousDeterministicActor对象,使用它来创建一个合适的代理,等rlDDPGAgent。创建表示更多的信息,请参阅创建政策和价值功能

创建

描述

例子

演员= rlContinuousDeterministicActor (,observationInfo,actionInfo)创建了一个连续使用深层神经网络确定的演员对象作为潜在的近似模型。对于这个演员,actionInfo必须指定一个持续的行动空间。与环境相关的网络输入层自动观测通道根据尺寸规格observationInfo。网络必须要有一个输出层具有相同的数据类型和维度中指定的操作actionInfo。这个函数设置ObservationInfoActionInfo的属性演员observationInfoactionInfo分别输入参数。

例子

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

例子

演员= rlContinuousDeterministicActor ({basisFcn,W0},observationInfo,actionInfo)创建一个连续确定的演员对象基本使用一个自定义的基函数作为近似模型。双元素单元第一个输入参数是一个数组的第一个元素处理basisFcn一个自定义的基函数,第二个元素是初始权向量W0。这个函数设置ObservationInfoActionInfo的属性演员observationInfoactionInfo分别输入参数。

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

输入参数

全部展开

深层神经网络用作底层近似模型在演员,指定为以下之一:

请注意

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

网络必须尽可能多的输入层环境观测通道的数量(每个输入层接收来自一个观测通道输入),和一个输出层返回的行动。

rlContinuousDeterministicActor复发性深层神经网万博1manbetx络对象支持。例如,看到的创建从递归神经网络确定的演员

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

网络输入层名称对应于环境观测通道。当您使用这一对值参数“ObservationInputNames”netObsNames,该函数分配,按顺序排列的,每个环境观测通道中指定observationInfo每个网络输入层由相应的指定名称的字符串数组netObsNames。因此,网络的输入层,命令的名称netObsNames,必须具有相同的数据类型和维度观察通道,是命令observationInfo

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

自定义的基函数,指定为一个函数处理一个用户定义的MATLAB函数。用户定义函数可以是一个匿名函数或一个函数在MATLAB的道路。行动是基于当前的观察,这是演员的输出,是向量= W ' * B,在那里W是一个权重矩阵包含可学的参数和B是返回的列向量自定义基函数。

你的基函数必须有以下签名。

B = myBasisFunction (obsN obs1, obs2,…)

在这里,obs1obsN在相同的顺序输入,与相同的数据类型和维度环境观测通道中定义observationInfo

例子:@ (obs1 obs2 obs3) [obs3 (2) * obs1 (1) ^ 2;abs (obs2 (5) + obs3 (1)))

基函数的初始值权重W,指定为一个矩阵有尽可能多的行返回的矢量基函数的长度和尽可能多的列行动空间的维数。

属性

全部展开

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

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

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

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

请注意

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

rlContinuousDeterministicActor设置ActionInfo的属性演员输入observationInfo

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

对于自定义基函数表示,行动信号必须是一个标量,一个列向量,或一个离散的行动。

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

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

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

请注意

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

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

例子:“图形”

对象的功能

rlDDPGAgent 深决定性策略梯度(DDPG)强化学习代理
rlTD3Agent Twin-delayed深确定性(TD3)政策梯度强化学习代理
getAction 从代理,获得动作演员,或政策对象环境的观察
评估 评估函数近似者对象给定的观察(或observation-action)输入数据
梯度 评价梯度函数近似者对象给定的输入数据观察和行动
加速 选择加速计算梯度的近似者对象基于神经网络
getLearnableParameters 从代理,获得可学的参数值函数近似者,或政策对象
setLearnableParameters 设置代理可学的参数值,函数近似者,或政策对象
setModel 集函数近似模型的演员或评论家
getModel 从演员或评论家得到函数近似者模型

例子

全部折叠

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

obsInfo = rlNumericSpec (1 [4]);

创建一个操作规范对象(或者使用getActionInfo从环境中提取规范对象)。在这个例子中,定义了行动空间作为一个连续的二维空间,以便行动通道有一个列向量包含两个双打。

2 actInfo = rlNumericSpec ([1]);

连续确定的演员为连续实现参数化确定的政策操作空间。这个演员需要当前观测作为输入并返回输出一个观察的行动是一个确定性的函数。

模型中的参数化政策的演员,使用一个输入神经网络层(接收环境观察频道的内容,规定obsInfo)和一个输出层(返回行动对环境行动通道,是指定的actInfo)。

层对象的网络定义为一个数组,并观察和行动空间的维数从环境规范的对象。

网= [featureInputLayer (obsInfo.Dimension (1) fullyConnectedLayer (32) reluLayer fullyConnectedLayer (actInfo.Dimension (1)));

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

网= dlnetwork(净);总结(净)
初始化:可学的真正的数字:226输入:1“输入”4特性

创建角色对象rlContinuousDeterministicActor使用网络,观察和操作规范对象作为输入参数。与环境相关的网络输入层自动观测通道根据尺寸规格obsInfo

演员= rlContinuousDeterministicActor (网,obsInfo,actInfo)
演员= rlContinuousDeterministicActor属性:ObservationInfo: [1 x1 rl.util。rlNumericSpec] ActionInfo: [1 x1 rl.util。rlNumericSpec] UseDevice:“cpu”

检查你的演员,使用getAction返回操作从一个随机的观察,使用当前的网络权值。

行动= getAction(演员,{兰德(obsInfo.Dimension)});行为{1}
ans =2 x1单一列向量-0.0684 - -0.2538

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

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

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

obsInfo = rlNumericSpec (1 [4]);

创建一个操作规范对象(或者使用getActionInfo从环境中提取规范对象)。在这个例子中,定义了行动空间作为一个连续的二维空间,以便行动通道有一个列向量包含两个双打。

2 actInfo = rlNumericSpec ([1]);

连续确定的演员为连续实现参数化确定的政策操作空间。这个演员以当前观测作为输入并返回一个行动作为输出。

模型中的参数化政策的演员,使用一个输入神经网络层(接收环境观察频道的内容,规定obsInfo)和一个输出层(返回行动对环境行动通道,是指定的actInfo)。

层对象的网络定义为一个数组,并观察和行动空间的维数从环境规范的对象。名网络输入层netObsIn所以您稍后可以显式地将它观察输入通道。

网= [featureInputLayer obsInfo.Dimension (1) Name =“netObsIn”)fullyConnectedLayer (16) reluLayer fullyConnectedLayer (actInfo.Dimension (1)];

网络转换为一个dlnetwork对象,并显示可学的参数的数量。

网= dlnetwork(净);总结(净)
初始化:可学的真正的数字:114输入:1“netObsIn”4特性

创建角色对象rlContinuousDeterministicActor使用网络,观察和操作规范对象,网络输入层的名称与环境观测通道有关。

演员= rlContinuousDeterministicActor(网络,obsInfo actInfo,观察=“netObsIn”)
演员= rlContinuousDeterministicActor属性:ObservationInfo: [1 x1 rl.util。rlNumericSpec] ActionInfo: [1 x1 rl.util。rlNumericSpec] UseDevice:“cpu”

检查你的演员,使用getAction返回操作从一个随机的观察,使用当前的网络权值。

行动= getAction(演员,{兰德(obsInfo.Dimension)});行为{1}
ans =2 x1单一列向量0.4013 - 0.0578

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

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

创建一个观察对象(或者使用规范getObservationInfo从环境中提取规范对象)。对于本例,观察空间定义为环境组成的两个渠道,第一个包含一个连续2乘2矩阵和第二个包含一个标量,只能是0或1。

obsInfo = [rlNumericSpec (2 [2]) rlFiniteSetSpec ([0 1]];

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

actInfo = rlNumericSpec (1 [3]);

连续确定的演员为连续实现参数化确定的政策操作空间。这个演员需要当前观测作为输入并返回输出一个观察的行动是一个确定性的函数。

模型中的参数化政策的演员,用一个自定义的基函数有两个输入参数(每个观察一个通道)。

myBasisFcn = @ (obsA obsB) [obsA (1,1) + obsB (1) ^ 2;obsA (2, 1) -obsB (1) ^ 2;obsA (1、2) ^ 2 + obsB (1);obsA (2, 2) ^ 2-obsB (1)];

演员的输出向量W * myBasisFcn (obsA obsB),这是采取行动的结果观察。权重矩阵W包含可学的参数,必须尽可能多的行基函数的长度输出和尽可能多的列行动空间的维数。

定义一个初始参数矩阵。

W0 =兰德(4,3);

创建一个演员。第一个参数是一个双元素的细胞包含处理自定义函数和初始权重矩阵。第二个和第三个参数,分别观察和操作规范对象。

演员= rlContinuousDeterministicActor ({myBasisFcn, W0}, obsInfo actInfo)
演员= rlContinuousDeterministicActor属性:ObservationInfo: [2 x1 rl.util。RLDataSpec] ActionInfo: [1 x1 rl.util。rlNumericSpec] UseDevice:“cpu”

检查你的演员,使用getAction函数返回给定的行动观察,使用当前的参数矩阵。

一个= getAction(演员,{0}兰德(2,2))
一个=1 x1单元阵列{3 x1双}
一个{1}
ans =3×11.3192 0.8420 1.5053

注意,行为人不实施约束的离散集合的元素。

一个= getAction(演员,{兰德(2,2),1});一个{1}
ans =3×12.7890 1.8375 3.0855

您现在可以使用演员(以及一个评论家)创建一个代理对环境给予规范所描述的对象。代理可以使用一个混合的例子观测空间,一个连续动作空间,并使用一个连续确定的演员,rlDDPGAgentrlTD3Agent

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

创建的观察和操作信息。您还可以从一个环境获得这些规范。对于本例,观察空间定义为一个连续的四维空间,这样一个观测通道有一个列向量包含四个双打,和行动空间作为一个连续的二维空间,以便行动通道有一个列向量包含两个双打。

obsInfo = rlNumericSpec (1 [4]);2 actInfo = rlNumericSpec ([1]);

连续确定的演员为连续实现参数化确定的政策操作空间。这个演员需要当前观测作为输入并返回输出一个观察的行动是一个确定性的函数。

模型中的参数化政策的演员,使用一个输入神经网络层(接收环境观察频道的内容,规定obsInfo)和一个输出层(返回行动对环境行动通道,是指定的actInfo)。

层对象的网络定义为一个数组,并观察和行动空间的维数从环境规范的对象。因为这个网络是周期性的,使用一个sequenceInputLayer作为输入层,包括至少一个lstmLayer

网= [sequenceInputLayer (obsInfo.Dimension (1) fullyConnectedLayer (10) reluLayer lstmLayer (8, OutputMode =“序列”)fullyConnectedLayer (20) fullyConnectedLayer (actInfo.Dimension (1) tanhLayer];

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

网= dlnetwork(净);总结(净)
初始化:可学的真正的数字:880输入:1“sequenceinput”序列输入4维度

创建一个确定的演员表示网络。

演员= rlContinuousDeterministicActor (网,obsInfo,actInfo);

检查你的演员,使用getAction返回操作从一个随机的观察,鉴于目前网络权重。

一个= getAction(演员,{兰德(obsInfo.Dimension)});一个{1}
ans =2 x1单一列向量-0.0742 - 0.0158

您可以使用getState设置状态提取和递归神经网络的当前状态的演员。

getState(演员)
ans =2×1单元阵列{8 x1单}{8 x1单}
演员=设置状态(演员,{-0.01 *单(兰德(8,1)),0.01 *单(兰德(8,1))});

评价演员使用连续的观测,使用序列长度(时间)维度。例如,获得5独立的序列组成的每一个行动9连续观测。

(行动、州)= getAction(演员,{兰德([obsInfo。维度5 9])});

显示相对应的行动第七观测序列的元素在第四序列。

action ={1}行动;行动(1、1、4、7)
ans =-0.2426

递归神经网络的显示更新后的状态。

状态
状态=2×1单元阵列{8 x5单}{8 x5单}

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

更多信息在复发性神经网络的输入和输出格式,请参见算法部分lstmLayer。有关创建接近者对象的更多信息,如演员和评论家,明白了创建政策和价值功能

版本历史

介绍了R2022a