主要内容

深Q-Network代理

深度q -网络(DQN)算法是一种无模型、在线、离线的强化学习方法。DQN代理是一种基于价值的强化学习代理,它训练评论家估计回报或未来回报。DQN是Q-learning的变体。有关Q-learning的更多信息,请参见q学习的代理

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

DQN代理可以在以下观察和行动空间的环境中进行训练。

观察太空 行动空间
连续或离散 离散

DQN代理使用以下批评表示。

评论家 演员

核反应能量函数评论家问(,),您可以使用它来创建rlQValueRepresentation

DQN代理不使用参与者。

培训期间,代理人:

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

  • 利用贪婪探索探索动作空间。在每个控制区间内,代理要么有概率地选择一个随机动作ϵ或者以概率1-的值函数贪婪地选择一个动作ϵ.这个贪婪动作是值函数最大的动作。

  • 使用循环经验缓冲区存储过去的经验。代理根据从缓冲区中随机抽样的一小批体验更新评论家。

评论家函数

为了估计值函数,DQN代理保持两个函数逼近器:

  • 评论家年代一个) -评论家进行观察年代和行动一个作为输入和返回相应的长期回报预期。

  • 目标评论家问的年代一个—为了提高优化的稳定性,代理会根据最新的临界参数值定期更新目标临界。

这两个年代一个),问的年代一个)具有相同的结构和参数化。

有关创建值函数近似批评的更多信息,请参见创建策略和值函数表示

训练完成后,将训练后的值函数逼近器存储在critical中年代一个).

代理创建

您可以基于环境中的观察和操作规范创建具有评论家表示的DQN代理。请执行以下步骤。

  1. 为您的环境创建观察规范。如果您已经有一个环境接口对象,您可以使用以下方法获得这些规范getObservationInfo

  2. 为您的环境创建操作规范。如果您已经有一个环境接口对象,您可以使用以下方法获得这些规范getActionInfo

  3. 如果需要,指定每个可学习层的神经元数,或者是否使用LSTM层。为此,使用rlAgentInitializationOptions

  4. 如果需要,使用rlDQNAgentOptions对象。

  5. 使用rlDQNAgent对象。

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

  1. 使用rlQValueRepresentation对象。

  2. 使用rlDQNAgentOptions对象。

  3. 使用rlDQNAgent对象。

DQN代理支持使用递归金宝app深度神经网络作为函数逼近器的批评。

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

训练算法

DQN代理使用以下训练算法,其中它们在每个时间步更新其批评模型。要配置训练算法,请使用rlDQNAgentOptions对象。

  • 初始化批评年代一个),参数值是随机的θ,并使用相同的值初始化目标批评家: θ θ

  • 对于每个培训时间步:

    1. 对于当前的观察年代,选择一个随机动作一个的概率ϵ.否则,选择批评值函数最大的动作。

      一个 参数 马克斯 一个 年代 一个 | θ

      指定ϵ它的衰变速率,用EpsilonGreedyExploration选择。

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

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

    4. 随机取样一小批经验(年代一个R年代)。指定,可以使用MiniBatchSize选择。

    5. 如果年代是否有终端状态,设置值函数目标yR.否则,设置为

      一个 马克斯 参数 马克斯 一个 年代 一个 | θ y R + γ 年代 一个 马克斯 | θ DQN y R + γ 马克斯 一个 年代 一个 | θ DQN

      设置贴现因子γ,可以使用DiscountFactor选择。要使用双DQN,请设置UseDoubleDQN选项真正的

    6. 通过一步最小化损失来更新紧急参数l在所有的抽样体验中。

      l 1 1 y 年代 一个 | θ 2

    7. 根据目标更新方法更新目标批评参数有关详细信息,请参见目标更新方法

    8. 更新概率阈值ϵ方法中指定的衰减速率选择随机作用EpsilonGreedyExploration选择。

目标更新方法

DQN代理使用以下目标更新方法之一更新它们的目标批评参数。

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

    θ τ θ + 1 τ θ

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

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

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

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

参考文献

[1] Mnih、Volodymyr、Koray Kavukcuoglu、David Silver、Alex Graves、Ioannis Antonoglou、Daan Wierstra和Martin Riedmiller。“用深度强化学习玩雅达利。”ArXiv: 1312.5602 (Cs)2013年12月19日https://arxiv.org/abs/1312.5602

另请参阅

|

相关的话题