为什么需要目标网络?

tan*_*dem 19 artificial-intelligence deep-learning

我担心理解为什么 DQN 中需要目标网络?我正在阅读关于“通过深度强化学习进行人类级控制”的论文

我理解Q-learning。Q-learning 是基于价值的强化学习算法,它学习状态-动作之间的“最佳”概率分布,这将在一系列时间步长内最大化其长期折扣奖励。

Q-learning 使用 bellman 方程更新,q-learning 更新的单步由下式给出

Q(S, A) = Q(S, A) + $\alpha$[R_(t+1) + $\gamma$ (Q(s’,a;’) - Q(s,a)]
Run Code Online (Sandbox Code Playgroud)

其中 alpha 和 gamma 是学习和折扣因素。我可以理解强化学习算法会变得不稳定和发散。

  • 使用经验重放缓冲区,以便我们不会忘记过去的经验,并解相关提供的数据集以学习概率分布。

  • 这是我失败的地方。

  • 让我把论文中的段落分解到这里进行讨论
    • 对 $Q$ 的小幅更新可能会显着改变策略并因此改变数据分布这一事实——理解这一部分。Q-network 的周期性变化可能会导致不稳定和分布变化。例如,如果我们总是左转或类似的事情。
    • 以及动作值 (Q) 与目标值之间的相关性r + $gamma$ (argmax(Q(s’,a’))——这表示奖励 + gamma * 我对回报的预测,因为我采取了我认为当前状态下的最佳行动并从那时起遵循我的政策在。
    • 我们使用迭代更新将动作值 (Q) 调整为仅定期更新的目标值,从而减少与目标的相关性。

那么,总而言之,需要一个目标网络,因为网络在每个时间步都在不断变化,并且“目标值”在每个时间步都在更新?

但我不明白它是如何解决的?

Nic*_*sen 42

那么,总而言之,需要一个目标网络,因为网络在每个时间步都在不断变化,并且“目标值”在每个时间步都在更新?

Q-learning 和 DQN 之间的区别在于你用函数逼近器替换了精确值函数。使用 Q-learning,您在每个时间步只更新一个状态/动作值,而使用 DQN,您正在更新许多,这是您理解的。这导致的问题是您可以影响下一个状态的操作值,而不是像 Q-learning 那样保证它们稳定。

当使用标准深度网络(完全连接的相同大小的层)时,DQN 基本上会发生这种情况。您通常看到的效果被称为“灾难性遗忘”,它可能非常壮观。如果您正在使用这种网络(简单的网络,而不是像素网络)执行类似月球着陆器的操作,并跟踪过去 100 场左右的滚动平均分数,您可能会看到分数上升的不错曲线,那么所有突然间,即使你的 alpha 变小,它也完全失败了,又开始做出糟糕的决定。无论你让它运行多久,这个循环都会无休止地继续下去。

使用稳定的目标网络作为您的错误度量是对抗这种影响的一种方法。从概念上讲,这就像说,“我有一个如何玩好这个的想法,我会尝试一下,直到找到更好的东西”,而不是说“我要重新训练自己如何玩这个一举一动后整场比赛”。通过给您的网络更多的时间去考虑最近发生的,而不是更新的许多行动的所有时间,它希望找到你开始使用它进行操作之前,更稳健的模型。


顺便说一句,DQN 在这一点上基本上已经过时了,但那篇论文的主题是导致过去几年 RL 爆炸的导火索。

  • 这是我强烈推荐的播放列表,https://www.youtube.com/playlist?list=PLAdk-EyP1ND8MqJEJnSvaoUShrAWYe51U,第 3 讲专门介绍了 DQN,由您引用的论文的作者提供。 (2认同)
  • @Thirdwater一般来说,对于需要使用深度网络作为函数逼近器的问题来说,学习策略要快得多,而且现在有一些可以同时学习策略和价值的方法(例如演员批评家方法),可以更快地解决大多数问题。 (2认同)