主要内容

rlQValueRepresentation

(不推荐)核反应能量函数强化学习代理评论家表示

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

描述

对象实现了核反应能量函数的估计值作为一个评论家在强化学习代理。核反应能量函数是一个函数,将一对observation-action映射到一个标量值代表预期的长期回报,代理总预计将从给定的观察和积累,当它开始执行给定的操作。核反应能量函数批评家因此需要观察和行动作为输入。当你创建一个rlQValueRepresentation评论家,使用它来创建一个代理依靠核反应能量函数评论家,如一个rlQAgent,rlDQNAgent,rlSARSAAgent,rlDDPGAgent,或rlTD3Agent。创建表示更多的信息,请参阅创建政策和价值功能

创建

描述

标量输出核反应能量评论家

例子

评论家= rlQValueRepresentation (,observationInfo,actionInfo“观察”,obsName“行动”,actName)创建了核反应能量函数评论家是深层神经网络用作接近者,必须观察和行动作为输入,和一个标量输出。这个语法设置ObservationInfoActionInfo的属性评论家分别输入observationInfoactionInfo,包含观察和操作规范。obsName必须包含的输入层的名字吗与观察相关规范。动作名称actName必须输入层的名字吗相关联的行动规范。

例子

评论家= rlQValueRepresentation (选项卡,observationInfo,actionInfo)创建了核反应能量函数为基础评论家离散行动和观察空间从核反应能量表选项卡选项卡是一个rlTable对象包含一个表与尽可能多的行作为观察和尽可能多的列的操作。这个语法设置ObservationInfoActionInfo的属性评论家分别输入observationInfoactionInfo,必须rlFiniteSetSpec对象包含离散观测规范和行动空间,分别。

例子

评论家= rlQValueRepresentation ({basisFcn,W0},observationInfo,actionInfo)创建一个核反应能量函数评论家使用一个自定义的基函数作为潜在的估计值。第一个输入参数是一个两个元素细胞中第一个元素包含了处理basisFcn一个自定义的基函数,第二个元素包含初始权向量W0。在这里,基函数作为输入,必须观察和行动W0必须是一个列向量。这个语法设置ObservationInfoActionInfo的属性评论家分别输入observationInfoactionInfo

多输出离散行动空间核反应能量评论家

例子

评论家= rlQValueRepresentation (,observationInfo,actionInfo“观察”,obsName)创建多输出核反应能量函数评论家一个离散的行动空间深层神经网络作为近似者,而且必须只有观察作为输入和一个输出层有尽可能多的元素数量的离散动作。这个语法设置ObservationInfoActionInfo的属性评论家分别输入observationInfoactionInfo,包含观察和操作规范。在这里,actionInfo必须是一个rlFiniteSetSpec对象包含的离散的行动空间。观察的名字obsName必须输入层的名称吗

例子

评论家= rlQValueRepresentation ({basisFcn,W0},observationInfo,actionInfo)创建多输出核反应能量函数评论家一个离散的行动空间使用一个自定义的基函数作为潜在的估计值。第一个输入参数是一个两个元素细胞中第一个元素包含了处理basisFcn一个自定义的基函数,第二个元素包含初始权重矩阵W0。这里的基函数必须只有观测数据作为输入,和W0必须有尽可能多的列的数量可能的行动。这个语法设置ObservationInfoActionInfo的属性评论家分别输入observationInfoactionInfo

选项

评论家= rlQValueRepresentation (___,选项)创建基于价值函数评论家使用额外的选项集选项,这是一个rlRepresentationOptions对象。这个语法设置选项的属性评论家选项输入参数。您可以使用该语法与任何以前的输入参数组合。

输入参数

全部展开

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

单输出批评,必须有观察和行动作为输入,和一个标量输出,代表预期的长期累积奖励当代理从给定的观察和给定的行动。为多输出离散行动空间批评,必须只有观察输入和一个输出层有尽可能多的元素数量的离散动作。每个输出元素代表预期的长期累积奖励当代理开始从给定的观察和采取相应的措施。可学的参数的评论家是深层神经网络的权重。

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

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

rlQValueRepresentation对象支持周期性深金宝app层神经网络多输出离散行动空间批评。

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

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

例子:{' my_obs '}

动作名称,指定为一个单元素单元阵列,其中包含一个字符串或字符向量。它必须行动的名称输入层

例子:{' my_act '}

核反应能量表,指定为一个rlTable对象数组包含尽可能多的行可能的观察和尽可能多的列的操作。元素(年代,一个)是预期的长期累积奖励采取行动一个从观察到的状态年代。这个数组的元素都是可学的参数的评论家。

自定义的基函数,指定为一个函数处理一个用户定义的MATLAB函数。用户定义函数可以是一个匿名函数或一个函数在MATLAB的道路。评论家的输出c = W ' * B,在那里W是一个权向量或矩阵包含可学的参数,然后呢B是返回的列向量自定义基函数。

对于一个核反应能量评论家,c是一个标量代表预期的长期累积奖励当代理从给定的观察和给定的行动。在这种情况下,你的基函数必须有以下签名。

B = myBasisFunction (obs1, obs2,…, obsN act)

与一个离散输出核反应能量批评行动空间,c是一个向量的每个元素是预期的长期累积奖励当代理开始从给定的观察和采取对应的行动被认为是元素的位置。在这种情况下,你的基函数必须有以下签名。

B = myBasisFunction (obsN obs1, obs2,…)

在这里,obs1obsN以相同的顺序观察和相同的数据类型和维度中定义的信号吗observationInfo行为有相同的数据类型和维度的行为规范actionInfo

例子:@ (obs1 obs2, act)[行为(2)* obs1 (1) ^ 2;abs (obs2(5) +法案(1)))

基函数权重的初始值,W。对于一个核反应能量评论家,W是一个列向量具有相同的长度矢量基函数返回的。与一个离散输出核反应能量批评行动空间,W是一个矩阵必须有尽可能多的行基函数输出的长度,和尽可能多的列的数量可能的行动。

属性

全部展开

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

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

rlQValueRepresentation设置ObservationInfo的属性评论家输入observationInfo

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

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

rlQValueRepresentation设置ActionInfo的属性评论家输入actionInfo

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

对象的功能

rlDDPGAgent 深决定性策略梯度(DDPG)强化学习代理
rlTD3Agent Twin-delayed深决定性策略梯度强化学习代理
rlDQNAgent 深Q-network (DQN)强化学习代理
rlQAgent q学习的强化学习代理
rlSARSAAgent 撒尔沙强化学习代理
rlSACAgent 软actor-critic强化学习代理
getValue 获得估计价值从评论家给定环境的观察和行动
getMaxQValue 获得最大估计价值在所有可能的行动从核反应能量函数评论家与离散的行动空间,鉴于环境观测

例子

全部折叠

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

obsInfo = rlNumericSpec (1 [4]);

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

2 actInfo = rlNumericSpec ([1]);

创建一个深层神经网络近似核反应能量函数。网络必须有两个输入,一个用于观察和一个行动。观察输入(这里称为myobs)必须接受一个研制出向量(观测向量定义的obsInfo)。输入(这里称为行动myact双元素向量(行动)必须接受一个向量定义的actInfo)。网络的输出必须是一个标量,代表预期的长期累积奖励当代理从给定的观察和给定的行动。

%观察路径层obsPath = [featureInputLayer (4“归一化”,“没有”,“名字”,“myobs”)fullyConnectedLayer (1,“名字”,“obsout”));%的行动路径层actPath = [featureInputLayer (2,“归一化”,“没有”,“名字”,“myact”)fullyConnectedLayer (1,“名字”,“actout”));%常见路径输出层comPath = [additionLayer (2,“名字”,“添加”)fullyConnectedLayer (1,“名字”,“输出”));%添加层网络对象网= addLayers (layerGraph (obsPath) actPath);网= addLayers(净,comPath);%连接层网= connectLayers(网络,“obsout”,“添加/三机一体”);网= connectLayers(网络,“actout”,“添加/ in2”);

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

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

检查你的评论家,使用getValue函数返回一个随机的值观察和行动,使用当前的网络权值。

v = getValue(评论家,{兰德(4,1)},{兰德(2,1)})
v =0.1102

您现在可以使用评论家(以及一个演员)创建一个代理依靠核反应能量函数(比如一个批评者rlQAgent,rlDQNAgent,rlSARSAAgent,或rlDDPGAgent代理)。

这个例子展示了如何创建一个多输出核反应能量函数评论家离散使用深层神经网络近似者行动空间。

这个评论家只需要观察作为输入,并产生作为输出向量和尽可能多的元素可能的行动。每个元素代表预期的长期累积奖励当代理开始从给定的观察和采取的措施对应元素的位置输出向量。

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

obsInfo = rlNumericSpec (1 [4]);

创建一个有限集行动规范对象(或者使用getActionInfo从环境中提取规范对象离散行动空间)。在这个例子中,定义了操作空间有限集合组成的三种可能的值(命名7,5,3在这种情况下)。

actInfo = rlFiniteSetSpec ([7 5 3]);

创建一个深层神经网络近似者近似核反应能量函数内的评论家。网络的输入(这里称为myobs)必须接受一个研制出向量,定义的obsInfo。输出必须是一个单一的输出层有尽可能多的元素数量离散的动作(三个在这种情况下,所定义的actInfo)。

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

使用网络,创建了评论家观测规范对象,和网络输入层的名称。

评论家= rlQValueRepresentation(净、obsInfo actInfo,“观察”,{“myobs”})
评论家= rlQValueRepresentation属性:ActionInfo: [1 x1 rl.util。rlFiniteSetSpec] ObservationInfo: [1 x1 rl.util。rlNumericSpec] Options: [1x1 rl.option.rlRepresentationOptions]

检查你的评论家,使用getValue函数返回一个随机的值观察,使用当前的网络权值。有一个值的三种可能的行动。

v = getValue(评论家,{兰德(4,1)})
v =3 x1单一列向量0.7232 0.8177 -0.2212

您现在可以使用评论家(连同演员)来创建一个离散的行动空间代理依靠核反应能量函数(比如一个批评者rlQAgent,rlDQNAgent,或rlSARSAAgent代理)。

创建一个有限集观测规范对象(或者使用getObservationInfo从环境中提取规范对象与一个离散的观测空间)。对于这个示例定义观测空间的有限集4个可能的值。

obsInfo = rlFiniteSetSpec ([7 5 3 1]);

创建一个有限集行动规范对象(或者使用getActionInfo从环境中提取规范对象离散行动空间)。对于这个示例定义行为空间的有限集2可能值。

actInfo = rlFiniteSetSpec (8 [4]);

创建一个表在评论家近似函数的值。rlTable创建一个表值对象的观察和操作规范对象。

qTable = rlTable (obsInfo actInfo);

表存储一个值(代表预期的长期累积奖励)为每一个可能的observation-action一对。每一行对应一个观察和每一列对应一个动作。您可以访问表使用财产的虚表对象。每个元素的初始值是零。

qTable.Table
ans =4×20 0 0 0 0 0 0 0

您可以初始化表的任何值,在这种情况下,包含整数的数组1通过8

qTable.Table =重塑(1:8 4 2)
qTable = rlTable属性:表:[4 x2双)

使用表格创建评论家以及观察和行动规范的对象。

评论家= rlQValueRepresentation (qTable obsInfo actInfo)
评论家= rlQValueRepresentation属性:ActionInfo: [1 x1 rl.util。rlFiniteSetSpec] ObservationInfo: [1 x1 rl.util。rlFiniteSetSpec] Options: [1x1 rl.option.rlRepresentationOptions]

检查你的评论家,使用getValue函数返回一个给定的观察和行动的价值,使用当前表条目。

v = getValue(评论家,{5},{8})
v = 6

您现在可以使用评论家(以及一个演员)来创建一个离散的行动空间代理依靠核反应能量函数(比如一个批评者rlQAgent,rlDQNAgent,或rlSARSAAgent代理)。

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

obsInfo = rlNumericSpec (1 [3]);

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

2 actInfo = rlNumericSpec ([1]);

创建一个定制的基函数近似函数值在评论家。自定义基函数必须返回一个列向量。每个向量元素必须分别观察和操作定义的函数obsInfoactInfo

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

评论家的输出是标量W * myBasisFcn (myobs myact),在那里W是一个必须有相同的重量列向量的大小自定义基函数输出。这个输出预期的长期累积奖励当代理从给定的观察和采取最好的措施。W的元素是可学的参数。

定义一个初始参数向量。

W0 = (1, 4, 4; 2);

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

评论家= rlQValueRepresentation ({myBasisFcn, W0},obsInfo actInfo)
评论家= rlQValueRepresentation属性:ActionInfo:(1×1 rl.util。rlNumericSpec] ObservationInfo:(1×1 rl.util。rlNumericSpec] Options: [1×1 rl.option.rlRepresentationOptions]

检查你的评论家,使用getValue函数返回给定observation-action对的价值,使用当前的参数向量。

v = getValue(评论家,{(1 2 3)},{[4 - 5]})
252.3926 v = 1×1 dlarray

您现在可以使用评论家(以及一个演员)创建一个代理依靠核反应能量函数(比如一个批评者rlQAgent,rlDQNAgent,rlSARSAAgent,或rlDDPGAgent代理)。

这个例子展示了如何创建一个多输出核反应能量函数评论家离散行动空间使用自定义基函数估计值。

这个评论家只需要观察作为输入,并产生作为输出向量和尽可能多的元素可能的行动。每个元素代表预期的长期累积奖励当代理开始从给定的观察和采取的措施对应元素的位置输出向量。

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

2 obsInfo = rlNumericSpec ([1]);

创建一个有限集行动规范对象(或者使用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)))

评论家的输出向量c= W ' * myBasisFcn (myobs),在那里W是一个权重矩阵必须有尽可能多的行输出的基函数的长度,和尽可能多的列的数量可能的行动。

的每个元素c是预期的长期累积奖励当代理开始从给定的观察和采取对应的行动被认为是元素的位置。W的元素是可学的参数。

定义一个初始参数矩阵。

W0 =兰德(4,3);

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

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

检查你的评论家,使用getValue函数返回一个随机的值观察,使用当前的参数矩阵。请注意,有一个值的三种可能的行动。

v = getValue(评论家,{兰德(2,1)})
v = 3 x1 dlarray 2.1395 1.2183 2.3342

您现在可以使用评论家(连同演员)来创建一个离散的行动空间代理依靠核反应能量函数(比如一个批评者rlQAgent,rlDQNAgent,或rlSARSAAgent代理)。

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

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

为你创建一个经常性深层神经网络评论家。创建一个递归神经网络,使用sequenceInputLayer作为输入层,包括至少一个lstmLayer

创建一个递归神经网络的多输出核反应能量函数表示。

criticNetwork = [sequenceInputLayer numObs,“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (50,“名字”,“CriticStateFC1”)reluLayer (“名字”,“CriticRelu1”)lstmLayer (20“OutputMode”,“序列”,“名字”,“CriticLSTM”);fullyConnectedLayer (20,“名字”,“CriticStateFC2”)reluLayer (“名字”,“CriticRelu2”)fullyConnectedLayer (numDiscreteAct“名字”,“输出”));

创建一个使用递归神经网络表示对你的批评。

criticOptions = rlRepresentationOptions (“LearnRate”1 e - 3,“GradientThreshold”1);评论家= rlQValueRepresentation (criticNetwork,obsInfo actInfo,“观察”,“状态”,criticOptions);

版本历史

介绍了R2020a

全部展开