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