强化学习策略是一种映射,它根据环境中的观察结果选择代理采取的操作。在培训期间,代理调整其策略表示的参数,以最大化预期的累积长期回报。
强化学习代理分别使用称为行动者表示和批评表示的函数近似器来估计策略和值函数。参与者代表基于当前观察选择最佳行动的策略。评论家代表了评估当前政策的预期累积长期回报的价值函数。
在创建代理之前,必须使用深度神经网络、线性基函数或查找表创建所需的参与者和批评者表示。您使用的函数近似器类型取决于您的应用程序。
有关代理的详细信息,请参阅强化学习代理.
Reinforcement Learning Toolbox™软件支持以下类型的表示:金宝app
v(s|θv)-根据给定观察结果估计预期累积长期回报的批评者s.您可以使用rlValueRepresentation
.
Q(s,A.|θQ)-根据给定观察结果估计所有可能离散行动的预期累积长期回报的批评者s.您可以使用rlQValueRepresentation
.
Q(s|θQ) -多输出批评者,估计所有可能的离散行动的预期累积长期回报A.我鉴于观察s.您可以使用rlQValueRepresentation
.
μ(s|θμ) -根据给定的观察选择动作的演员s. 您可以使用以下任一方法创建这些参与者:rlDeterministicActorRepresentation
或rlStochasticActorRepresentation
.
每个表示都使用一个具有相应参数集的函数逼近器(θv,θQ,θμ),在学习过程中计算。
对于离散观察和离散操作数量有限的系统,可以在查找表中存储值函数。对于有许多离散的观测和动作的系统,以及连续的观测和动作空间,存储观测和动作是不切实际的。对于这样的系统,您可以使用深度神经网络或自定义(参数中的线性)基函数来表示您的参与者和批评者。
下表总结了使用Reinforcement Learning Toolbox软件提供的四种表示对象的方法,具体取决于环境的动作和观察空间,以及您想使用的近似器和代理。
表示vs.近似者和代理者
代表 | 金宝app支撑逼近器 | 观测空间 | 动作空间 | 金宝app支持代理 |
---|---|---|---|---|
价值功能批评家,五(S)你可以使用 |
表格 | 离散 | 不适用 | PG, AC, PPO |
深度神经网络或自定义基函数 | 离散或连续 | 不适用 | PG, AC, PPO | |
Q值函数批评家,问(,)你可以使用 |
表格 | 离散 | 离散 | Q, DQN,撒尔沙 |
深度神经网络或自定义基函数 | 离散或连续 | 离散 | Q, DQN,撒尔沙 | |
深度神经网络或自定义基函数 | 离散或连续 | 连续 | DDPG,TD3 | |
多输出q值函数批评家,问(,)你可以使用 |
深度神经网络或自定义基函数 | 离散或连续 | 离散 | Q, DQN,撒尔沙 |
确定的政策的演员,π(S)你可以使用 |
深度神经网络或自定义基函数 | 离散或连续 | 连续 | DDPG,TD3 |
随机政策参与者,π(S)你可以使用 |
深度神经网络或自定义基函数 | 离散或连续 | 离散 | PG, AC, PPO |
深层神经网络 | 离散或连续 | 连续 | PG、AC、PPO、SAC |
有关代理的详细信息,请参阅强化学习代理.
基于查找表的表示适用于具有数量有限的离散观察和操作。您可以创建两种类型的查找表表示:
值表,用于存储相应观察的奖励
Q-表,存储相应观察行动对的奖励
要创建表表示,首先使用rlTable
然后,使用rlValueRepresentation
或rlQValueRepresentation
对象。要配置表示所使用的学习速率和优化,请使用rlRepresentationOptions
对象。
您可以使用深度神经网络创建actor和critic函数近似器。这样做使用了深度学习工具箱™软件功能。
你的演员和评论家网络的维度必须匹配来自培训环境对象的相应行动和观察规范。获得环境的行动和观察维度环境
,使用getActionInfo
和获取观测信息
功能。然后访问尺寸
规范对象的属性。
actInfo = getActionInfo (env);actDimensions = actInfo.Dimensions;obsInfo = getObservationInfo (env);obsDimensions = obsInfo.Dimensions;
价值函数评论网络(如AC、PG或PPO代理中使用的网络)必须只将观察结果作为输入,并且必须有单个标量输出。对于这些网络,输入层的维数必须与环境观测规范的维数相匹配。有关更多信息,请参见rlValueRepresentation
.
单输出Q值函数批评家的网络(如Q、DQN、SARSA、DDPG、TD3和SAC代理中使用的网络)必须将观测和操作作为输入,并且必须具有单标量输出。对于这些网络,输入层的尺寸必须与观测和行动的环境规范的尺寸相匹配。有关详细信息,请参阅rlQValueRepresentation
.
多输出Q值函数批评家网络(如Q、DQN和SARSA代理中使用的网络)仅将观测值作为输入,并且必须具有一个输出层,其输出大小等于离散动作的数量。对于这些网络,输入层的尺寸必须与环境观测的尺寸相匹配。规格。有关详细信息,请参阅rlQValueRepresentation
.
对于参与者网络,输入层的尺寸必须与环境观测规范的尺寸相匹配。
在具有离散动作空间的参与者中使用的网络(例如PG、AC和PPO代理中的网络)必须具有单个输出层,其输出大小等于可能的离散动作的数量。
具有连续动作空间的确定性参与者(如DDPG和TD3代理中的参与者)中使用的网络必须具有单个输出层,其输出大小与环境动作规范中定义的动作空间的维度相匹配。
在具有连续行动空间的随机行动者(如PG、AC、PPO和SAC代理)中使用的网络必须有一个单一的输出层,输出大小是环境行动规范中定义的行动空间维度的两倍。这些网络必须有两条独立的路径,第一条路径产生平均值(必须缩放到输出范围),第二条路径产生标准差(必须是非负的)。
有关更多信息,请参见rlDeterministicActorRepresentation
和rlStochasticActorRepresentation
.
深层神经网络由一系列相互连接的层组成。下表列出了在强化学习应用中常用的一些深度学习层。有关可用层的完整列表,请参见深度学习层列表.
层 | 描述 |
---|---|
featureInputLayer |
输入特征数据并应用归一化 |
imageInputLayer |
输入矢量和二维图像并应用归一化。 |
sigmoidLayer |
对输入应用一个s型函数,使输出在区间(0,1)内有界。 |
坦莱尔 |
将双曲正切激活层应用于输入。 |
雷卢耶 |
将小于零的任何输入值设置为零。 |
完全连接层 |
将输入向量乘以一个权值矩阵,并添加一个偏置向量。 |
卷积层 |
将滑动卷积滤波器应用于输入。 |
附加层 |
将多个图层的输出添加到一起。 |
连接层 |
沿指定维度连接输入。 |
sequenceInputLayer |
为网络提供输入序列数据。 |
lstmLayer |
对输入应用长短期记忆层。金宝app支持DQN和PPO代理。 |
这个bilstmLayer
和batchNormalizationLayer
强化学习不支持层。金宝app
Reinforcement Learning Toolbox软件提供了以下层,其中不包含可调参数(即在训练期间更改的参数)。
层 | 描述 |
---|---|
scalingLayer |
对输入阵列应用线性比例和偏差。这一层用于缩放和移动非线性层的输出,例如坦莱尔 和乙状结肠层。 |
二次层 |
创建由输入数组元素构造的二次单项式向量。当您需要输出是其输入的二次函数时,此层非常有用,例如LQR控制器。 |
软杀伤 |
实现softplus激活Y=对数(1+e)X),以确保输出总是正的。这是整流线性单元(ReLU)的一个平滑版本。 |
您还可以创建自己的自定义层。有关更多信息,请参见定义自定义深度学习层.
对于强化学习应用程序,您可以通过为每个输入路径(观察或操作)和每个输出路径(估计奖励或操作)连接一系列层来构建深层神经网络。然后使用connectLayers
作用
您还可以使用深层网络设计师例如,请参见使用深度网络设计器创建代理和使用图像观察训练.
创建深度神经网络时,必须为每个输入路径的第一层和输出路径的最后一层指定名称。
以下代码创建并连接以下输入和输出路径:
一个观测输入路径,observationPath
,第一层命名为“观察”
.
操作输入路径,动作路径
,第一层命名为“行动”
.
一个估计值函数输出路径,commonPath
的输出observationPath
和动作路径
作为输入。这条路径的最后一层被命名为“输出”
.
observationPath = [imageInputLayer([4 1 1],]),“归一化”,“没有”,“姓名”,“观察”)完全连接层(24,“姓名”,“CriticObsFC1”)雷卢耶(“姓名”,“CriticRelu1”)完全连接层(24,“姓名”,“CriticObsFC2”)]; actionPath=[imageInputLayer([1],“归一化”,“没有”,“姓名”,“行动”)完全连接层(24,“姓名”,“CriticActFC1”)]; commonPath=[additionLayer(2,“姓名”,“添加”)雷卢耶(“姓名”,“CriticCommonRelu”) fullyConnectedLayer (1,“姓名”,“输出”)]; 临界网络=层图(观测路径);criticNetwork=addLayers(criticNetwork,actionPath);临界网络=添加层(临界网络,公共路径);临界网络=连接层(临界网络,“CriticObsFC2”,“添加/in1”); 临界网络=连接层(临界网络,“CriticActFC1”,“添加/ in2”);
对于所有观察和操作输入路径,必须指定imageInputLayer
作为路径的第一层。
你可以使用情节
作用
绘图(关键网络)
对于PG和AC代理,深度神经网络参与者表示的最终输出层是完全连接层
和softmaxLayer
.指定网络的层时,必须指定完全连接层
您可以选择指定softmaxLayer
.如果省略softmaxLayer
,软件会自动为您添加一个。
为您的深度神经网络表示确定层的数量、类型和大小可能是困难的,并且取决于应用程序。然而,最重要的组件在决定函数近似者的特点是它能够近似最优政策或贴现值函数为您的应用程序,也就是说,层,是否能正确地学习你的观察的特点,行动,和奖励的信号。
在构建你的人际网络时,考虑以下建议。
对于连续的动作空间,用a来绑定动作坦莱尔
接着是缩放层
,如果必要的。
深密网络雷卢耶
层可以相当好地近似许多不同的函数。因此,它们通常是很好的首选。
从你认为可以近似最优策略或价值函数的最小可能网络开始。
当你用代数约束逼近强非线性或系统时,添加更多的层通常比增加每层的输出数量要好。一般来说,近似器表示更复杂函数的能力仅在层的大小上多项式地增长,但随着层的数量呈指数增长。换句话说,更多的层允许逼近更复杂和非线性的合成函数,尽管这通常需要更多的数据和更长的训练时间。具有更少层的网络可能需要指数级的更多单元来成功地近似同一类函数,并且可能无法正确地学习和泛化。
对于on-policy代理(仅从遵循当前策略时收集的经验中学习的代理),例如AC和PG代理,如果网络较大(例如,具有两个隐藏层的网络,每个层有32个节点,其中有几百个参数),则并行培训效果更好。在策略上,并行更新假定每个工作人员更新网络的不同部分,例如当他们探索观察空间的不同区域时。如果网络很小,工作人员更新可能相互关联,使培训不稳定。
要为深层神经网络创建批评家表示,请使用rlValueRepresentation
或rlQValueRepresentation
要为深度神经网络创建参与者表示,请使用rlDeterministicActorRepresentation
或rlStochasticActorRepresentation
对象。要配置表示所使用的学习速率和优化,请使用rlRepresentationOptions
对象。
例如,为评论网络创建一个q值表示对象临界网络
,指定的学习速率为0.0001
.当您创建表示时,将环境动作和观察规范传递给rlQValueRepresentation
对象,并指定观察和操作所连接到的网络层的名称(在本例中“观察”
和“行动”
).
选择= rlRepresentationOptions (“LearnRate”, 0.0001);评论家= rlQValueRepresentation (criticNetwork obsInfo actInfo,...“观察”,{“观察”},“行动”,{“行动”},opt);
当创建深度神经网络并配置表示对象时,考虑使用以下方法作为起点。
从最小的网络和高学习率开始(0.01
)。训练此初始网络,以查看代理是否快速收敛到较差的策略或以随机方式行事。如果出现上述任一问题,请通过在每层上添加更多层或更多输出来重新缩放网络。您的目标是找到一个足够大的网络结构,它不会学习太快,并且在初始培训期后显示出学习迹象(奖励图的改进轨迹)。
一旦您确定了一个良好的网络架构,较低的初始学习率可以让您查看代理是否在正确的轨道上,并帮助您检查您的网络架构是否满足问题。较低的学习率使得调整参数变得容易得多,特别是对于困难的问题。
此外,在配置深度神经网络表示时考虑以下提示。
对DDPG和DQN制剂要有耐心,因为它们可能在早期发作期间一段时间内不会学到任何东西,而且在训练过程的早期,它们的累积奖励通常会出现下降。最终,在最初的几千次发作后,它们会显示出学习的迹象。
对于DDPG和DQN代理,促进代理的探索至关重要。
对于同时拥有演员和评论家网络的代理,将这两种表示的初始学习速率设置为相同的值。对于一些问题,将评论家的学习率设置为高于行为人的学习率可以提高学习效果。
在创建与PPO或DQN代理一起使用的表示时,可以使用递归神经网络。这些网络是深度神经网络sequenceInputLayer
输入层和至少一个具有隐藏状态信息的层,例如lstmLayer
.当环境的状态不能包含在观测向量中时,它们会特别有用。有关更多信息和示例,请参见rlValueRepresentation
,rlQValueRepresentation
,rlDeterministicActorRepresentation
和rlStochasticActorRepresentation
.
自定义(参数中的线性)基函数近似器的形式为f=W'B
,在那里W
是权重数组和B
是必须创建的自定义基函数的列向量输出。线性基函数表示的可学习参数是W
.
对于价值功能评价表示(如AC、PG或PPO代理中使用的),F
是标量值,所以呢W
必须是与长度相同的列向量B
和B
一定是观测的结果。有关更多信息,请参见rlValueRepresentation
.
对于单输出Q值函数批评家表示(如Q、DQN、SARSA、DDPG、TD3和SAC代理中使用的表示),F
是标量值,所以呢W
必须是与长度相同的列向量B
和B
必须是观察和行动的共同作用。有关更多信息,请参见rlQValueRepresentation
.
对于具有离散动作空间的多输出Q值函数批评家表示(例如用于Q、DQN和SARSA代理的表示),F
是一个包含尽可能多的可能动作的元素的向量。因此W
必须是一个矩阵,有尽可能多的列作为可能的行动的数量和尽可能多的行作为长度B
.B
只能是观察的函数。有关更多信息,请参阅rlQValueRepresentation
.
对于具有离散动作空间的参与者(例如PG、AC和PPO代理中的参与者),F
必须是长度等于可能的离散动作数的列向量。
对于具有连续动作空间的确定性参与者(如DDPG和TD3代理中的参与者)F
必须与代理操作规范(标量或列向量)的维度匹配。
具有连续动作空间的随机参与者不能依赖自定义基函数(他们只能使用神经网络近似器,因为需要加强标准偏差的正性)。
对于任何演员代表,W
必须有与元素的数量一样多的列F
,行数与中的元素数相同B
.B
只能是观察的函数。有关更多信息,请参阅rlDeterministicActorRepresentation
和rlStochasticActorRepresentation
.
有关训练使用线性基函数表示的自定义代理的示例,请参见火车定制LQR代理.
一旦创建了参与者和批评者表示,就可以创建使用这些表示的强化学习代理。例如,使用给定的演员和评论家网络创建一个PG代理。
agentOpts = rlPGAgentOptions (“使用基线”,对);代理=rlPGAgent(参与者、基线、代理);
有关不同类型的强化学习代理的更多信息,请参见强化学习代理.
您可以使用从现有代理获取演员和评论家表示getActor
和getCritic
分别地
您还可以使用设置现有代理的参与者和评论家设置器
和赛特评论家
分别地使用这些函数为现有代理指定表示时,指定表示的输入和输出层必须与原始代理的观察和操作规范相匹配。