为什么DQN需要两个不同的网络?


12

我正在研究DQN的实现,我发现在第124和125行上已经初始化了两个不同的Q网络。根据我的理解,我认为一个网络可以预测适当的操作,第二个网络可以预测目标Q值以查找Bellman误差。

为什么我们不能仅制作一个简单的网络来简单地预测Q值,并在两种情况下都使用它?我最好的猜测是这样做是为了减少计算时间,否则我们将不得不找出每个动作的q值,然后选择最佳动作。这是唯一原因吗?我想念什么吗?

Answers:


9

我最好的猜测是这样做是为了减少计算时间,否则我们将不得不找出每个动作的q值,然后选择最佳动作。

除了稍微增加(由于两个网络使用了额外的内存)之外,它对计算时间没有真正的影响。您可以缓存目标网络的结果,但是对于大多数环境而言,这可能不值得,而且我还没有看到实现此目标的实现。

我想念什么吗?

使用函数逼近(即神经网络)时,这与Q学习算法的稳定性有关。使用一个单独的目标网络,每隔很多步就用最新的学习参数进行更新,这有助于防止自举的失控偏差在数值上占主导地位,从而导致估计的Q值发散。

想象一下(处的S, A, R, S')数据点导致当前差的高估Q(S', A')而变得更糟。也许S', A'还没有访问过,或者R到目前为止,所看到的价值只是偶然地高于平均水平。如果(S,A)多次回放经验样本,则每次更新都会变得更糟,因为对的更新Q(S,A)基于R + max_a Q(S',a)。固定目标网络可以限制这种高估所造成的损害,从而使学习网络有时间收敛并失去更多的初始偏差。

在这方面,使用单独的目标网络具有非常相似的体验重放的目的。它稳定了否则会出现问题的算法。

也可以将DQN与“双重学习”结合起来解决一个单独的问题:最大化偏差。在这种情况下,您可能会看到具有4个神经网络的DQN实现。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.