主要内容

rlStochasticActorRepresentation

为强化学习(不推荐)随机演员表示代理

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

描述

对象实现一个函数的估计值作为一个随机的演员在强化学习代理。随机演员需要观测数据作为输入,并返回一个随机的行动,从而实现随机政策与特定的概率分布。当你创建一个rlStochasticActorRepresentation对象,使用它来创建一个合适的代理,如一个rlACAgentrlPGAgent代理。创建表示更多的信息,请参阅创建政策和价值功能

创建

描述

离散行动空间随机的演员

例子

discActor= rlStochasticActorRepresentation (,observationInfo,discActionInfo“观察”,obsName)创建一个随机的演员与一个离散的行动空间,使用深层神经网络作为函数的估计值。在这里,输出层必须尽可能多的元素数量的离散动作。这个语法设置ObservationInfoActionInfo的属性discActor的输入observationInfodiscActionInfo,分别。obsName必须包含的输入层的名字吗

例子

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

discActor= rlStochasticActorRepresentation (___,选项)创建离散行为空间,随机的演员discActor使用额外的选项集选项,这是一个rlRepresentationOptions对象。这个语法设置选项的属性discActor选项输入参数。您可以使用该语法与任何以前的输入参数组合。

持续的行动空间高斯的演员

例子

接触器= rlStochasticActorRepresentation (,observationInfo,contActionInfo“观察”,obsName)创建一个高斯随机演员与一个连续动作使用深层神经网络空间作为函数的估计值。在这里,输出层必须有两倍的元素的数量连续行动空间的维度。这个语法设置ObservationInfoActionInfo的属性接触器的输入observationInfocontActionInfo分别。obsName必须包含的输入层的名字吗

请注意

接触器不执行操作规范约束,因此,当使用这个演员,你必须执行行动空间中约束环境。

接触器= rlStochasticActorRepresentation (___,选项)创建持续的行动空间,高斯的演员接触器使用额外的选项选择集,这是一个rlRepresentationOptions对象。这个语法设置选项的属性接触器选项输入参数。您可以使用该语法与任何以前的输入参数组合。

输入参数

全部展开

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

一个离散的行动空间随机演员,必须观察作为输入和一个输出层有尽可能多的元素数量的离散动作。每个元素代表的概率(必须是负的)执行相应的动作。

连续行动空间随机演员,必须观察作为输入和一个输出层有两倍的元素的数量连续动作空间的维度。输出向量的元素代表所有的平均值紧随其后的是标准差(必须是负的)维的高斯分布的行动空间。

请注意

标准差的事实必须是负的,意味着必须属于输出值范围意味着网络必须有两个独立的路径。第一个路径必须产生一个估计的平均值,所以任何输出非线性必须按比例缩小的,这样它的输出所需的范围。第二个路径必须产生一个标准差的估计,因此您必须使用softplus或执行nonnegativity ReLU层。

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

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

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

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

例子:{' my_obs '}

自定义的基函数,指定为一个函数处理一个用户定义的MATLAB函数。用户定义函数可以是一个匿名函数或一个函数在MATLAB的道路。演员的输出向量一个= softmax (W * B),在那里W是一个矩阵和重量B是返回的列向量自定义基函数。的每个元素一个代表的概率采取相应的行动。可学的参数的演员的元素W

当创建一个随机的演员表示,你的基函数必须有以下签名。

B = myBasisFunction (obsN obs1, obs2,…)

在这里obs1obsN以相同的顺序观察和相同的数据类型和维度中定义的信号吗observationInfo

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

基函数权重的初始值,W,指定为一个矩阵。它必须尽可能多的行输出的基函数的长度,和尽可能多的列的数量可能的行动。

属性

全部展开

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

请注意

TRPO代理仅使用Options.UseDevice表示选项而忽视其他培训和学习速率的选择。

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

rlStochasticActorRepresentation设置ObservationInfo的属性接触器discActor输入observationInfo

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

动作规范,指定为一个rlFiniteSetSpecrlNumericSpec对象。这些对象定义属性,如尺寸,数据类型和名称的行动信号。

一个离散的行动空间演员,rlStochasticActorRepresentationActionInfo输入discActionInfo,它必须是一个rlFiniteSetSpec对象。

连续行动空间演员,rlStochasticActorRepresentationActionInfo输入contActionInfo,它必须是一个rlNumericSpec对象。

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

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

对象的功能

rlACAgent Actor-critic强化学习代理
rlPGAgent 政策梯度强化学习代理
rlPPOAgent 近端政策优化强化学习代理
rlSACAgent 软actor-critic强化学习代理
getAction 从代理或演员获得行动环境观测

例子

全部折叠

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

obsInfo = rlNumericSpec (1 [4]);

创建一个操作规范对象(或者使用getActionInfo从环境中提取规范对象)。在这个例子中,定义了三个值组成的行动空间,-10,0,10

actInfo = rlFiniteSetSpec ([-10 0 10]);

创建一个深层神经网络近似者的演员。网络的输入(这里称为状态)必须接受一个研制出向量(观测向量定义的obsInfo),它的输出(在这里叫actionProb)必须三元素向量。输出向量的每个元素都必须在0和1之间,因为它代表执行每一个的概率(所定义的三种可能的行动actInfo)。使用softmax作为输出层执行这个要求。

网= [featureInputLayer (4“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (3“名字”,“俱乐部”)softmaxLayer (“名字”,“actionProb”));

创建的演员rlStochasticActorRepresentation使用网络,观察和行动规范对象,以及网络输入层的名称。

演员= rlStochasticActorRepresentation(净、obsInfo actInfo,“观察”,“状态”)
演员= rlStochasticActorRepresentation属性:ActionInfo: [1 x1 rl.util。rlFiniteSetSpec] ObservationInfo: [1 x1 rl.util。rlNumericSpec] Options: [1x1 rl.option.rlRepresentationOptions]

验证你的演员,使用getAction返回一个随机行为的观测向量[1 1 1 1]使用当前网络权重。

行动= getAction(演员,{[1 1 1 1]});行为{1}
ans = 10

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

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

obsInfo = rlNumericSpec (1 [6]);

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

2 actInfo = rlNumericSpec ([1],“LowerLimit”,-10,“UpperLimit”10);

创建一个深层神经网络近似者的演员。观察输入(这里称为myobs)必须接受一个六维向量(观测向量定义的obsInfo)。输出(这里称为myact)必须是一个四维向量(维度定义的数量的两倍actInfo)。输出向量代表的元素,在序列,所有手段和每一个行动的标准差。

标准偏差的事实必须是非负数而平均值必须属于输出范围意味着网络必须有两个独立的路径。第一个路径是平均值,任何输出非线性必须按比例缩小的,这样它可以产生价值观的输出范围。第二个路径是标准差,您可以使用一个执行non-negativity softplus或relu层。

%的输入路径层(6 1输入和一个2×1输出)inPath = [imageInputLayer (6 1 1),“归一化”,“没有”,“名字”,“myobs”)fullyConnectedLayer (2“名字”,“infc”));%路径层平均值%(2×1输入和2×1输出)%使用scalingLayer规模范围meanPath = [tanhLayer (“名字”,的双曲正切);%范围:(1)scalingLayer (“名字”,“规模”,“规模”actInfo.UpperLimit)];%范围:(-10年,10)%路径层标准差%(2×1的输入和输出)%使用softplus层非负sdevPath = softplusLayer (“名字”,“splus”);% conctatenate两个输入(以及尺寸# 3)%,形成一个由1(4)输出层支出= concatenationLayer (3 2“名字”,“mean&sdev”);%添加层网络对象网= layerGraph (inPath);网= addLayers(净,meanPath);网= addLayers(净,sdevPath);网= addLayers(净支出);%连接层:中值路径必须输出%被连接到第一个输入concatenationLayer%连接inPath meanPath输入的输出网= connectLayers(网络,“infc”,“双曲正切/”);%连接inPath sdevPath输入的输出网= connectLayers(网络,“infc”,“splus /”);%连接meanPath gaussPars输入# 1的输出网= connectLayers(网络,“规模”,“mean&sdev /三机一体”);%连接sdevPath gaussPars输入# 2的输出网= connectLayers(网络,“splus”,“mean&sdev / in2”);

设置一些演员培训选项。

actorOpts = rlRepresentationOptions (“LearnRate”,8 e - 3,“GradientThreshold”1);

创建的演员rlStochasticActorRepresentation使用网络,观察和行动规范对象,网络输入层的名称并选择对象。

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

检查你的演员,使用getAction返回一个随机行为的观测向量的(1)使用当前网络权重。

行动= getAction(演员,{1 (6,1)});行为{1}
ans =2 x1单一列向量-0.0763 - 9.6860

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

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

2 obsInfo = rlNumericSpec ([1]);

基于自定义随机演员基函数不支持连续的行动空间。金宝app因此,创建一个离散行动空间规范对象(或者使用getActionInfo从环境中提取规范对象离散行动空间)。在这个例子中,定义了操作空间有限集合组成的3个可能的值(命名7,5,3在这种情况下)。

actInfo = rlFiniteSetSpec ([7 5 3]);

创建一个定制的基函数。每个元素是一个函数定义的观察obsInfo

myBasisFcn = @ (myobs) [myobs (2) ^ 2;myobs (1);exp (myobs (2));abs (myobs (1)))
myBasisFcn =function_handle与价值:@ (myobs) [myobs (2) ^ 2; myobs (1); exp (myobs (2)); abs (myobs (1)))

演员的输出是行动,在中定义的actInfo,相应的元素softmax (W * myBasisFcn (myobs))最高的价值。W是一个权重矩阵,包含可学的参数,它必须尽可能多的行输出的基函数的长度,和尽可能多的列的数量可能的行动。

定义一个初始参数矩阵。

W0 =兰德(4,3);

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

演员= rlStochasticActorRepresentation ({myBasisFcn, W0}, obsInfo actInfo)
演员= rlStochasticActorRepresentation属性:ActionInfo: [1 x1 rl.util。rlFiniteSetSpec] ObservationInfo: [1 x1 rl.util。rlNumericSpec] Options: [1x1 rl.option.rlRepresentationOptions]

检查你的演员使用getAction函数返回的三种可能的行动,根据给定的随机观察和对当前参数矩阵。

v = getAction(演员,{兰德(2,1)})
v =1 x1单元阵列{[3]}

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

对于这个示例,您将创建一个随机的演员与一个离散的行动空间使用递归神经网络。您还可以使用递归神经网络的连续随机演员使用相同的方法。

创建一个环境和获得观察和操作信息。

env = rlPredefinedEnv (“CartPole-Discrete”);obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);numObs = obsInfo.Dimension (1);numDiscreteAct =元素个数(actInfo.Elements);

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

actorNetwork = [sequenceInputLayer numObs,“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (8,“名字”,“俱乐部”)reluLayer (“名字”,“relu”)lstmLayer (8,“OutputMode”,“序列”,“名字”,“lstm”)fullyConnectedLayer (numDiscreteAct“名字”,“输出”)softmaxLayer (“名字”,“actionProb”));

创建一个随机的演员表示网络。

actorOptions = rlRepresentationOptions (“LearnRate”1 e - 3,“GradientThreshold”1);演员= rlStochasticActorRepresentation (actorNetwork obsInfo actInfo,“观察”,“状态”,actorOptions);

版本历史

介绍了R2020a

全部展开

不推荐在R2022a开始