强化学习策略是一种映射,可以根据环境的观察选择代理的操作。在培训期间,代理商调整其策略表示的参数,以最大限度地提高预期的累计长期奖励。
使用称为演员和批评者表示的功能近似器分别估计策略和价值函数的强化学习代理。Actor表示根据当前观察选择要采取的最佳行动的策略。批评者代表价值函数,估计目前政策的预期累积长期奖励。
在创建代理之前,您必须使用深神经网络,线性基本功能或查找表创建所需的演员和批评者表示。您使用的函数近似器的类型取决于您的应用程序。
有关代理的更多信息,请参见加固学习代理人.
钢筋学习工具箱™软件支持以下类型的表示:金宝app
V(年代|θV) - 基于给定观察估计预期累积的长期奖励的评论家年代.您可以使用这些批评者rlvalueerepresentation
.
问(年代,一个|θ问) - 基于给定观察的所有可能的离散行动估计预期累积长期奖励的批评者年代.您可以使用这些批评者rlqvalueerepresentation
.
问(年代|θ问) - 多输出批评者估算所有可能的离散行动的预期累积长期奖励一个我鉴于观察年代.您可以使用这些批评者rlqvalueerepresentation
.
μ(年代|θμ) - 基于给定观察选择一个动作的演员年代.您可以使用任何一个创建这些演员RLDETerminyActorRepresentation
或者rlStochasticActorRepresentation
.
每种表示都使用带有相应参数集的函数近似器(θV,θ问,θμ),在学习过程中计算。
对于离散观察和离散操作数量有限的系统,可以在查找表中存储值函数。对于有许多离散的观测和动作的系统,以及连续的观测和动作空间,存储观测和动作是不切实际的。对于这样的系统,您可以使用深度神经网络或自定义(参数中的线性)基函数来表示您的参与者和批评者。
下表总结了您可以使用加强学习工具箱软件使用的四个表示对象的方式,具体取决于环境的操作和观察空间,以及您要使用的近似器和代理。
表示vs.近似者和代理者
表示 | 金宝app支持的近似器 | 观察太空 | 行动空间 | 金宝app支持的代理人 |
---|---|---|---|---|
价值函数评论家,V(年代)您创建的使用 |
桌子 | 离散的 | 不适用 | pg,ac,ppo |
深度神经网络或自定义基函数 | 离散或连续 | 不适用 | pg,ac,ppo | |
核反应能量函数评论家,q(s,a)您创建的使用 |
桌子 | 离散的 | 离散的 | Q, DQN,撒尔沙 |
深度神经网络或自定义基函数 | 离散或连续 | 离散的 | Q, DQN,撒尔沙 | |
深度神经网络或自定义基函数 | 离散或连续 | 连续 | DDPG, TD3 | |
多输出Q值功能评论家,q(s,a)您创建的使用 |
深度神经网络或自定义基函数 | 离散或连续 | 离散的 | Q, DQN,撒尔沙 |
确定性政策演员,π(s)您创建的使用 |
深度神经网络或自定义基函数 | 离散或连续 | 连续 | DDPG, TD3 |
随机政策演员,π(s)您创建的使用 |
深度神经网络或自定义基函数 | 离散或连续 | 离散的 | pg,ac,ppo |
深神经网络 | 离散或连续 | 连续 | Pg,AC,PPO,SAC |
有关代理的更多信息,请参见加固学习代理人.
基于查找表的表示适用于数量有限的环境离散的观察和行动。您可以创建两种类型的查找表表示:
值表,存储相应观察的奖励
q表,存储相应的观察-行动对的奖励
要创建表表示,首先使用该表格或使用Q-tabes创建值rltable.
函数。然后,使用无论是一个表达表的表示rlvalueerepresentation
或者rlqvalueerepresentation
对象。要配置表示使用的学习速率和优化,请使用rlRepresentationOptions
对象。
您可以使用深度神经网络创建actor和critic函数近似器。这样做使用了深度学习工具箱™软件功能。
actor和批评网络的尺寸必须与培训环境对象的相应操作和观察规范匹配。获得环境的动作和观察尺寸env
,可以使用getActionInfo.
和getobservationInfo.
功能分别。然后进入维
规范对象的属性。
Actinfo = GetActionInfo(Env);ActDimensions = Actinfo.dimensions;ObsInfo = GetobservationInfo(ENV);obsdimensions = Obsinfo.dimensions;
价值函数批评的网络(例如AC,PG或PPO代理中使用的网络)必须仅将观察视为输入,并且必须具有单个标量输出。对于这些网络,输入层的尺寸必须与环境观察规范的尺寸匹配。有关更多信息,请参见rlvalueerepresentation
.
用于单输出Q值函数评论的网络(例如在Q、DQN、SARSA、DDPG、TD3和SAC代理中使用的网络)必须将观察和操作都作为输入,并且必须有单个标量输出。对于这些网络,输入层的维度必须与观察和操作的环境规范的维度相匹配。有关更多信息,请参见rlqvalueerepresentation
.
多输出Q值函数评论网络(例如在Q、DQN和SARSA代理中使用的网络)只将观测值作为输入,并且必须有一个输出层,其输出大小等于离散动作的数量。对于这些网络,输入层的维度必须与环境观测的维度相匹配。规范。有关更多信息,请参见rlqvalueerepresentation
.
对于行动者网络,输入层的维数必须与环境观测规范的维数相匹配。
具有离散动作空间的演员(例如PG,AC和PPO代理中的网络)的网络必须具有单个输出层,输出大小等于可能的离散动作的数量。
在具有连续动作空间的确定性演员(例如DDPG和TD3代理)中使用的网络必须具有单个输出层,其输出大小与环境动作规范中定义的动作空间的维度匹配。
具有连续动作空间的随机演员(例如PG,AC,PPO和SAC代理)中使用的网络必须具有输出尺寸的单个输出层,其具有在环境动作规范中定义的动作空间的尺寸的两倍。这些网络必须具有两个单独的路径,首次产生平均值(必须缩放到输出范围)和第二种产生标准偏差(必须是非负数的)。
有关更多信息,请参见RLDETerminyActorRepresentation
和rlStochasticActorRepresentation
.
深度神经网络包括一系列互连层。下表列出了用于加强学习应用的一些常见的深度学习层。有关可用图层的完整列表,请参阅深度学习层名单.
层 | 描述 |
---|---|
featureInputLayer. |
输入功能数据并适用归一化 |
imageInputlayer. |
输入向量和2-D图像并适用归一化。 |
sigmoidlayer. |
将SIGMOID函数应用于输入,使得输出在间隔(0,1)中界定。 |
tanhLayer |
将双曲线切线激活层应用于输入。 |
reluLayer |
将任何小于零的输入值设置为零。 |
fullyConnectedLayer |
将输入向量乘以一个权值矩阵,并添加一个偏置向量。 |
Convolution2Dlayer. |
将滑动卷积滤波器应用于输入。 |
附加学者 |
将多个图层的输出放在一起。 |
concationlayer. |
沿着指定的维度连接输入。 |
sequenceInputlayer. |
向网络提供输入序列数据。 |
lstmlayer. |
将长期短期存储器层应用于输入。金宝app支持DQN和PPO代理。 |
的Bilstmlayer.
和BatchnormalizationLayer.
层不支持强化学习。金宝app
钢筋学习工具箱软件提供以下图层,其不包含可调谐参数(即培训期间的参数)。
层 | 描述 |
---|---|
scalinglayer. |
将线性缩放和偏置应用于输入数组。该层对于缩放和移位非线性层的输出是有用的,例如tanhLayer 和s形层。 |
QuadraticLayer. |
创建一个由输入数组的元素构成的二次单项式向量。当你需要一个输出是其输入的二次函数时,这一层是有用的,例如对于LQR控制器。 |
softplusLayer |
实现SoftPlus激活Y= log(1 + eX),这确保了输出始终为正。这是整流线性单元的平滑版本(Relu)。 |
您还可以创建自己的自定义图层。有关更多信息,请参见定义自定义深度学习层.
对于强化学习应用程序,您可以通过连接每个输入路径(观察或动作)和每个输出路径(估计的奖励或动作)的一系列层来构建您的深度神经网络。然后用。连接这些路径ConnectLayers.
函数。
你也可以用深网络设计师例如,请参见使用深度网络设计器创建代理和使用图像观察训练.
创建深神经网络时,必须为每个输入路径的第一层和输出路径的最终图层指定名称。
以下代码创建并连接以下输入和输出路径:
观察输入路径,观察路径
,第一层名为'观察'
.
动作输入路径,ActionPath.
,第一层名为“行动”
.
估计值函数输出路径,共同点
的输出观察路径
和ActionPath.
作为输入。这个路径的最终层被命名“输出”
.
observationPath = [imageInputLayer([4 1 1],]),'正常化',“没有”,“名字”,'观察')全康校长(24,“名字”,'triconobsfc1') reluLayer (“名字”,“CriticRelu1”)全康校长(24,“名字”,'triconobsfc2')];ActionPath = [ImageInputLayer([1 1 1],'正常化',“没有”,“名字”,“行动”)全康校长(24,“名字”,“CriticActFC1”)];commonpath = [附加层(2,“名字”,'添加') reluLayer (“名字”,'批判杂志')全康连接层(1,“名字”,“输出”)];批判性=图表图(观察路径);批评网络= addlayers(批判性,ActionPath);批评网络= addlayers(批判性,commonpath);批评网络= ConnectLayers(批评者,'triconobsfc2','添加/ IN1');批评网络= ConnectLayers(批评者,“CriticActFC1”,'添加/ in2');
对于所有的观察和操作输入路径,您必须指定imageInputlayer.
作为路径中的第一层。
您可以使用介绍深神经网络的结构情节
函数。
情节(criticNetwork)
对于PG和AC代理,深度神经网络角色表示的最终输出层是afullyConnectedLayer
A.softmaxlayer.
.为网络指定图层时,必须指定fullyConnectedLayer
并且您可以选择指定softmaxlayer.
.如果你省略了softmaxlayer.
,软件会自动为您添加一个。
确定深度神经网络表示的层数,类型和大小可能是困难的,并且是应用程序的应用。然而,决定函数近似器的特征的最关键的组件是它是否能够近似于您的应用程序的最佳策略或折扣价值函数,即它是否具有可以正确学习观察功能的层,操作,并奖励信号。
在构建你的人际网络时,考虑以下建议。
对于连续的动作空间,用a来绑定动作tanhLayer
紧随其后的是一个ScalingLayer
,如有必要。
深密密集的网络与reluLayer
层可以很好地逼近许多不同的函数。因此,它们通常是很好的首选。
从您认为可以近似最佳策略或value函数的最小可能网络开始。
当您近似具有代数约束的强烈非线性或系统时,添加更多层通常比增加每层输出的数量更好。通常,近似器代表更复杂的功能的能力仅在层的大小中增加多项等,但是随着层数呈指数逐渐增长。换句话说,更多层允许近似更复杂和非线性的组合函数,尽管这通常需要更多的数据和更长的训练时间。具有较少层的网络可能需要指数级别的单元来成功地近似于同一类函数,并且可能无法正确学习和概括。
对于策略上的代理(仅从遵循当前策略收集的经验中学习的代理),如AC和PG代理,如果网络较大(例如,一个网络有两个隐层,每个隐层有32个节点,它有几百个参数),并行训练效果会更好。策略并行更新假设每个工作者更新网络的不同部分,例如当他们探索观察空间的不同区域时。如果网络很小,工人的更新可能相互关联,使训练不稳定。
为您的深度神经网络创建批评者表示,使用rlvalueerepresentation
或者rlqvalueerepresentation
对象。要为你的深度神经网络创建一个参与者表示,使用RLDETerminyActorRepresentation
或者rlStochasticActorRepresentation
对象。要配置表示使用的学习速率和优化,请使用rlRepresentationOptions
对象。
例如,为批评网络创建一个Q值表示对象批判性
,指定学习率为0.0001
.当您创建表示时,将环境动作和观察规范传递给rlqvalueerepresentation
对象,并指定连接了观察和操作的网络层的名称(在这种情况下'观察'
和“行动”
)。
opt = rlrepresentationOptions(“LearnRate”,0.0001);评论家= rlqvalueerepresentation(批评,undernfo,Actinfo,......'观察',{'观察'},“行动”,{“行动”},选择);
创建深神经网络并配置表示对象时,请考虑使用以下方法作为起点。
从最小的网络开始和高学习率(0.01
)。培训此初始网络以查看代理商是否会迅速收敛到较差的政策或以随机方式行事。如果出现这些问题中的任何一个,则通过在每层上添加更多层或更多输出来重新划分网络。您的目标是找到一个足够大的网络结构,并不是太快学习,并且在初始训练期后显示了学习的迹象(提高了奖励图的轨迹)。
一旦您解决了良好的网络架构,较低的初始学习率可能允许您了解代理在正确的轨道上,并帮助您检查您的网络架构是否令人满意的问题。低学习率使调谐参数更容易,特别是对于难题。
此外,在配置深度神经网络表示时,请考虑以下提示。
患有DDPG和DQN代理人的患者,因为他们在早期发作期间可能不会在一段时间内学到任何时间,并且他们通常在培训过程中早期累计奖励表现出倾向。最终,他们可以在前几次剧集后显示学习的迹象。
对于DDPG和DQN代理商,促进代理商的探索至关重要。
对于同时拥有演员和评论家网络的代理,将这两种表示的初始学习速率设置为相同的值。对于一些问题,将评论家的学习率设置为高于行为人的学习率可以提高学习效果。
在创建与PPO或DQN代理商使用的表示时,可以使用经常性的神经网络。这些网络是深度神经网络sequenceInputlayer.
输入层和至少一层具有隐藏状态信息,例如lstmlayer.
.当环境具有不能包含在观察向量中的状态时,它们可能特别有用。有关更多信息和示例,请参阅rlvalueerepresentation
,rlqvalueerepresentation
,RLDETerminyActorRepresentation
, 和rlStochasticActorRepresentation
.
自定义(参数中的线性)基础函数近似器具有表单f = w'b.
, 在哪里W
是一个重量阵列和B
是您必须创建的自定义基函数的列向量输出。线性基函数表示的学习参数是元素W
.
对于价值函数批评者表示,(例如在AC,PG或PPO代理中使用的),f
是标量值,所以呢W
必须是一个长度相同的列向量B
, 和B
必须是观察的函数。有关更多信息,请参见rlvalueerepresentation
.
对于单输出Q值函数批判表示(如Q、DQN、SARSA、DDPG、TD3和SAC代理中使用的),f
是标量值,所以呢W
必须是一个长度相同的列向量B
, 和B
必须是观察和行动的函数。有关更多信息,请参见rlqvalueerepresentation
.
对于具有离散动作空间的多输出Q值函数批判表示(例如在Q、DQN和SARSA代理中使用的那些),f
是一个向量,包含尽可能多的元素和可能的操作数。因此W
必须是一个具有多个列的矩阵,作为可能的动作的数量,以及与长度一样多的行B
.B
必须只是观察的函数。有关更多信息,请参见rlqvalueerepresentation
.
对于具有离散动作空间的演员(例如PG,AC和PPO代理中的演员),f
必须是长度等于可能的离散动作数量的列向量。
对于具有连续动作空间的确定性参与者(如DDPG和TD3代理中的参与者)f
必须与代理操作规范的尺寸匹配,这是标量或列向量。
具有连续动作空间的随机演员不能依赖于自定义基础函数(它们只能使用神经网络近似器,因为需要为标准偏差实施积极性)。
对于任何演员表示,W
必须具有尽可能多的列作为元素的数量f
,行数与中元素的个数相同B
.B
必须只是观察的函数。有关更多信息,请参见RLDETerminyActorRepresentation
, 和rlStochasticActorRepresentation
.
有关培训使用线性基础函数表示的自定义代理的示例,请参阅火车定制LQR代理.
创建演员和批读表示后,您可以创建使用这些表示的强化学习代理。例如,使用给定的演员和批评网络创建PG代理。
代理= rlpgagentoptions('umermbaseline',真正的);代理= rlPGAgent(演员、基线、agentOpts);
有关不同类型的强化学习代理商的更多信息,请参阅加固学习代理人.
您可以使用以下方法从现有代理获取参与者和批评者表示getActor
和透镜
,分别。
您还可以使用现有代理商使用的演员和批评者setActor
和setCritic
,分别。当您使用这些函数为现有代理指定表示时,指定表示的输入和输出层必须与原始代理的观察和操作规范匹配。