主要内容

RLDETerminyActorRepresentation

钢筋学习代理的确定性演员代表

描述

该对象实现了用作加强学习代理中的确定性actor的函数近似器。连续行动空间。确定性actor将观察结果作为输入并返回,因为输出最大化预期累积长期奖励的操作,从而实施确定性策略。创建一个RLDETerminyActorRepresentation对象,使用它来创建合适的代理,例如rlddpgagent.代理人。有关创建表示的更多信息,请参阅创建策略和值函数表示

创造

描述

示例

演员= RLDETerministicActorRepresentation(观察税收ActionInfo.,'观察',obsname.,'行动',actname.使用深神经网络创建一个确定性演员作为近似剂。此语法设置了观察税收ActionInfo.属性演员对投入观察税收ActionInfo.,包含分别观察和行动的规范。ActionInfo.必须指定连续动作空间,不支持离散操作空间。金宝appobsname.必须包含输入层的名称与观察规范相关联。动作名称actname.必须是输出层的名称与动作规范相关联。

示例

演员= RLDETerminyActorRepresentation({基础FCN.W0.},观察税收ActionInfo.使用自定义基函数创建一个确定性actor,作为基础近似值。第一个输入参数是一个双元素单元,其中第一个元素包含句柄基础FCN.到自定义基础函数,第二个元素包含初始权重矩阵W0.。此语法设置了观察税收ActionInfo.属性演员分别到输入观察税收ActionInfo.

演员= RLDETerministicActorRepresentation(___选择使用其他选项集创建确定性actor选择,这是一个rlrepresentationOptions.对象。此语法设置了选择财产演员到了选择输入参数。您可以使用任何以前的Infux-Argument组合使用此语法。

输入参数

展开所有

深神经网络用作演员内的底层近似器,指定为以下之一:

网络输入层必须是相同的顺序,并且具有与所定义的信号相同的数据类型和尺寸观察税收。此外,这些输入层的名称必须与列出的观察名称匹配obsname.

网络输出层必须具有与所定义的信号相同的数据类型和维度ActionInfo.。其名称必须是指定的操作名称actname.

RLDETerminyActorRepresentation对象支持反复性的金宝app深神经网络。

对于深度神经网络层的列表,请参阅深度学习层名单。有关为强化学习创建深度神经网络的更多信息,请参阅创建策略和值函数表示

观察名称,指定为字符串或字符向量的单元格数组。观察名称必须是输入图层的名称

示例:{'my_obs'}

操作名称,指定为包含字符向量的单元素单元数组。它必须是输出层的名称

示例:{'my_act'}

自定义基函数,指定为用户定义的MATLAB函数的函数句柄。用户定义的函数可以是matlab路径上的匿名函数或函数。基于当前观察的行动,即演员的输出,是载体a = w'* b,在哪里W.是包含可学习参数的权重矩阵B.是自定义基函数返回的列向量。

创建确定性演员表示时,您的基函数必须具有以下签名。

b = mybasisfunction(obs1,obs2,...,obsn)

在这里obs1.到目前为止obsn.是以相同的顺序观察和与定义的信号相同的数据类型和尺寸观察税收

示例:@(obs1,obs2,obs3)[obs3(2)* obs1(1)^ 2;ABS(OBS2(5)+ OBS3(1))]

基础函数权重的初始值,W.,指定为具有多个行的矩阵,作为基本函数返回的向量的长度,并且与动作空间的维度一样多的列。

属性

展开所有

表示选项,指定为rlrepresentationOptions.对象。可用选项包括用于培训和学习率的优化器。

观察规范,指定为rlfinitesetspec.或者rlnumericspec.对象或这些对象的数组。这些对象定义了观察信号的尺寸,数据类型和名称等属性。

RLDETerminyActorRepresentation设置观察税收财产演员到意见观察税收

你可以提取观察税收从现有的环境或代理商使用getobservationInfo.。您还可以手动构建规范。

持续动作空间的操作规范,指定为一个rlnumericspec.对象定义属性,例如维度,数据类型和动作信号的名称。确定性演员表示不支持离散的行动。金宝app

RLDETerminyActorRepresentation设置ActionInfo.财产演员到意见观察税收

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

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

对象功能

rlddpgagent. 深度确定性政策梯度加固学习代理
rltd3agent. 双延迟深度确定性政策梯度加固学习代理
努力 从代理商或演员代表获取行动给定环境观察

例子

崩溃

创建观察规范对象(或使用getobservationInfo.从环境中提取规范对象)。对于该示例,将观察空间定义为连续的四维空间,因此单个观察是包含四个双打的列向量。

Obsinfo = rlnumericspec([4 1]);

创建动作规范对象(或使用getActionInfo.从环境中提取规范对象)。对于此示例,将动作空间定义为连续的二维空间,因此单个动作是包含两个双打的列向量。

Actinfo = rlnumericspec([2 1]);

为演员创建一个深神经网络近似器。网络的输入(此处调用蒙布斯)必须接受四元素矢量(刚刚定义的观察向量obsinfo.),它的产出必须是动作(这里称为界面)和是一个双元素矢量,如所定义Actinfo.

net = [featureinputlayer(4,'正常化''无''名字''myobs')全连接列(2,'名字'“界面”)];

创造批评者rlqvalueerepresentation,使用网络,观察和动作规范对象,以及网络输入和输出层的名称。

Actor = RLDETerminyActorRepresentation(Net,Obsinfo,Actinfo,......'观察',{'myobs'},'行动',{“界面”})
Actor = RLDETerminyActorRepresentation具有属性:ActionInfo:[1x1 Rl.util.rlnumericspec] deviewationinfo:[1x1 rl.util.rlnumericspec]选项:[1x1 rl.option.rlrepresentationOptions]

检查你的演员,使用努力要从随机观察返回动作,使用当前网络权重。

act = getaction(演员,{rand(4,1)});{1}
ans =.2x1单列向量-0.5054 1.5390

您现在可以使用演员创建合适的代理(例如rlacagent.rlpgagent.或者rlddpgagent.代理人)。

创建观察规范对象(或使用getobservationInfo.从环境中提取规范对象)。对于该示例,将观察空间定义为连续的四维空间,因此单个观察是包含3个双打的列向量。

Obsinfo = rlnumericspec([3 1]);

确定性演员不支持离散动作空间。金宝app因此,创建一个连续动作空间规范对象(或者使用getActionInfo.从环境中提取规范对象)。对于此示例,将动作空间定义为连续的二维空间,从而单个动作是包含2个双打的列向量。

Actinfo = rlnumericspec([2 1]);

创建自定义基本函数。每个元素是由此定义的观察结果的函数obsinfo.

mybasisfcn = @(myobs)[myobs(2)^ 2;myobs(1);2 * myobs(2)+ myobs(1);-myobs(3)]
mybasisfcn =function_handle具有值:@(myobs)[myobs(2)^ 2; myobs(1); 2 * myobs(2)+ myobs(1);  -  myobs(3)]

演员的输出是向量w'* mybasisfcn(myobs),这是由于给定观察所采取的行动。重量矩阵W.包含可知的参数,并且必须具有与基础函数输出的长度一样多的行,并且与操作空间的维度一样多。

定义初始参数矩阵。

W0 =兰特(4,2);

创建演员。第一个参数是一个两个元素单元,包含自定义函数和初始权重矩阵的句柄。第二和第三个参数分别是观察和动作规范对象。

Actor = RLDETerminyActorRepresentation({MyBasisfcn,W0},Obsinfo,Actinfo)
Actor = RLDETerminyActorRepresentation具有属性:ActionInfo:[1x1 Rl.util.rlnumericspec] deviewationinfo:[1x1 rl.util.rlnumericspec]选项:[1x1 rl.option.rlrepresentationOptions]

要检查你的演员,请使用努力使用当前参数矩阵从给定观察返回动作的功能。

a = getation(演员,{[1 2 3]'});一个{1}
ans = 2x1 dlarray 2.0595 2.3788

您现在可以使用演员(以及批评者)来创建合适的连续动作空间代理。

创建观察和行动信息。您还可以从环境中获取这些规范。

Obsinfo = rlnumericspec([4 1]);Actinfo = rlnumericspec([2 1]);numobs = obsinfo.dimension(1);Numact = Actinfo.dimension(1);

为演员创建一个经常性的深神经网络。要创建经常性的神经网络,请使用asequenceInputlayer.作为输入层并包括至少一个lstmlayer.

net = [sequenceInputlayer(numobs,'正常化''无''名字'“州”)全连接层(10,'名字''fc1')剥离('名字''relu1')LSTMLAYER(8,'OutputMode''序列''名字''Actorlstm')全连接列(20,'名字''批评福尔2')全连接层(数量,'名字''行动')Tanhlayer('名字''tanh1')];

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

ACTOROPTIONS = RLREPRESENTATIONOPTIONS('学习',1e-3,'gradientthreshold',1);Actor = RLDETerminyActorRepresentation(Net,Obsinfo,Actinfo,......'观察',{“州”},'行动',{'tanh1'});
在R2020A中介​​绍