主要内容

深度Q网络代理

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

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

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

观测空间 动作空间
连续或离散 离散的

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

批评家 演员

核反应能量函数评论家Q(s,A.),您可以使用rlQValueRepresentation

DQN代理不使用参与者。

培训期间,代理人:

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

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

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

批评功能

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

  • 批评家Q(s,A.|ϕ)-批评家,带参数ϕ需要观察s和行动A.作为输入并返回相应的长期回报期望。

  • 目标评论家QT(s,A.|ϕT)-为了提高优化的稳定性,代理定期更新设置的目标参数ϕT给最新的批评家参数值。

这两个Q(s,A.)及QT(s,A.)具有相同的结构和参数化。

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

训练完成后,训练后的值函数逼近器存储在critic中Q(s,A.).

代理创建

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

有关使用创建代理的详细信息,请参见强化学习设计看见使用强化学习设计器创建代理

在命令行中,您可以根据环境中的观察和操作规范,创建具有批评家表示的DQN代理。

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

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

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

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

  5. 使用rlDQNAgent对象。

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

  1. 使用rlQValueRepresentation对象。

  2. 使用rlDQNAgentOptions对象。

  3. 使用rlDQNAgent对象。

DQN代理支持使用递归万博1manbetx深度神经网络作为函数近似器的批评者。

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

训练算法

DQN代理使用以下训练算法,在该算法中,他们在每个时间步更新其批评家模型rlDQNAgentOptions对象。

  • 初始化批评家Q(s,A.)具有随机参数值ϕ,并初始化目标批评家参数ϕT使用相同的值: ϕ T = ϕ

  • 对于每个培训时间步:

    1. 就目前的观察而言s,选择一个随机操作A.有可能ϵ.否则,选择批评家价值作用最大的行动。

      A. = arg 马克斯 A. Q ( s , A. | ϕ )

      指明ϵ和它的衰变率,使用epsilongreedexploration选择。

    2. 执行动作A..观察奖励R其次观察是的

    3. 存储体验(s,A.,R,是的)在经验缓冲区中。

    4. 随机取样一小批M经历(s,A.,R,是的)从经验缓冲区。指明M,使用MiniBatchSize选择。

    5. 如果是的是终端状态,设定值函数的目标吗YR。否则,请将其设置为

      A. 马克斯 = arg 马克斯 A. ' Q ( s ' , A. ' | ϕ ) Y = R + γ Q T ( s ' , A. 马克斯 ϕ T ) ( 双重的 DQN ) Y = R + γ 马克斯 A. ' Q T ( s ' , A. ' | ϕ T ) ( DQN )

      设置折扣率γ,使用折扣因素选项要使用双DQN,请设置UseDoubleDQN选项真正的

    6. 通过一步最小化损失来更新临界参数L所有抽样的经验。

      L = 1. M = 1. M ( Y Q ( s , A. | ϕ ) ) 2.

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

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

目标更新方法

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

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

    ϕ T = τ ϕ + ( 1. τ ) ϕ T

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

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

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

更新方法 TargetUpdateFrequency 目标平滑因子
平滑(默认) 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

另见

|

相关的话题