【问题标题】:How Double QN works?双 QN 是如何工作的?
【发布时间】:2021-01-16 04:20:20
【问题描述】:

双QN背后的想法是什么?

用于计算 Q 值以更新在线网络的贝尔曼方程遵循以下等式:

value = reward + discount_factor * target_network.predict(next_state)[argmax(online_network.predict(next_state))]

原始DQN中用于计算Q值更新的贝尔曼方程为:

value = reward + discount_factor * max(target_network.predict(next_state))

但是用于评估动作的目标网络是使用权重更新的 online_network 的值和馈送到目标值的基本都是旧的 q 值的动作。

任何想法如何根据第一个网络的权重添加另一个网络有帮助?

【问题讨论】:

  • Artificial Intelligence Stack Exchange 可能是提出与强化学习相关的理论问题的更好地方,所以我建议你在那里问你的问题(尽管我认为那里已经被问过了)。如果你在那里问,请从这里删除(以避免交叉发布,这通常是不鼓励的)。

标签: double reinforcement-learning dqn


【解决方案1】:

我真的很喜欢这里的解释: https://becominghuman.ai/beat-atari-with-deep-reinforcement-learning-part-2-dqn-improvements-d3563f665a2c

“这实际上很简单:你可能还记得在上一篇文章中我们试图优化定义如下的 Q 函数:

Q(s, a) = r + γ maxₐ’(Q(s’, a’))

因为这个定义是递归的(Q 值取决于其他 Q 值),所以在 Q 学习中,我们最终会训练一个网络来预测它自己的输出,正如我们上次指出的那样。

问题当然是在每一个 minibatch 的训练中,我们都在改变 Q(s, a) 和 Q(s', a'),换句话说,我们越来越接近我们的目标,但同时也移动了我们的目标。目标!这会使我们的网络更难收敛。

因此看起来我们应该改用固定目标以避免网络“追逐自己的尾巴”的问题,但这当然是不可能的,因为目标 Q 函数应该随着我们越来越好火车。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2011-02-14
    • 2021-12-13
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2015-06-01
    相关资源
    最近更新 更多