双延迟深度确定性策略梯度代理
双延迟深度确定性策略梯度(TD3)算法是一种无模型、在线、非策略强化学习方法。TD3代理是一种行动者-评论家式的强化学习代理,它搜索一种最优策略,使预期的累积长期奖励最大化。
有关不同类型的强化学习代理的更多信息,请参见强化学习代理.
TD3算法是DDPG算法的扩展。DDPG代理可能高估价值函数,从而产生次优策略。为了减少值函数高估,TD3算法对DDPG算法进行了如下修改。
TD3智能体学习两个q值函数,并在策略更新期间使用最小值函数估计。
TD3代理更新策略和目标的频率低于Q函数。
在更新策略时,TD3代理向目标操作添加噪声,这使得策略不太可能利用具有高q值估计的操作。
您可以使用TD3代理来实现以下训练算法之一,具体取决于您指定的评论家的数量。
TD3 -用两个q值函数训练代理。该算法实现了上述三种修改。
延迟DDPG——用单个q值函数训练代理。该算法通过平滑目标策略和延迟策略和目标更新来训练DDPG代理。
TD3特工可以在具有以下观察和行动空间的环境中进行训练。
观察太空 | 行动空间 |
---|---|
连续或离散 | 连续 |
TD3代理人使用以下演员和评论家。
批评人士 | 演员 |
---|---|
一个或多个q值函数评论家问(年代,一个),您可以使用它来创建 |
确定性策略行动者π(年代),您可以使用它来创建 |
培训期间,TD3代理人:
在学习过程中的每个时间步骤更新参与者和评论家属性。
使用循环经验缓冲区存储过去的经验。代理使用从缓冲区中随机抽样的一小批经验来更新演员和评论家。
在每个训练步骤中使用随机噪声模型扰动策略选择的动作。
演员和评论家的功能
为了估计策略和值函数,TD3代理维护以下函数逼近器:
确定的演员π(年代;θ-参与者,带参数θ,进行观察年代并返回相应的行动,使长期奖励最大化。
目标的演员πt(年代;θt) -为了提高优化的稳定性,agent定期更新目标actor参数θt使用最新的参与者参数值。
一两个q值评论家问k(年代,一个;ϕk——批评家们,每个人都有不同的标准ϕk,观察年代和行动一个作为投入和回报的相应期望的长期回报。
有一两个是针对批评者的问tk(年代,一个;ϕtk) -为了提高优化的稳定性,agent定期更新目标临界参数ϕtk使用最新对应的批评家参数值。目标评论家的数量与评论家的数量相匹配。
这两个π(年代;θ),πt(年代;θt)具有相同的结构和参数化。
对于每一位评论家,问k(年代,一个;ϕk),问tk(年代,一个;ϕtk)具有相同的结构和参数化。
当使用两个批评家时,问1(年代,一个;ϕ1),问2(年代,一个;ϕ2),每个评论家可以有不同的结构,尽管TD3在评论家有相同的结构时效果最好。当批评家具有相同的结构时,它们必须具有不同的初始参数值。
有关为函数近似创建actor和批评家的详细信息,请参见创建策略和值函数.
在训练期间,代理调整参数值θ.训练后,参数保持其调谐值,训练后的actor函数近似值存储在π(年代).
代理创建
您可以在MATLAB中创建和训练TD3代理®命令行或使用强化学习设计师使用. app创建代理的详细信息强化学习设计师,请参阅使用强化学习设计器创建代理.
在命令行上,您可以根据来自环境的观察和操作规范,创建具有默认参与者和评论家的TD3代理。为此,请执行以下步骤。
为您的环境创建观察规范。如果已经有了环境接口对象,可以使用
getObservationInfo
.为您的环境创建操作规范。如果已经有了环境接口对象,可以使用
getActionInfo
.如果需要,指定每个可学习层中的神经元数量,或者是否使用LSTM层。为此,使用创建代理初始化选项对象
rlAgentInitializationOptions
.类型指定代理选项(如果需要)
rlTD3AgentOptions
对象。类创建代理
rlTD3Agent
对象。
或者,您可以创建演员和评论家,并使用这些对象创建您的代理。在这种情况下,确保参与者和评论家的输入和输出维度与环境的相应操作和观察规范相匹配。
类创建一个参与者
rlContinuousDeterministicActor
对象。创建一个或两个批评使用
rlQValueFunction
对象。属性指定代理选项
rlTD3AgentOptions
对象。类创建代理
rlTD3Agent
对象。
有关为函数近似创建actor和批评家的详细信息,请参见创建策略和值函数.
训练算法
TD3智能体使用以下训练算法,在每个时间步更新其参与者和评论家模型。若要配置训练算法,请使用rlDDPGAgentOptions
对象。在这里,K= 2是多少评论家和k是评论家指数。
初始化每个评论家问k(年代,一个;ϕk),参数值随机ϕk,并将每个目标批评家初始化为相同的随机参数值: .
初始化actorπ(年代;θ),参数值随机θ,并用相同的参数值初始化目标actor: .
对于每个训练时间步:
对于目前的观测年代,选择动作一个=π(年代;θ) +N,在那里N是来自噪声模型的随机噪声。要配置噪声模型,请使用
ExplorationModel
选择。执行动作一个.观察奖励R下一个观察年代.
储存经验(年代,一个,R,年代)。
随机抽样一小批米经验(年代我,一个我,R我,年代我)来自经验缓冲区。指定米,使用
MiniBatchSize
选择。如果年代我是否是终端状态下,设定的价值函数目标y我来R我.否则,设置为
价值函数目标是经验奖励的总和R我以及评论家对未来最低的折扣。指定贴现因子γ,使用
DiscountFactor
选择。为了计算累积奖励,代理首先通过传递下一个观察来计算下一个动作年代我从采样的经验到目标参与者。然后,代理添加噪声ε属性的已计算操作
TargetPolicySmoothModel
,并根据噪声上限和下限对动作进行剪辑。代理通过将下一个操作传递给目标批评者来找到累积奖励。在每一个训练步骤中,更新每个批评的参数,使损失最小化lk在所有的样本经验中。
每一个D1步骤,使用以下采样的策略梯度更新参与者参数,以最大化预期的折扣奖励。设置D1,使用
PolicyUpdateFrequency
选择。在这里,G人工智能最小评论家输出相对于由行动者网络计算的动作的梯度,和Gπ我是参与者输出相对于参与者参数的梯度。两种梯度都进行了评估以供观察年代我.
每一个D2步骤,根据目标更新方法更新目标参与者和评论家。指定D2,使用
TargetUpdateFrequency
选择。有关更多信息,请参见目标更新方法.
为了简单起见,该算法中的演员和评论家更新使用基本的随机梯度下降来显示梯度更新。类中指定使用的优化器取决于实际的梯度更新方法rlOptimizerOptions
对象赋给rlCriticOptimizerOptions
财产。
目标更新方法
TD3代理使用下列目标更新方法之一更新其目标参与者和批评者参数。
平滑-使用平滑因子在每个时间步更新目标参数τ.要指定平滑因子,请使用
TargetSmoothFactor
选择。周期-定期更新目标参数,不平滑(
TargetSmoothFactor = 1
).要指定更新周期,请使用TargetUpdateFrequency
参数。周期性的平滑—定期对目标参数进行平滑更新。
若要配置目标更新方法,请创建rlTD3AgentOptions
对象,并设置TargetUpdateFrequency
而且TargetSmoothFactor
参数说明如下表所示。
更新方法 | TargetUpdateFrequency |
TargetSmoothFactor |
---|---|---|
平滑(默认) | 1 |
不到1 |
周期 | 大于1 |
1 |
周期性的平滑 | 大于1 |
不到1 |
参考文献
[1]藤本,斯科特,赫尔克·范霍夫和大卫·梅格。在行动者-批评家方法中寻址函数逼近误差。ArXiv:1802.09477 [Cs, Stat]2018年10月22日。https://arxiv.org/abs/1802.09477.