深度Q网络(DQN)将Q学习与深度神经网络 (neural network),以及经验回放和目标网络等技术结合,使智能体能够在高维状态空间中高效学习。然而,DQN中使用的标准Q学习更新可能会遇到一个主要问题:Q值过高估计。
过高估计偏差问题
回顾标准DQN中,针对转移(St,At,Rt+1,St+1)的目标值(Yt)计算:
YtDQN=Rt+1+γa′maxQ(St+1,a′;θt−)
这里,θt−代表目标网络的参数 (parameter)。在线网络参数θt的更新旨在最小化Q(St,At;θt)与此目标YtDQN之间的损失。
问题在于目标计算中的maxa′操作。目标网络估算的Q值(Q(St+1,a′;θt−))本身是对真实动作值的带有噪声的近似。当我们从这些带有噪声的估计中取最大值时,我们更有可能选择一个被高估的值,而不是一个被低估的值。设想有几个动作,它们的真实值相近;由于噪声,有些估计会高于其他估计。max操作符将持续选择这些较高、可能被高估的值。这种系统性的正偏差会在学习过程中传播,导致过于乐观的值估计、训练期间的不稳定性以及潜在的次优策略。
使用双重DQN分离选择与评估
双重深度Q网络(DDQN),由Hado van Hasselt, Julià Ghesu, Matej Horgan, Maurice Wiering和David Silver提出,通过在计算目标时,将最优动作的选择与该动作值的评估分离开来,直接解决了这个过高估计问题。
DDQN不使用目标网络θt−同时进行最大化动作的选择和Q值的评估,而是使用在线网络θt来为下一个状态St+1选择最优动作,然后使用目标网络θt−来评估该特定所选动作的Q值。
DDQN中的目标值计算变为:
YtDDQN=Rt+1+γQ(St+1,arga′maxQ(St+1,a′;θt);θt−)
让我们分解一下:
- 动作选择: 首先,我们使用当前在线网络Q(St+1,a′;θt)来找到它认为在下一个状态St+1中能使Q值最大化的动作a∗。这便是argmaxa′Q(St+1,a′;θt)部分。
- 动作评估: 然后,我们不直接使用可能被高估的值Q(St+1,a∗;θt−)(DQN会通过对目标网络值取最大值来隐式执行),而是使用目标网络Q(.;θt−)来获取在线网络选择的那个特定动作 a∗的Q值估计。这便是Q(St+1,a∗;θt−)部分,其中a∗是步骤1中找到的动作。
标准DQN和双重DQN(DDQN)中目标值计算流程的比较。DDQN使用在线网络进行动作选择(argmax),并使用目标网络评估所选动作的值。
为什么这有帮助?
在线网络(θt)和目标网络(θt−)是不同的参数 (parameter)集(目标网络通常是在线网络的定期更新副本)。虽然两个网络都可能对某些动作存在噪声和潜在的过高估计,但两个网络同时高估同一次优动作值的可能性较小。
如果在线网络选择动作a∗是因为其估计Q(St+1,a∗;θt)当前被高估,那么目标网络对该同一动作的估计Q(St+1,a∗;θt−)可能更接近真实值(或者至少,高估程度较轻)。通过使用目标网络对在线网络所选动作的值,DDQN减少了将最大可能过高估计传播到目标值Yt中的机会。这会带来更保守和更准确的值估计。
实现与优势
如果你已经有一个DQN实现,那么DDQN的实现非常直接。唯一需要的更改是修改训练循环中目标值Yt的计算方式。你仍然需要经验回放以及独立的在线网络和目标网络。
DDQN的主要优势是:
- 过高估计减少: 与标准DQN相比,它明显地带来更低(且通常更准确)的Q值估计。
- 稳定性提升: 通过减少过高估计偏差,训练通常变得更加稳定。
- 性能更好: 在许多环境中,DDQN比标准DQN取得了更好的最终策略表现。
因为修改简单,并且优势在许多领域都显著且一致,DDQN被认为是原始DQN算法的一种标准改进,并常被用作默认选择或基线。它代表了完善基于值的方法在深度强化学习 (reinforcement learning)中的重要一步。