主要内容

深Q-Network代理

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

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

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

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

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

评论家 演员

核反应能量函数评论家年代一个),您可以使用rlQValueRepresentation

DQN代理不使用参与者。

培训期间,代理人:

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

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

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

评论家函数

为了估计值函数,DQN代理维护两个函数近似器:

  • 评论家年代一个|ϕ)——有参数的批评家ϕ需要观察年代和行动一个作为输入并返回相应的长期回报期望。

  • 目标评论家t年代一个|ϕt)—为了提高优化的稳定性,agent定期更新设置目标批评家参数ϕt给最新的批评家参数值。

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

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

当训练完成时,将训练的值函数近似器存储在批评家中年代一个).

代理创建

您可以在MATLAB中创建和培训DQN代理®命令行或使用强化学习设计应用程序。

有关使用强化学习设计,请参阅使用强化学习设计器创建代理

在命令行中,您可以创建一个DQN代理,该代理具有基于环境的观察和操作规范的批评表示。为此,请执行以下步骤。

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

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

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

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

  5. 使用rlDQNAgent对象。

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

  1. 创建一个批评家使用rlQValueRepresentation对象。

  2. 指定代理选项rlDQNAgentOptions对象。

  3. 使用rlDQNAgent对象。

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

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

训练算法

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

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

  • 对于每个训练时间步:

    1. 对于当前的观测年代,选择一个随机动作一个的概率ϵ.否则,选择批评家价值作用最大的行动。

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

      指定ϵ和它的衰减率,用EpsilonGreedyExploration选择。

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

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

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

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

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

      设置折扣率γ,可以使用DiscountFactor选择。要使用双DQN,请设置UseDoubleDQN选项真正的

    6. 通过一步最小化损失来更新批评家参数l所有抽样的经验。

      l 1 1 y 年代 一个 | ϕ 2

    7. 根据目标更新方法更新目标批评家参数更多信息,请参见目标更新方法

    8. 更新概率阈值ϵ用于选择一个基于你指定的衰减率的随机动作EpsilonGreedyExploration选择。

目标更新方法

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

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

    ϕ t τ ϕ + 1 τ ϕ t

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

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

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

更新方法 TargetUpdateFrequency TargetSmoothFactor
平滑(默认) 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

另请参阅

|

相关的话题