DQN:经验回放与目标网络

02-无模型价值方法 核心 约 30 分钟 #DQN#经验回放#目标网络#Atari 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),关键结论建议对照 Mnih et al. 2015 论文复核。

一句话定义

DQN(2013/2015)把 Q-Learning 的表格换成深度卷积网络,用两大工程支柱稳住训练:经验回放(历史转移存池随机抽样,打破时间相关、复用样本)与目标网络(用滞后的参数副本算自举目标,固定移动目标),在 49 个 Atari 游戏上达到人类水平——深度 RL 元年。

为什么重要

DQN 是"深度 × 强化学习"的合流点:它证明了原始像素可以端到端学出价值,也暴露了深度 RL 的全部工程病灶(不稳定、超参敏感、复现难)。此后所有价值方法(kp-011)都是对 DQN 的修补,所有深度 RL 工程纪律(kp-028/029)都由它奠基。面试与研究的共同必考点。

前置知识

kp-008(Q-Learning)、kp-009(off-policy 与回放的合法性)、CNN 基础。

核心概念

  • 函数化 Q:网络 $\hat q(s,a;\theta)$(输入状态,输出全部动作的 Q 值——单头高效)替代 Q 表格。
  • 经验回放池:转移 $(s, a, r, s', d)$ 存入大池(Atari 常用 100 万条),训练时随机小批量抽样。
  • 目标网络:参数 $\theta^-$ 是在线网络的周期性拷贝(每 C 步硬同步,或软更新 $\theta^- \leftarrow \tau\theta + (1-\tau)\theta^-$),目标 $y = r + \gamma(1-d)\max_{a'}\hat q(s',a';\theta^-)$。
  • 损失:$L(\theta) = \mathbb{E}_{(s,a,r,s',d)\sim D}\left[(y - \hat q(s,a;\theta))^2\right]$,对 θ 求梯度。
  • ε-greedy 衰减:ε 从 1.0 → 0.1,前 100 万帧线性衰减(kp-006)。

原理与机制

为什么必须回放:① 相邻帧高度相关(本局连续画面几乎一样),iid 假设被打破,SGD 崩坏——随机抽样打散相关性;② 数据用一次就丢太浪费——池子反复抽样提升利用率;这两条都依赖 Q-Learning 的 off-policy 性质(kp-009)。副产品:池中混合多时期数据隐式平滑了分布。

为什么必须目标网络:损失的两端(预测 $\hat q(s,a;\theta)$ 与目标 $r+\gamma\max\hat q(s',a';\theta)$)都依赖 θ——"追逐移动目标",梯度会自激振荡甚至发散(狗追自己尾巴)。目标网络把目标参数冻结成慢速副本,短窗口内目标近似固定,回归问题稳定可解。它是深度 RL 后续所有算法的标配组件(DDPG/TD3/SAC 全有,kp-018/019)。

终止处理的细节(高频 bug):目标 $y = r + \gamma(1-d)\max_{a'}\hat q(s',a')$ 中的终止标志 d——终止状态无未来,若忘记乘 (1−d),会把终止帧后处理的垃圾状态喂进 max,价值被系统性高估,训练必然崩。

Deepmind 版本细节:帧堆叠 4(部分解决部分可观测)、帧跳 4(action repeat)、reward clip ±1(统一奖励尺度)、RMSProp——每一条都是复现的关键(kp-029 的清单源头)。

图示

                  ┌────目标网络 θ⁻ (每 C 步同步/软更新)────┐
loss = ( r + γ(1-d)·max_a' Q(s',a';θ⁻)  −  Q(s,a;θ) )²
                   └────目标(慢)────┘   └预测(快)┘
回放池 D: (s,a,r,s',d)×10⁶ ←交互; 训练: 从 D 随机 mini-batch

直观类比

DQN = 让一个学生做"看画面猜未来收益"的回归题:题库(回放池)攒着反复刷(复用+打散相关性),参考答案由一位"动作迟缓的助教"(目标网络)批——答案慢半拍才不至于学生与助教互相带偏。

实例或案例

  • Atari 49 游戏:同一超参 + 像素输入超过专业测试员平均——泛化性的第一次大规模证明(kp-031)。
  • 教学复现:CartPole 上几百行 PyTorch 实现 DQN,观察"去掉目标网络/回放后训练曲线爆炸"是最深刻的一课。

常见误区

  • 误区一:"目标网络可有可无,效果差不多"。小任务上可能看不出,稍复杂环境立即震荡;它是"让贝尔曼算子近似固定"的关键装置。
  • 误区二:"回放池越大越好"。过大导致数据陈旧、行为策略与新策略差距过大(off-policy 程度过深),反而变慢;池容量是超参不是越多越好。
  • 误区三:"DQN 收敛后就万事大吉"。DQN 系统性高估 Q 值(max 算子的正向偏差被自举放大)——这正是 Double DQN 的靶子(kp-011),评估 Q 值曲线时应留意。

与其他知识点的关系

  • kp-008:损失就是 Q-Learning。
  • kp-009:回放的合法性来源。
  • kp-011:Double/Dueling/Prioritized 是三大修补方向。
  • kp-012:DQN 的不稳定性即"致命三角"的实证。
  • kp-031:Atari 基准与排行榜。

自测题

  1. 经验回放解决哪两个问题?为什么合法?

答:打散时间相关性(满足 SGD iid 假设)+ 提升样本利用率;合法因为 Q-Learning 目标是贪心 max,与数据产生策略无关(off-policy)。

  1. 目标网络的必要性?两种同步方式?

答:损失两端都含 θ 会形成"追移动目标"的自激;目标网络冻结目标端。同步可硬拷贝(每 C 步)或软更新(τ 小系数插值)。

  1. 终止标志 d 在目标式里的作用?漏掉会怎样?

答:$(1-d)$ 屏蔽终止状态的未来价值;漏掉会把终止后的无效状态算进 max,系统性高估 Q,训练崩坏。

延伸阅读

  • Mnih 等, "Human-level control through deep reinforcement learning"(Nature 2015);早期版 arXiv 1312.5602(2013)。
  • David Silver 课程 Lecture 6。
  • OpenAI Spinning Up 的 DQN 实现注释(逐行工程细节)。