0

双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 值。

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

4

1 回答 1

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 函数应该会越来越好。”

于 2021-01-15T20:20:20.687 回答