将Q学习更新直接应用于深度神经网络 (neural network)等非线性函数近似器可能会导致训练不稳定。主要问题源于时序差分(TD)误差计算中使用的目标值依赖于当前正在更新的相同网络参数 (parameter)。转换 (st,at,rt,st+1) 的标准Q学习更新目标是:
yt=rt+γa′maxQ(st+1,a′;θ)
损失函数 (loss function),通常是均方误差(MSE),将使用此目标 yt 和当前的Q值估计 Q(st,at;θ) 进行计算:
L(θ)=E[(yt−Q(st,at;θ))2]=E[(rt+γa′maxQ(st+1,a′;θ)−Q(st,at;θ))2]
请留意,参数 θ 同时出现在目标值计算(通过 maxa′Q(st+1,a′;θ))和正在更新的值(Q(st,at;θ))中。当我们计算梯度并更新 θ 时,目标 yt 也会发生变化。这种“移动目标”问题在训练过程中可能引起震荡甚至发散,因为网络试图追逐一个不断变化的目标。
目标网络解决方案
为了减轻这种不稳定性,DQN算法引入了目标网络的思想。这是一个独立的神经网络 (neural network),其架构与主Q网络(常被称为在线网络或策略网络)相同,但其参数 (parameter)会冻结一段时间。
我们用 θ 表示在线网络的参数,用 θ− 表示目标网络的参数。目标网络专门用于计算TD目标值。修改后的TD目标变为:
yt=rt+γa′maxQ(st+1,a′;θ−)
现在,损失函数 (loss function)计算如下:
L(θ)=E[(yt−Q(st,at;θ))2]=E[(rt+γa′maxQ(st+1,a′;θ−)−Q(st,at;θ))2]
重要的是,在在线网络参数 θ 的梯度计算和更新步骤中,目标计算中的参数 θ− 保持固定。在线网络 Q(s,a;θ) 基于目标网络 Q(s,a;θ−) 提供的稳定目标进行更新。
更新目标网络
目标网络的参数 (parameter) θ− 不能无限期地保持固定,否则目标值会变得过时,阻碍智能体学习到更好的Q值。DQN中的标准做法是定期将在线网络的参数复制到目标网络。
此更新每 C 训练步发生一次(其中 C 是一个超参数 (hyperparameter)):
θ−←θ每 C 步
在这些更新之间,θ− 保持不变,为在线网络在 C 步内的更新提供了稳定的目标。
图示:在线网络 (Q(s,a;θ)) 根据损失梯度进行更新,而目标网络 (Q(s′,a′;θ−)) 为损失计算提供稳定的目标 (yt)。目标网络的参数 (θ−) 通过复制在线网络的参数 (θ) 进行定期更新。
影响与考虑
使用目标网络明显提高了深度Q网络训练的稳定性。通过将目标计算与立即更新的参数 (parameter)解耦,它避免了“移动目标”问题可能造成的破坏性反馈循环。
目标网络更新频率 C 是一个关键的超参数 (hyperparameter)。
- 较小的 C: 目标网络更新更频繁,更快地整合新的Q值信息。然而,由于目标更频繁地移动,这会降低稳定性。
- 较大的 C: 目标网络更新频率较低,带来更高的稳定性。然而,学习速度可能会减慢,因为相对于快速变化的在线网络,目标值可能会明显过时(“陈旧”)。
在实际使用中,C 的典型值范围从数百到数万个更新步,具体取决于环境和特定算法配置。确定合适的值通常需要经验性调整。
软目标更新
除了周期性的“硬”复制之外,另一种方法是“软”更新,也称为Polyak平均。此方法在每个训练步骤中,将目标网络参数 (parameter)缓慢地更新到在线网络参数方向:
θ−←τθ+(1−τ)θ−
这里,τ 是一个小的常数(例如,τ=0.001 或 τ=0.005)。与周期性的硬更新相比,这种方法使得目标网络随时间变化更加平滑。虽然软更新最初在Deep Deterministic Policy Gradient (DDPG) 等连续控制算法中得到普及,但它们也可以与DQN的变体一起使用。
总之,目标网络是稳定深度Q学习的一项基本技术。通过使用主网络的定期更新副本生成TD目标,它们打破了导致不稳定的相关性,使得深度神经网络 (neural network)能够有效地训练以完成复杂的强化学习 (reinforcement learning)任务。