主要内容

深度Q-Network代理商

Deep Q-Network(DQN)算法是一种无模型,在线,禁止策略强化学习方法。DQN代理是一个基于价值的强化学习代理,可以训练批准批评奖励或未来奖励。DQN是Q-Learning的变种。有关Q-Learning的更多信息,请参阅Q学习代理

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

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

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

培训期间,代理方:

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

  • 使用epsilon-greedy探索行动空间。在每个控制间隔中,代理要么选择一个有概率的随机动作ϵ或根据概率为1-的值函数贪婪地选择动作ϵ。这种贪婪的行为是价值函数最大的行为。

  • 使用循环体验缓冲区存储过去的经验。代理根据从缓冲区随机采样的迷你批次的体验更新批评者。

批评功能

要估计值函数,DQN代理维护两个功能近似器:

  • 评论家问:S.一个) - 评论家采取观察S.和行动一个作为输入和返回相应的长期回报期望。

  • 目标评论家问的S.一个) - 为了提高优化的稳定性,代理将根据最新的批评参数值定期更新目标批评。

这两个问:S.一个)和问的S.一个)具有相同的结构和参数化。

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

培训完成后,培训的值函数近似器存储在评论家中问:S.一个)。

代理创作

您可以根据来自环境的观察和操作规范创建具有批评者表示的DQN代理。为此,请执行以下步骤。

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

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

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

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

  5. 使用一个创建代理rldqnagent.对象。

或者,您可以创建Actor和批评批读表示,并使用这些表示来创建代理。在这种情况下,确保演员和批评者表示的输入和输出尺寸与环境的相应动作和观察规范匹配。

  1. 使用一个批评评论家rlqvalueerepresentation对象。

  2. 使用一个指定代理选项rlDQNAgentOptions对象。

  3. 使用一个创建代理rldqnagent.对象。

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

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

培训算法

DQN代理使用以下培训算法,在每个训练算法中,它们每次都会更新他们的批评模型。要配置培训算法,请使用arlDQNAgentOptions对象。

  • 初始化评论家问:S.一个)随机参数值θ问:,并以相同的值初始化目标批读: θ 问: ' = θ 问:

  • 对于每个培训时间步骤:

    1. 目前的观察S.,选择一个随机动作一个有概率ϵ。否则,选择critical value函数最大的操作。

      一个 = arg 马克斯 一个 问: S. 一个 | θ 问:

      指定ϵ及其衰减率,使用epsilongredyexpliation.选项。

    2. 执行动作一个。观察奖励R.其次观察S'

    3. 存储体验(S.一个R.S')在经验缓冲区中。

    4. 随机抽取一小批m经验(S.一世一个一世R.一世S'一世)从经验缓冲。指定m, 使用MiniBatchSize选项。

    5. 如果S'一世是终端状态,设置值函数的目标吗y一世R.一世。否则,将它设置为

      一个 马克斯 = arg 马克斯 一个 ' 问: S. 一世 ' 一个 ' | θ 问: y 一世 = R. 一世 + γ 问: ' S. 一世 ' 一个 马克斯 | θ 问: ' DQN y 一世 = R. 一世 + γ 马克斯 一个 ' 问: ' S. 一世 ' 一个 ' | θ 问: ' DQN

      设置折现系数γ, 使用贴纸物选项。要使用双DQN,请设置UseDoubleDQN选项真正的

    6. 通过一步最大限度地减少损失更新评论家参数L.在所有抽样的经验中。

      L. = 1 m σ. 一世 = 1 m y 一世 - 问: S. 一世 一个 一世 | θ 问: 2

    7. 根据目标更新方法更新目标临界参数,有关更多信息,请参见目标更新方法

    8. 更新概率阈值ϵ参数中指定的衰减率选择随机动作epsilongredyexpliation.选项。

目标更新方法

DQN代理使用以下目标更新方法之一更新其目标关键参数。

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

    θ 问: ' = τ θ 问: + 1 - τ θ 问: '

  • 定期-定期更新目标参数而不进行平滑(targetsmoothfactor = 1)。要指定更新期间,请使用TargetupdateFrequency.参数。

  • 周期性的平滑—通过平滑周期性地更新目标参数。

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

更新方法 TargetupdateFrequency. targetsmoothfactor.
平滑(默认) 1 少于1
定期 比...更棒1 1
周期性的平滑 比...更棒1 少于1

参考文献

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

也可以看看

|

相关的话题