创建政策和价值函数表示
强化学习策略是一个映射,选择代理人的行动需要基于观察的环境。在培训期间,代理曲调最大化其政策的参数表示预期的长期累积奖励。
强化学习代理评估政策和价值函数使用函数近似者分别称为演员和评论家表示。演员代表政策,选择最好的行动,基于当前的观察。评论家表示值函数估计预期的长期累积奖励当前政策。
在创建一个代理之前,您必须创建所需的演员使用深层神经网络和评论家表示,线性基函数,或查找表。函数近似者的类型取决于您的应用程序使用。
有关代理的更多信息,请参阅强化学习代理。
演员和评论家表示
强化学习工具箱™软件支持以下类型的表示:金宝app
V(年代|θV)——批评人士估计预期的长期累积奖励基于给定的观察年代。您可以创建这些批评人士使用
rlValueRepresentation
。问(年代,一个|θ问)——批评人士估计预期的长期累积奖励对于一个给定的离散动作一个和一个给定的观测年代。您可以创建这些批评人士使用
rlQValueRepresentation
。问我(年代,一个我|θ问)-多输出的批评者,估计预期的长期累积奖励所有可能的离散动作一个我鉴于观察年代。您可以创建这些批评人士使用
rlQValueRepresentation
。μ(年代|θμ)-演员,选择一个行动基于给定的观察年代。您可以创建这些参与者使用
rlDeterministicActorRepresentation
或rlStochasticActorRepresentation
。
每个表示使用一个函数近似者相应的参数(θV,θ问,θμ),在学习过程中计算。
与数量有限的离散的观测系统和离散行动,你可以储存在查找表值函数。有许多离散的系统观察和行动和连续观察和行动空间,存储观察和行动是不切实际的。对于这样的系统,可以代表你的演员和评论家使用深层神经网络或自定义(线性参数)基函数。
下表总结了,您可以使用四个表示对象与强化学习工具箱软件可用,这取决于行动和观察的空间环境,以及您想要使用的近似者和代理。
表示与近似者和代理
表示 | 金宝app支持接近者 | 观察太空 | 行动空间 | 金宝app支持代理 |
---|---|---|---|---|
价值函数的评论家V(年代)创建使用 |
表 | 离散 | 不适用 | PG, AC, PPO |
深层神经网络或自定义的基函数 | 离散或连续 | 不适用 | PG, AC, PPO | |
核反应能量函数评论家,问(,)您将创建使用 |
表 | 离散 | 离散 | Q, DQN,撒尔沙 |
深层神经网络或自定义的基函数 | 离散或连续 | 离散 | Q, DQN,撒尔沙 | |
深层神经网络或自定义的基函数 | 离散或连续 | 连续 | DDPG, TD3 | |
多输出核反应能量函数评论家问(,)创建使用 |
深层神经网络或自定义的基函数 | 离散或连续 | 离散 | Q, DQN,撒尔沙 |
确定的政策的演员π(S)创建使用 |
深层神经网络或自定义的基函数 | 离散或连续 | 连续 | DDPG, TD3 |
随机政策演员π(S)创建使用 |
深层神经网络或自定义的基函数 | 离散或连续 | 离散 | PG, AC, PPO |
深层神经网络 | 离散或连续 | 连续 | PG、AC、PPO、囊 |
有关代理的更多信息,请参阅强化学习代理。
表近似者
表示基于查找表适合与数量有限的环境离散观察和操作。您可以创建两种类型的查找表表示:
值表,存储奖励相应的观测
Q-tables,商店奖励相应observation-action对
创建一个表表示,首先创建一个表或Q-table使用价值rlTable
函数。然后,创建一个表示为表使用一个rlValueRepresentation
或rlQValueRepresentation
对象。配置使用的学习速率和优化表示,使用一个rlRepresentationOptions
对象。
深层神经网络近似者
您可以创建演员和评论家使用深层神经网络函数的估计值。这样使用深度学习工具箱™软件功能。
网络的输入和输出尺寸
演员的维度和评论家网络必须匹配相应的行动,从训练环境观测规范对象。获取操作和观察维度环境env
,可以使用getActionInfo
和getObservationInfo
函数,分别。然后访问维
规范的属性对象。
actInfo = getActionInfo (env);actDimensions = actInfo.Dimensions;obsInfo = getObservationInfo (env);obsDimensions = obsInfo.Dimensions;
网络价值函数的批评者(比如那些用于交流、PG,或PPO代理)必须采取只观察作为输入,必须有一个标量输出。对于这些网络输入层的尺寸必须匹配环境观察的尺寸规格。有关更多信息,请参见rlValueRepresentation
。
对于网络批评核反应能量函数(比如那些用于Q, DQN,撒尔沙,DDPG, TD3,和囊剂)必须采取观察和行动作为输入,而且必须有一个标量输出。对于这些网络输入层的尺寸必须匹配的尺寸环境观测和操作规范。有关更多信息,请参见rlQValueRepresentation
。
网络多输出核反应能量函数批评人士(如用于Q、DQN和撒尔沙代理)只需要观察作为输入,必须有一个输出层输出尺寸等于离散行为的数量。对于这些网络输入层的尺寸必须匹配的尺寸环境观测。规范。有关更多信息,请参见rlQValueRepresentation
。
为演员网络输入层的尺寸必须匹配环境观察的尺寸规格。
网络与离散动作演员使用空间(如的PG、交流和PPO代理)必须有一个输出层的输出尺寸等于可能离散行为的数量。
网络用于确定的演员和一个持续的行动空间(如DDPG的和TD3代理)必须有一个输出层的输出尺寸匹配的尺寸行动空间中定义的环境行动规范。
网络与连续随机演员使用行动空间(如的PG, AC, PPO,和囊剂)必须有一个输出层输出尺寸有两次行动空间的维数定义的环境行动规范。这些网络必须有两个独立的路径,第一个生产平均值(必须按比例缩小的输出范围),第二个生产标准偏差(必须是非负数)。
有关更多信息,请参见rlDeterministicActorRepresentation
和rlStochasticActorRepresentation
。
建立深层神经网络
深层神经网络由一系列相互关联的层次。下表列出了一些常见的深度学习层强化学习应用程序中使用。可用层的完整列表,请参阅深度学习层的列表。
层 | 描述 |
---|---|
featureInputLayer |
输入特性数据和应用规范化 |
imageInputLayer |
输入向量和二维图像和应用规范化。 |
sigmoidLayer |
乙状结肠函数适用于输入,输出是有界区间(0,1)。 |
tanhLayer |
双曲正切激活层适用于输入。 |
reluLayer |
集小于零的任何输入值为零。 |
fullyConnectedLayer |
增加重量的输入向量矩阵,并添加一个偏差向量。 |
convolution2dLayer |
滑动卷积过滤器适用于输入。 |
additionLayer |
添加多个层的输出。 |
concatenationLayer |
连接输入指定的尺寸。 |
sequenceInputLayer |
提供输入序列数据网络。 |
lstmLayer |
很长一段短期记忆层适用于输入。金宝app支持DQN和PPO代理。 |
的bilstmLayer
和batchNormalizationLayer
不支持层强化学习。金宝app
强化学习工具箱软件提供了以下层,它不包含可调参数(即参数变化在训练)。
层 | 描述 |
---|---|
scalingLayer |
线性范围和偏见适用于输入数组。这一层是有用的扩展和变化的输出非线性层,如tanhLayer 和sigmoidLayer 。 |
quadraticLayer |
创建一个向量的二次单项式由输入数组的元素。这一层是有用的,当你需要一个输出是二次函数的输入,例如一个等控制器。 |
softplusLayer |
实现了softplus激活Y日志(1 + e =X),确保输出总是正的。这个函数是一个平滑版本的修正线性单元(ReLU)。 |
您还可以创建自己的自定义层。有关更多信息,请参见定义定制的深度学习层。
为强化学习应用程序,你构建你的深层神经网络通过连接一系列层为每个输入路径(观察或操作)和为每个输出路径(估计奖励或行动)。然后使用这些路径连接在一起connectLayers
函数。
您还可以创建您的深层神经网络使用深层网络设计师应用。例如,明白了使用深度网络设计师创建代理和培训使用图像的观察。
当您创建一个深层神经网络,您必须指定名称的第一层每个输入路径和最后一层的输出路径。
下面的代码创建和连接输入和输出路径如下:
一个观察输入路径,
observationPath
第一层命名“观察”
。一个操作的输入路径,
actionPath
第一层命名“行动”
。估计价值函数输出路径,
commonPath
,它的输出observationPath
和actionPath
作为输入。这条路的最后一层是命名“输出”
。
observationPath = [imageInputLayer ((4 1 1),“归一化”,“没有”,“名字”,“观察”)fullyConnectedLayer(24日“名字”,“CriticObsFC1”)reluLayer (“名字”,“CriticRelu1”)fullyConnectedLayer(24日“名字”,“CriticObsFC2”));actionPath = [imageInputLayer ((1 1 1),“归一化”,“没有”,“名字”,“行动”)fullyConnectedLayer(24日“名字”,“CriticActFC1”));commonPath = [additionLayer (2,“名字”,“添加”)reluLayer (“名字”,“CriticCommonRelu”)fullyConnectedLayer (1,“名字”,“输出”));criticNetwork = layerGraph (observationPath);criticNetwork = addLayers (criticNetwork actionPath);criticNetwork = addLayers (criticNetwork commonPath);criticNetwork = connectLayers (criticNetwork,“CriticObsFC2”,“添加/三机一体”);criticNetwork = connectLayers (criticNetwork,“CriticActFC1”,“添加/ in2”);
对所有观察和行动输入路径,您必须指定一个imageInputLayer
第一层的路径。
您可以查看您的深层神经网络使用的结构情节
函数。
情节(criticNetwork)
PG和AC代理,最终的输出层的深层神经网络是一个演员表示fullyConnectedLayer
和一个softmaxLayer
。当你指定你的网络的层次,你必须指定fullyConnectedLayer
你可以选择性地指定softmaxLayer
。如果您省略了softmaxLayer
,软件自动添加一个给你。
确定数量、类型和大小的层深神经网络表示是很困难的,是依赖于应用程序的。然而,最重要的组件在决定函数近似者的特点是它能够近似最优政策或贴现值函数为您的应用程序,也就是说,层,是否能正确地学习你的观察的特点,行动,和奖励的信号。
构建网络时考虑以下建议。
连续操作空间,绑定操作
tanhLayer
紧随其后的是一个ScalingLayer
,如果必要的。深密集的网络
reluLayer
层可以在近似相当不错的许多不同的功能。因此,他们通常是一个较好的初步选择。从最小的网络,你认为可以近似最优政策或价值函数。
当你强近似非线性或系统与代数约束,增加更多的层通常是比增加输出的数量每层。一般来说,近似者的能力来表示更加复杂的多项式函数只生长在层的大小,但随层数增加呈指数增长。换句话说,更多的层允许近似更复杂和非线性组合函数,虽然这通常需要更多的数据和更长的训练时间。较少的网络层可以要求单位成功近似呈指数增长相同的类的功能,并可能无法正确地学习和推广。
政策代理(收集的那些只能从经验中学习,而在当前政策),如AC和PG代理、平行培训工作更好的如果你的网络是大(例如,一个网络与32个节点和两个隐藏层,有几百个参数)。假设每个工人在政策并行更新更新另一个网络的一部分,例如当他们探索观察空间的不同区域。如果网络是小,工人更新能相互关联,使培训不稳定。
创建和配置表示
为你创建一个评论家表示深层神经网络,使用一个rlValueRepresentation
或rlQValueRepresentation
对象。为你创建一个演员表示深层神经网络,使用一个rlDeterministicActorRepresentation
或rlStochasticActorRepresentation
对象。配置使用的学习速率和优化表示,使用一个rlRepresentationOptions
对象。
例如,创建一个核反应能量表示对象的评论家网络criticNetwork
,指定一个学习的速度0.0001
。当你创建表示,通过环境行动和观测规范rlQValueRepresentation
对象,并指定网络层的名称的连接(在本例中观察和操作“观察”
和“行动”
)。
选择= rlRepresentationOptions (“LearnRate”,0.0001);评论家= rlQValueRepresentation (criticNetwork obsInfo actInfo,…“观察”,{“观察”},“行动”,{“行动”},选择);
当你创建深层神经网络和配置您的表现对象,考虑使用以下方法作为一个起点。
从最小的可能的网络和学习速率高(
0.01
)。火车这个初始网络代理是否收敛迅速一个贫穷的政策或行为以随机的方式。如果发生这些问题,重新调节网络通过添加更多的层或更多关于每一层的输出。你的目标是找到一个网络结构,仅仅是足够大的,不学得太快了,学习的迹象(奖励的改善轨迹图)在最初的训练阶段。一旦你选定一个好的网络体系结构,较低的初始学习速率可以让你代理是否在正确的轨道上,并帮助您检查您的网络架构是满意的问题。较低的学习速率使调优参数容易得多,尤其是对困难的问题。
此外,考虑下面的建议在配置您的深层神经网络表示。
耐心和DDPG DQN代理,因为他们可能不会学到任何东西在一段时间内发作,早期,他们通常显示蘸累积奖励在训练过程的早期。最终,他们可以展示学习第一个几千集后的迹象。
DDPG和DQN代理,代理的促进勘探至关重要。
为代理与演员和评论家网络,设置初始学习都表示相同的值。对于一些问题,设置评论家学习速率更高的价值比演员可以提高学习效果。
复发性神经网络
当创建表示为Q和撒尔沙以外的任何代理,您可以使用递归神经网络(RNN)。这些网络与一个深层神经网络sequenceInputLayer
输入层和至少一层隐藏的状态信息,例如一个lstmLayer
。他们可以特别有用的环境状态时不能包含在观测向量。
对于演员和评论家的代理,您必须使用一个RNN的他们,是否使用一个RNN的他们。你不能用一个RNN只批评或演员。
当使用PG代理,RNN的学习轨迹长度是整个事件。对于一个AC代理NumStepsToLookAhead
属性是选择对象被当作训练轨迹长度。PPO代理,轨迹长度是MiniBatchSize
它的选择对象的属性。
DQN、DDPG囊和TD3代理,您必须指定轨迹的长度大于1的整数的培训SequenceLength
他们的选择对象的属性。
请注意,不支持代码生成连续行动PG, AC, PPO,和囊剂使用递金宝app归神经网络(RNN),或任何代理有多个输入路径和包含一个RNN的路径。
的更多信息和示例策略和价值功能,看看rlValueRepresentation
,rlQValueRepresentation
,rlDeterministicActorRepresentation
,rlStochasticActorRepresentation
。
自定义基函数近似者
自定义(线性参数)基函数近似者有形式f = W可能会
,在那里W
是权重数组B
的列向量输出功能,您必须创建一个自定义的基础。可学的线性基函数的参数表示的元素W
。
评论家表示值函数,(比如那些用于交流、PG或PPO代理),f
是一个标量值,所以呢W
必须是一个列向量的长度一样吗B
,B
必须是一个函数的观察。有关更多信息,请参见rlValueRepresentation
。
对于为核反应能量函数评论家表示,(比如那些用于Q, DQN,撒尔沙,DDPG, TD3,和囊剂),f
是一个标量值,所以呢W
必须是一个列向量的长度一样吗B
,B
必须是一个函数的观察和行动。有关更多信息,请参见rlQValueRepresentation
。
对多输出核反应能量函数评论家交涉离散行动空间,(如用于Q、DQN和撒尔沙代理),f
是一个向量和尽可能多的元素的数量可能的行动。因此W
必须与尽可能多的列矩阵可能的行动和尽可能多的行数的长度吗B
。B
必须只有一个函数的观察。有关更多信息,请参见rlQValueRepresentation
。
演员的一个离散的行动空间(如的PG、交流和PPO代理),
f
必须与长度等于列向量的数量可能离散行动。对于确定性演员与一个连续动作空间(如DDPG的和TD3代理),的尺寸
f
必须匹配的尺寸代理行为规范,这是一个标量或一个列向量。随机演员连续行动空间不能依靠自定义基函数(他们只能使用神经网络近似者,由于需要实施积极的标准差)。
对于任何一个演员表示,W
必须有尽可能多的列元素的数量吗f
,尽可能多的行元素的数量B
。B
必须只有一个函数的观察。有关更多信息,请参见rlDeterministicActorRepresentation
,rlStochasticActorRepresentation
。
列车为例,使用一个线性的定制代理基函数表示,看到的火车定制等方面代理。
创建一个代理或指定代理交涉
一旦你创建你的演员和评论家表示,您可以创建一个强化学习代理使用这些表示。例如,创建一个PG代理使用一个给定的演员和评论家网络。
agentOpts = rlPGAgentOptions (“UseBaseline”,真正的);代理= rlPGAgent(演员、基线、agentOpts);
更多信息在不同类型的强化学习代理,看看强化学习代理。
您可以获得演员和评论家表示从现有的代理使用getActor
和getCritic
,分别。
你也可以设置演员和批评现有的代理使用setActor
和setCritic
,分别。当你指定一个代表现有代理使用这些函数,输入和输出层指定的代表必须匹配的观察和行动规范原代理。