DQN 进阶Advanced DQN
第 6 章的 DQN 会训练,但还不够好——过估计、低效采样、状态价值共享。本步骤把 Double / Dueling / Prioritized Replay 三个经典改进一次讲透,并在 CartPole 上同场对比。
DQN 进阶 · 交互演示
当前观看:基线 DQN 的 CartPole
四个算法(基线 / +Double / +优先回放 / +Dueling)同时训练、独立探索。下方按钮切换观看对象,学习曲线图始终展示四条曲线。
为什么学这步?
原始 DQN 有三处公认短板:max 运算造成 Q 值过估计(策略被高估的动作带偏)、均匀采样浪费经验、状态价值与动作优势耦合导致学习低效。Double DQN、Prioritized Replay、Dueling DQN 分别对症下药——它们至今仍是 DQN 家族的标准组件,理解三者是理解 DQN 变体(Rainbow 等)的起点。
下一步预告:值方法再强也要靠 argmax 间接出策略;下一章我们绕开 Q 值,用策略梯度直接学策略,并进入现代 RL 的 Actor-Critic / PPO。
📌 发生了什么
- Double DQN 用「主网络选动作、目标网络估值」打破过估计
- Prioritized Replay 按 |TD 误差| 加权采样,高误差经验被优先学习
- Dueling 把 Q 拆成 V(s) + A(s,a),状态价值跨动作共享
- 三者在学习曲线上各自带来可观测的独立贡献
⚠️ 常见陷阱
- 把 Double DQN 当成"两个独立网络"——其实主/目标网络是同一个网络的快慢两份
- 优先回放不重算优先级 → 采样偏置逐渐失真,需定期用新 |δ| 刷新
- 误以为改进越多越好——三者可叠加(Rainbow),但单看一条曲线分不清谁贡献了什么
✅ 本章小结
- 过估计源于 max 对噪声的乐观偏差,Double DQN 用解耦估值消除它
- 优先回放把算力花在"最值得学"的经验上
- Dueling 让价值估计更准、动作优势更聚焦
📐 Double DQN 与过估计
过估计的根源:max 是对含噪声估计的乐观偏差。若 Q 的估计带噪声 ε,则 E[max_a Q(s,a)] ≥ max_a E[Q(s,a)]。
原始 DQN 用目标网络同时完成"选动作"与"估值":max 会放大噪声中的正向误差,Q 值系统性虚高。
Double DQN 把两步解耦:主网络 θ 决定哪个动作最优,目标网络 θ⁻ 只负责给这个动作估值——动作选择与价值评估互不污染,过估计大幅下降。
Dueling:Q(s,a) = V(s) + A(s,a) − mean_a' A(s,a')。共享 V 让不同动作的价值估计相互受益;Prioritized Replay:采样概率 p_i ∝ |δ_i|^α,把梯度步集中在 TD 误差大的经验上。
🎛 三件套超参对比
每个改进各有一个关键旋钮,调错方向反而比基线更差。
| 超参 | 表现 | 结果 |
|---|---|---|
| Double DQN 目标网络同步间隔过短 | 目标随主网络漂移,去耦失效 | 过估计反弹 |
| 优先回放 α = 0 | 退化为均匀采样 | 无增益 |
| 优先回放 α ≈ 0.6 | 高误差经验占比适中 | 推荐 |
| Dueling 去掉 mean 项 | Q = V + A 有可辨识性退化 | 不稳定 |
💡 三者可叠加(Rainbow 同时使用),但单独看时,每个改进都应带来可归因的收益。
💻 Double DQN 核心循环
与 DQN 的唯一区别在目标值:用主网络选动作,用目标网络估值。
// 主网络 Q(s,a;θ) 与目标网络 Q(s,a;θ⁻)
function trainStep(batch) {
for (const { s, a, r, s2, done } of batch) {
if (done) { y = r; continue; }
// Double:主网络选最优动作
const bestA = argmax(predict(mainNet, s2));
// 目标网络只负责估值
y = r + gamma * predict(targetNet, s2)[bestA];
// 掩码 MSE:仅更新被选动作
const pred = predict(mainNet, s);
loss += (y - pred[a]) ** 2; // 只回传动作 a 的梯度
}
sgdStep(loss, mainNet); // 每 C 步同步 θ⁻ ← θ
}
📚 参考文献与延伸阅读
- van Hasselt, H. et al. (2016), Deep Reinforcement Learning with Double Q-learning, AAAI — Double DQN 原始论文
- Wang, Z. et al. (2016), Dueling Network Architectures for Deep Reinforcement Learning, ICML — Dueling 架构原始论文
- Schaul, T. et al. (2016), Prioritized Experience Replay, ICLR — 优先回放原始论文
- Wikipedia: Double Q-learning — 算法与变体总览
📝 课后练习
检验你的理解——答对为止