主要内容

双延迟深度确定性策略梯度代理

双延迟深度确定性策略梯度(TD3)算法是一种无模型、在线、非策略的强化学习方法。TD3智能体是一种行为-批评强化学习智能体,它会寻找一种优化策略,使预期累积长期奖励最大化。

有关不同类型的强化学习代理的更多信息,请参见强化学习代理

TD3算法是DDPG算法的扩展。DDPG代理可能会高估价值函数,从而产生次优策略。为了减少值函数高估,TD3算法对DDPG算法进行了如下修改。

  1. TD3代理学习两个q值函数,并在策略更新期间使用最小值函数估计。

  2. TD3代理更新策略和目标的频率低于Q函数。

  3. 当更新策略时,TD3代理将噪声添加到目标操作中,这使得策略不太可能利用高q值估计的操作。

您可以使用TD3代理来实现以下训练算法之一,具体取决于您指定的批评数量。

  • TD3 -用两个q值函数训练agent。该算法实现了上述所有三种修改。

  • 延迟DDPG——用单个q值函数训练agent。该算法训练具有目标策略平滑和延迟策略和目标更新的DDPG代理。

TD3智能体可以在具有以下观察和行动空间的环境中进行训练。

观察太空 行动空间
连续的还是离散的 连续

TD3代理人使用以下演员和评论家。

批评人士 演员

一个或多个q值函数批评年代一个),您将使用rlQValueFunction

确定性政策参与者π年代),您将使用rlContinuousDeterministicActor

训练期间,TD3特工:

  • 在学习过程中的每个时间步更新演员和评论家属性。

  • 使用循环经验缓冲区存储过去的经验。代理使用从缓冲区中随机抽取的一小批经验来更新演员和评论家。

  • 在每个训练步骤中使用随机噪声模型对策略选择的动作进行扰动。

演员和评论家功能

为了估计策略和值函数,TD3代理维护以下函数逼近器:

  • 确定的演员π年代θ)——演员,带有参数θ需要观察年代并返回相应的行动,使长期回报最大化。

  • 目标的演员πt年代θt) -为了提高优化的稳定性,代理会定期更新目标角色参数θt使用最新的参与者参数值。

  • 一两个q值批评者k年代一个ϕk) -批评家,每个人都有不同的参数ϕk,进行观察年代和行动一个作为输入并返回相应的长期回报期望。

  • 有一两个目标是批评者tk年代一个ϕtk-为了提高优化的稳定性,代理会定期更新目标批评参数ϕtk使用最新的相应批评参数值。目标批评者的数量与批评者的数量相匹配。

这两个π年代θ),πt年代θt)具有相同的结构和参数化。

对于每个评论家,k年代一个ϕk),tk年代一个ϕtk)具有相同的结构和参数化。

当使用两个批评家时,1年代一个ϕ1),2年代一个ϕ2),每个评论家都可以有不同的结构,尽管当评论家具有相同的结构时,TD3效果最好。当批评家具有相同的结构时,他们必须具有不同的初始参数值。

有关为函数近似创建演员和评论家的更多信息,请参见创建策略和价值功能

在训练过程中,智能体调整参数值θ.训练后,参数保持在它们的调优值,训练后的actor函数逼近器存储在π年代)。

代理创建

您可以在MATLAB中创建和训练TD3代理®命令行或使用强化学习设计师创建代理的更多信息强化学习设计师,请参阅使用强化学习设计器创建代理

在命令行中,您可以根据来自环境的观察和操作规范,创建具有默认参与者和评论家的TD3代理。为此,执行以下步骤。

  1. 为您的环境创建观察规范。如果已经有了环境接口对象,可以使用getObservationInfo

  2. 为您的环境创建操作规范。如果已经有了环境接口对象,可以使用getActionInfo

  3. 如果需要,指定每个可学习层中的神经元数量或是否使用LSTM层。为此,使用创建代理初始化选项对象rlAgentInitializationOptions

  4. 选项指定代理选项rlTD3AgentOptions对象。

  5. 创建代理rlTD3Agent对象。

或者,您可以创建演员和评论家,并使用这些对象来创建代理。在这种情况下,确保演员和评论家的输入和输出维度与环境的相应动作和观察规范相匹配。

  1. 创建一个角色rlContinuousDeterministicActor对象。

  2. 创建一个或两个评论家使用rlQValueFunction对象。

  3. 指定代理选项rlTD3AgentOptions对象。

  4. 创建代理rlTD3Agent对象。

有关为函数近似创建演员和评论家的更多信息,请参见创建策略和价值功能

训练算法

TD3代理使用以下训练算法,在每个时间步骤中更新他们的演员和评论家模型。要配置训练算法,请使用参数指定选项rlDDPGAgentOptions对象。在这里,K= 2批评者的数量是多少k是评论家指数。

  • 初始化每个批评家k年代一个ϕk),包含随机参数值ϕk,用相同的随机参数值初始化每个目标批评家: ϕ t k = ϕ k

  • 初始化角色π年代θ),包含随机参数值θ,并使用相同的参数值初始化目标actor: θ t = θ

  • 对于每个训练时间步:

    1. 根据目前的观察年代,选择动作一个=π年代θ) +N,在那里N是来自噪声模型的随机噪声。要配置噪声模型,请使用ExplorationModel选择。

    2. 执行动作一个.观察奖励R下一个观察年代

    3. 储存经验(年代一个R年代)在经验缓冲中。

    4. 随机抽取一小批经验(年代一个R年代)从经验缓冲。指定,使用MiniBatchSize选择。

    5. 如果年代是终端状态、设定价值功能的目标吗yR.否则,设置为

      y = R + γ * 最小值 k t k 年代 剪辑 π t 年代 θ t + ε ϕ t k

      价值函数目标是经验奖励的总和R以及从评论家那里获得的最低折扣未来奖励。来指定贴现因子γ,使用DiscountFactor选择。

      为了计算累积奖励,智能体首先通过传递下一个观察值来计算下一个动作年代从采样经验到目标参与者。然后,代理添加噪声ε到计算操作TargetPolicySmoothModel,并根据噪声上限和下限剪辑动作。代理通过将下一个动作传递给目标评论家来获得累积奖励。

    6. 在每次训练步骤中,通过最小化损失来更新每个批评家的参数lk在所有的抽样体验中。

      l k = 1 = 1 y k 年代 一个 ϕ k 2

    7. 每一个D1步骤,使用以下采样策略梯度更新参与者参数,以最大化预期折扣奖励。设置D1,使用PolicyUpdateFrequency选择。

      θ J 1 = 1 G 一个 G π G 一个 = 一个 最小值 k k 年代 一个 ϕ 在哪里 一个 = π 年代 θ G π = θ π 年代 θ

      在这里,G人工智能最小评论家输出相对于动作的梯度是由演员网络计算的吗Gπ我是参与者输出相对于参与者参数的梯度。对两个梯度进行观测评估年代

    8. 每一个D2步骤,根据目标更新方法更新目标参与者和评论家。指定D2,使用TargetUpdateFrequency选择。有关更多信息,请参见目标更新方法

为了简单起见,该算法中的演员和评论家更新使用基本随机梯度下降进行梯度更新。类中指定的优化器是实际的梯度更新方法rlOptimizerOptions对象分配给rlCriticOptimizerOptions财产。

目标更新方法

TD3代理使用以下目标更新方法之一更新其目标参与者和批评家参数。

  • 平滑-使用平滑因子在每个时间步更新目标参数τ.要指定平滑因子,使用TargetSmoothFactor选择。

    ϕ t k = τ ϕ k + 1 τ ϕ t k 评论家参数 θ t = τ θ + 1 τ θ t 演员参数

  • 周期-不平滑地定期更新目标参数(TargetSmoothFactor = 1)。要指定更新周期,请使用TargetUpdateFrequency参数。

    ϕ t k = ϕ k θ t = θ

  • 周期性的平滑—定期平滑更新目标参数。

要配置目标更新方法,请创建rlTD3AgentOptions对象,并设置TargetUpdateFrequencyTargetSmoothFactor参数如下表所示。

更新方法 TargetUpdateFrequency TargetSmoothFactor
平滑(默认) 1 不到1
周期 大于1 1
周期性的平滑 大于1 不到1

参考文献

[1]藤本,斯科特,赫尔克·范·霍夫和大卫·梅格。“在行为-批评方法中寻址函数近似误差”。[c]中国农业大学学报(自然科学版), 2018年10月22日。https://arxiv.org/abs/1802.09477

另请参阅

|

相关的话题