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

人工智能 强化学习 深度学习 q学习 dqn 目标网络
2021-11-07 20:39:08

我正在经历这个DQN 的实现,我看到在第 124 行和第 125 行已经初始化了两个不同的 Q 网络。根据我的理解,我认为第一个网络预测适当的动作,第二个网络预测目标 Q 值以找到贝尔曼误差。

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

1个回答

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

它对计算时间没有实际影响,只是略有增加(由于两个网络使用了额外的内存)。我想你可以缓存目标网络的结果,但对于大多数环境来说这可能不值得,而且我还没有看到这样做的实现。

我错过了什么吗?

这与使用函数逼近(即神经网络)时 Q 学习算法的稳定性有关。使用一个单独的目标网络,每隔这么多步骤更新一个最新学习参数的副本,有助于防止失控偏差在数值上控制系统,导致估计的 Q 值发散。

想象一个数据点(在s,a,r,s) 导致当前较差的高估q(s,a)变得更糟。或许s,a甚至还没有被访问过,或者值r到目前为止看到的高于平均水平,只是偶然。如果一个样本(s,a)在经验回放中出现多次,每次都会变得更糟,因为更新到q(s,a)基于TD目标r+maxaq(s,a). 修复目标网络限制了这种高估可能造成的损害,让学习网络有时间收敛并失去更多的初始偏差。

在这方面,使用单独的目标网络与体验回放的目的非常相似。它稳定了一个算法,否则会出现收敛问题。

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