主要内容

RLDETerminyActorRepresentation

强化学习主体的确定性行为体表示

描述

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

创建

描述

例子

演员= RLDETerministicActorRepresentation(观察税收ActionInfo.,'观察',obsname.“行动”,actName使用深神经网络创建一个确定性演员作为估计值。该语法设置ObservationInfoActionInfo的属性演员对投入观察税收ActionInfo.,包含分别观察和行动的规范。ActionInfo.必须指定连续动作空间,不支持离散操作空间。万博1manbetxobsname.必须包含输入层的名称与观察规范相关的。动作名称actName的输出层的名称必须是与操作规范相关联的。

例子

演员= RLDETerminyActorRepresentation({basisFcnW0.},观察税收ActionInfo.使用自定义基础函数作为底层近似器创建确定性参与者。第一个输入参数是一个包含两个元素的单元格,其中第一个元素包含句柄basisFcn到自定义基础函数,第二个元素包含初始权重矩阵W0..该语法设置ObservationInfoActionInfo的属性演员分别对应于输入观察税收ActionInfo.

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

输入参数

全部展开

深度神经网络用作行动者内部的底层近似器,指定为以下其中之一:

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

网络输出层必须具有与中定义的信号相同的数据类型和维数ActionInfo.它的名称必须是actName

RLDETerminyActorRepresentation对象支持递归深度万博1manbetx神经网络。

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

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

例子:{' my_obs '}

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

例子:{' my_act '}

自定义基函数,指定为用户定义的MATLAB函数的函数句柄。用户定义的函数可以是匿名函数,也可以是MATLAB路径上的函数。基于当前观测的动作,也就是参与者的输出,就是向量a = w'* b,在那里W权值矩阵是否包含可学习参数和B是自定义基函数返回的列向量。

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

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

在这里obs1obsN观测是否与中定义的信号具有相同的顺序、相同的数据类型和维度观察税收

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

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

特性

全部展开

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

观察规范,指定为rlfinitesetspec.要么rlNumericSpec对象或此类对象的数组。这些对象定义了一些属性,比如维度、数据类型和观察信号的名称。

RLDETerminyActorRepresentation设置ObservationInfo的属性演员输入观察税收

您可以提取ObservationInfo从现有环境或代理使用getobservationInfo..您还可以手工构造规范。

连续动作空间的动作规范,指定为rlNumericSpec对象定义属性,如维度、数据类型和动作信号的名称。确定性的行动者表示不支持离散的动作。万博1manbetx

RLDETerminyActorRepresentation设置ActionInfo的属性演员输入观察税收

您可以提取ActionInfo从现有环境或代理使用getActionInfo.您也可以手工构造规范。

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

对象的功能

rlddpgagent. 深度确定性政策梯度加固学习代理
rltd3agent. 双延迟深度确定性策略梯度强化学习主体
getAction 根据环境观察,从行为者或行动者的表现中获得行动

例子

全部折叠

创建一个观察规范对象(或者使用getobservationInfo.从环境中提取规范对象)。对于本例,将观测空间定义为连续的四维空间,这样一个观测就是包含四个双精度的列向量。

obsInfo = rlNumericSpec([4 1]);

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

actInfo = rlNumericSpec([2 1]);

为演员创建一个深神经网络近似器。网络的输入(此处调用蒙布斯)必须接受四个元素的向量(观测向量刚刚定义obsInfo),其输出必须是动作(这里称为myact),为二元素向量,定义为Actinfo.

net = [featureinputlayer(4,“归一化”“没有”“名字”'myobs')全连接列(2,“名字”“myact”));

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

演员= rlDeterministicActorRepresentation(净、obsInfo actInfo,......'观察',{'myobs'},“行动”,{“myact”})
actor = rlDeterministicActorRepresentation with properties:rlNumericSpec . ObservationInfo: [1x1 rl.util.]rlNumericSpec] Options: [1x1 rl.option.rlRepresentationOptions]

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

行动= getAction(演员,{兰德(4,1)});行为{1}
ans =2x1单列向量-0.5054 - 1.5390

现在可以使用actor创建合适的代理(例如rlacagent.rlpgagent., 要么rlddpgagent.代理人)。

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

Obsinfo = rlnumericspec([3 1]);

确定性行动者不支持离散的动作空间。万博1manbetx因此,创建一个持续的行动空间说明对象(或替代使用getActionInfo从环境中提取规范对象)。对于本例,将操作空间定义为连续的二维空间,因此单个操作是包含2个double的列向量。

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);

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

演员= rlDeterministicActorRepresentation ({myBasisFcn, W0}, obsInfo actInfo)
actor = rlDeterministicActorRepresentation with properties:rlNumericSpec . ObservationInfo: [1x1 rl.util.]rlNumericSpec] Options: [1x1 rl.option.rlRepresentationOptions]

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

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

网= [sequenceInputLayer numObs,“归一化”“没有”“名字”'状态')全连接层(10,“名字”'fc1') reluLayer (“名字”“relu1”) lstmLayer (8,“OutputMode”“序列”“名字”“ActorLSTM”) fullyConnectedLayer (20“名字”“CriticStateFC2”) fullyConnectedLayer (numAct“名字”“行动”) tanhLayer (“名字”'tanh1'));

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

ACTOROPTIONS = RLREPRESENTATIONOPTIONS(“LearnRate”,1e-3,“GradientThreshold”1);演员= rlDeterministicActorRepresentation(净、obsinfo actinfo,......'观察',{'状态'},“行动”,{'tanh1'});
介绍了R2020a