软Actor-Critic代理
软actor-critic (SAC)算法是一个模范自由,在网上,off-policy, actor-critic强化学习方法。SAC算法计算最优政策,最大化长期期望的奖励和熵的政策。熵是衡量政策的不确定性的状态。熵值越高促进更多的探索。最大化预期长期累积奖励和熵平衡和环境的开发和探索。
更多信息在不同类型的强化学习代理,看看强化学习代理。
囊剂的实现强化学习工具箱™软件使用两个核反应能量函数批评,从而防止高估价值的功能。其他实现SAC算法使用一个额外的值函数的评论家。
囊剂可以用下面的训练环境中观察和行动空间。
观察太空 | 行动空间 |
---|---|
离散或连续 | 连续 |
囊剂使用下面的演员和评论家。
批评人士 | 演员 |
---|---|
核反应能量函数的批评者问(年代,一个),您将创建使用 |
随机政策演员π(年代),您将创建使用 |
在培训期间,一个囊剂:
定期更新的演员和评论家属性在学习。
估计高斯概率分布的平均值和标准偏差的连续动作的空间,然后基于分布随机选择操作。
更新一个熵权项的预期回报和熵平衡政策。
商店过去的经验使用循环缓冲区的经验。代理更新经验的演员兼评论家使用mini-batch随机取样的缓冲区。
如果UseDeterministicExploitation
选项rlSACAgentOptions
被设置为真正的
最大似然的行动总是在使用sim卡
和generatePolicyFunction
。这将导致模拟代理并生成的政策行为的确定性。
演员和评论家函数近似者
估计策略和价值函数,囊代理维护以下函数近似者。
随机的演员π(一个|年代;θ)——演员,参数θ、输出条件高斯概率的平均值和标准偏差采取每个连续的行动一个在国家年代。
一个或两个核反应能量批评问k(年代,一个;ϕk)——批评者,每个参数ϕk,观察年代和行动一个作为输入,并返回相应的值函数的期望,包括长期奖励和熵。
一个或两个目标的批评问tk(年代,一个;ϕtk)——提高稳定性的优化,定期代理设置目标评论家参数ϕtk相应的最新批评参数值。目标数量的批评家批评的数量匹配。
当你使用两个评论家,问1(年代,一个;ϕ1),问2(年代,一个;ϕ2),每一个批评都有不同的结构。当批评家有相同的结构,他们必须有不同的初始参数值。
每一个评论家问k(年代,一个;ϕk)和相应的目标评论家问tk(年代,一个;ϕtk)必须具有相同的结构和参数。
更多信息为函数近似创造演员和批评者,明白了创建政策和价值功能。
在培训期间,代理曲调的参数值θ。培训后,参数保持在他们的调谐值和函数近似者存储在训练演员π(一个|年代)。
行动的一代
演员在囊剂生成平均值和标准偏差输出。首先选择一个行动,演员从一个高斯分布随机选择一个无界的行动与这些参数。在培训期间,囊剂使用无界的概率分布来计算熵的政策对于给定的观察。
如果囊代理人的行动空间是有限的,演员通过应用生成有界操作双曲正切和扩展操作的行动。
代理创建
您可以创建在MATLAB和火车囊剂®命令行或使用强化学习设计应用。有关创建代理使用的更多信息强化学习设计,请参阅使用强化学习设计师创建代理。
在命令行上,您可以创建一个囊剂用默认演员和评论家从环境中基于观察和操作规范。为此,执行以下步骤。
为您的环境创建观测规范。如果你已经有一个环境接口对象,您可以获得这些规范使用
getObservationInfo
。为您的环境创建动作规范。如果你已经有一个环境接口对象,您可以获得这些规范使用
getActionInfo
。如果需要,指定每个可学的层的神经元数是否使用递归神经网络。为此,创建一个代理初始化选项对象使用
rlAgentInitializationOptions
。如果需要,使用一个指定代理选项
rlSACAgentOptions
对象。使用一个创建代理
rlSACAgent
对象。
或者,您可以创建演员兼批评家和使用这些对象来创建你的代理。在这种情况下,确保演员和评论家的输入和输出维度匹配相应的行动和观测环境的规范。
创建一个使用一个随机的演员
rlContinuousGaussianActor
对象。囊代理,为了正确的比例平均值所需的行动范围,演员必须不包含网络tanhLayer
和scalingLayer
作为最后一个两层的输出路径意味着值。同样,为了确保non-negativity标准差值,演员必须不包含网络reluLayer
最后一层的输出路径标准偏差值。创建一个或两个评论家使用
rlQValueFunction
对象。使用一个指定代理选项
rlSACAgentOptions
对象。使用一个创建代理
rlSACAgent
对象。
囊代理不支持演员和评论家使用复发性深金宝app层神经网络作为函数的近似者。
更多信息为函数近似创造演员和批评者,明白了创建政策和价值功能。
训练算法
囊剂使用下面的训练算法,他们定期更新他们的演员和评论家模型和熵权。配置训练算法,使用一个指定选项rlSACAgentOptions
对象。在这里,K= 2批评家和数量吗k评论家指数。
初始化每个评论家问k(年代,一个;ϕk)和随机参数值ϕk,初始化每个目标评论家使用相同的随机参数值: 。
初始化的演员π(年代;θ)和随机参数值θ。
执行热开始采取一系列的行动后,初始随机政策π(年代)。对于每个操作,存储经验经验缓冲区。指定数量的热身动作,使用
NumWarmStartSteps
选择。对于每一个培训时间步骤:
为当前的观测年代,选择行动一个使用政策π(年代;θ)。
执行动作一个。观察奖励R其次观察年代。
存储经验(年代,一个,R,年代在缓冲区的经验。
样本的随机mini-batch米经验(年代我,一个我,R我,年代我从缓冲区的经验。指定米,可以使用
MiniBatchSize
选择。每一个DC时间步骤,更新每个评论家的参数通过最小化损失lk在所有采样的经历。指定DC,可以使用
CriticUpdateFrequency
选择。如果年代我是一种终端状态,目标函数值吗y我等于经验奖励R我。否则,目标函数值的总和R我未来,最低折扣奖励的批评,和加权熵。
在这里:
一个“我是有界的行动源自于无限的输出演员π(年代我)。
γ是折扣因素,您指定使用哪一个
DiscountFactor
选择。是有界输出的加权熵政策的演员在国家吗年代。α熵的减肥,你指定使用哪一个
EntropyLossWeight
选择。
每一个D一个时间步长、更新演员参数通过最小化目标函数。设置D一个,可以使用
PolicyUpdateFrequency
选择。每一个D一个时间的步骤,也更新熵权通过最小化以下损失函数。
在这里,ℋ是目标熵,您指定使用哪一个
EntropyWeightOptions.TargetEntropy
选择。每一个DT步骤,更新目标批评家根据目标更新方法。指定DT,可以使用
TargetUpdateFrequency
选择。有关更多信息,请参见目标更新方法。重复步骤4至8NG次,NG是梯度的数量的步骤,您指定使用哪一个
NumGradientStepsPerUpdate
选择。
目标更新方法
囊剂更新他们的目标评论家参数使用下列目标更新方法之一。
平滑-更新目标评论家使用平滑因子参数在每个时间步τ。指定平滑因子,使用
TargetSmoothFactor
选择。周期,定期更新目标评论家参数不平滑(
TargetSmoothFactor = 1
)。指定更新期间,使用TargetUpdateFrequency
参数。定期与平滑平滑,定期更新目标参数。
配置目标更新方法,创建一个rlSACAgentOptions
对象,并设置TargetUpdateFrequency
和TargetSmoothFactor
参数如下表所示。
更新方法 | TargetUpdateFrequency |
TargetSmoothFactor |
---|---|---|
平滑(默认) | 1 | 小于1 |
周期 | 大于1 | 1 |
周期性的平滑 | 大于1 | 小于1 |
引用
图,[1]Haarnoja Aurick周,克里斯蒂安Hartikainen,乔治•塔克Sehoon哈,杰Tan Vikash Kumar et al。“软Actor-Critic算法和应用程序”。Preprint, submitted January 29, 2019.https://arxiv.org/abs/1812.05905。