主要内容

rlDeterministicActorRepresentation

(不推荐)强化学习代理确定的演员表示

自从R2020a

rlDeterministicActorRepresentation不推荐。使用rlContinuousDeterministicActor代替。有关更多信息,请参见rlDeterministicActorRepresentation不推荐

描述

对象实现一个函数的估计值作为一个确定的演员在强化学习的代理连续行动的空间。确定的演员需要观察作为输入,并返回作为输出最大化预期的长期累积奖励的行为,从而实现一个确定的政策。当你创建一个rlDeterministicActorRepresentation对象,使用它来创建一个合适的代理,如一个rlDDPGAgent代理。创建表示更多的信息,请参阅创建政策和价值功能

创建

描述

例子

演员= rlDeterministicActorRepresentation (,observationInfo,actionInfo“观察”,obsName“行动”,actName)创建一个使用深层神经网络确定的演员作为估计值。这个语法设置ObservationInfoActionInfo的属性演员的输入observationInfoactionInfo,分别包含为观察和行为规范。actionInfo必须指定一个持续的行动空间,不支持离散的行动空间。金宝appobsName必须包含的输入层的名字吗与观察相关规范。动作名称actName必须的输出层的名字吗相关的操作规范。

例子

演员= rlDeterministicActorRepresentation ({basisFcn,W0},observationInfo,actionInfo)创建一个确定的演员使用一个自定义的基函数作为基本接近者。第一个输入参数是一个两个元素细胞中第一个元素包含了处理basisFcn一个自定义的基函数,第二个元素包含初始权重矩阵W0。这个语法设置ObservationInfoActionInfo的属性演员分别输入observationInfoactionInfo

演员= rlDeterministicActorRepresentation (___,选项)创建一个确定的演员使用附加选项集选项,这是一个rlRepresentationOptions对象。这个语法设置选项的属性演员选项输入参数。您可以使用该语法与任何以前的输入参数组合。

输入参数

全部展开

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

网络的输入层必须在相同的顺序和相同的数据类型和维度中定义的信号ObservationInfo。同时,这些输入层的名称必须匹配观察名称中列出obsName

网络输出层必须具有相同的数据类型和维度中定义的信号ActionInfo。它的名字必须在指定的操作名称actName

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

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

观察名称指定为一个细胞或字符的字符串数组向量。观察名称必须输入层的名称

例子:{' my_obs '}

动作名称,指定为一个单元素单元阵列,其中包含一个特征向量。它必须是输出层的名称

例子:{' my_act '}

自定义的基函数,指定为一个函数处理一个用户定义的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,指定为一个矩阵有尽可能多的行返回的矢量基函数的长度和尽可能多的列行动空间的维数。

属性

全部展开

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

观测规范,指定为一个rlFiniteSetSpecrlNumericSpec对象或类对象数组。这些对象定义属性,如尺寸,数据类型和名称的观察信号。

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

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

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

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

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

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

对象的功能

rlDDPGAgent 深决定性策略梯度(DDPG)强化学习代理
rlTD3Agent Twin-delayed深确定性(TD3)政策梯度强化学习代理
getAction 从代理,获得动作演员,或政策对象环境的观察

例子

全部折叠

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

obsInfo = rlNumericSpec (1 [4]);

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

2 actInfo = rlNumericSpec ([1]);

创建一个深层神经网络近似者的演员。网络的输入(这里称为myobs)必须接受一个研制出向量(观测向量定义的obsInfo),其输出(这里称为必须行动myact),是一个双元素向量,定义的actInfo

网= [featureInputLayer (4“归一化”,“没有”,“名字”,“myobs”)fullyConnectedLayer (2“名字”,“myact”));

创建的评论家rlQValueRepresentation使用网络,观察和行动规范对象,以及网络的名称输入和输出层。

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

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

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

您现在可以使用演员创建一个合适的代理(比如一个rlACAgent,rlPGAgent,或rlDDPGAgent代理)。

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

obsInfo = rlNumericSpec (1 [3]);

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

2 actInfo = rlNumericSpec ([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)
演员= rlDeterministicActorRepresentation属性:ActionInfo: [1 x1 rl.util。rlNumericSpec] ObservationInfo: [1 x1 rl.util。rlNumericSpec] Options: [1x1 rl.option.rlRepresentationOptions]

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

a = getAction(演员,{(1 2 3)});一个{1}
ans = 2 x1 dlarray 2.0595 - 2.3788

现在可以使用演员(以及一个评论家)来创建一个合适的连续行动空间代理。

创建的观察和操作信息。您还可以从一个环境获得这些规范。

obsinfo = rlNumericSpec (1 [4]);2 actinfo = rlNumericSpec ([1]);numObs = obsinfo.Dimension (1);numAct = actinfo.Dimension (1);

创建一个周期性的深层神经网络的演员。创建一个递归神经网络,使用sequenceInputLayer作为输入层,包括至少一个lstmLayer

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

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

actorOptions = rlRepresentationOptions (“LearnRate”1 e - 3,“GradientThreshold”1);演员= rlDeterministicActorRepresentation(净、obsinfo actinfo,“观察”,{“状态”},“行动”,{“tanh1”});

版本历史

介绍了R2020a

全部展开