为什么需要目标网络?

时间:2019-01-17 13:46:52

标签: deep-learning artificial-intelligence

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

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

使用bellman方程更新Q学习,并且通过以下步骤给出q学习更新的单个步骤:

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

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

  • 使用了经验重播缓冲区,这样我们就不会忘记过去的经验并取消关联提供的用于学习概率分布的数据集。

  • 这是我失败的地方。

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

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

但是我不知道它将如何解决?

1 个答案:

答案 0 :(得分:2)

  

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

Q学习和DQN之间的区别在于,您已经用函数逼近器替换了 exact 值函数。使用Q学习,您可以在每个时间步长精确地更新一个状态/操作值,而使用DQN,您可以更新许多状态/操作值,您可以理解。导致的问题是,您可能会影响您所处于的<非常>下一个状态的操作值,而不是保证它们在Q学习中保持稳定。

在使用标准深度网络(完全连接的相同大小的层的束)时,DQN基本上总是发生这种情况。您通常会看到的效果被称为“追逐自己的尾巴”,它可能会非常壮观。如果您使用这种网络(简单的而不是像素的)进行类似月球着陆的操作,并跟踪过去100场左右的滚动平均得分,您可能会看到得分有很好的上升趋势,那么所有突然之间,即使您的alpha值变小,它也会完全消失,重新开始做出糟糕的决定。无论您允许运行多长时间,此循环都会无休止地持续下去。

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


顺便说一句,DQN在这一点上实际上已经过时了,但是该论文的主题是导致最近几年RL爆炸的导火索。