Double QN如何运作?

时间:2020-07-10 07:24:34

标签: double reinforcement-learning dqn

双重QN背后的想法是什么?

用于计算Q值以更新在线网络的Bellman方程遵循以下方程:

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

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

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

,但是评估行动的目标网络是使用 并且将online_network的值和馈入目标值基本上是旧q动作的值。

有什么想法基于第一个网络的权重添加另一个网络有什么帮助?

1 个答案:

答案 0 :(得分:0)

我真的很喜欢这里的解释: 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-learning 中,我们最终会训练一个网络来预测它自己的输出,正如我们上次指出的那样。

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

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

相关问题