返回专辑
·Johan·4 分钟阅读

Double DQN:减轻 max 过估计

标准 DQN 用 target 网在 \(s'\) 上 argmax 再取值,系统性高估;Double DQN 用 online 网选动作、target 网估值。

Double DQN:减轻 max 过估计

1. Q 均值爬升,eval 更差

Vanilla DQN target 选动作和估值都用 target 网(或同一套参数):

噪声 Q 的 max 偏向高估。Q 曲面在 state 空间上呈现「尖刺」:少数 action 的 Q 远高于 rollout 实际 return。Policy 追逐尖刺,sim 里动作抖动或卡死。Q 均值爬得更快但 eval 更差——说明过估计在作祟。关闭 Double Q 时 Q 均值爬得更快但 eval 更差,开启后尖刺变钝,eval 更稳。

2. 机制:拆开选择与估值

Double DQN 拆开:

Online 网选动作,target 网估值。实现成本低,SB3 DQN 默认 double_q=True。在 target 计算里,把 argmax 改到 online net、取值改到 target net,通常就多了几行。Double DQN 不解决 distributional shift 和 deadly triad 全部问题,只是去掉 max 算子里最显眼的那层 optimistic bias。

3. 与 Clipped Double Q 的关系

TD3/SAC 对连续动作取 min(Q1, Q2),是同一类 optimistic bias 问题在连续空间的补丁。Double DQN 是离散 Q 的第一层 fix;还可加 Dueling、PER。后面还可以叠 Dueling architecture,把 V(s) 和 advantage 拆开估。Board games 非法 action 未 mask 时 max Q 还会选非法 action——Double DQN 不解决 mask 问题,mask 要单独做。Eval greedy 时多个 equal Q 的 tie-breaking 随机性会导致行为不稳定。

4. 失败模式与监控

只开 Double DQN 但 reward scale 仍过大,Q 仍发散。Target 更新频率不当。过估计减轻后可能略保守,收敛变慢——通常可接受。Monitor:Q1/Q2 gap 长期很大可能 twin 训练不稳;gap 零则失去 min 意义。Target update τ 与 Double Q 独立,两项都写 config。Paper 复现时 Double Q 是默认;baseline 故意关 Double Q 要在表格脚注。

5. 案例:Q 尖刺

某离散控制任务,关闭 Double Q 时 Q 均值爬得更快但 eval 更差;开启后尖刺变钝,eval 更稳。对比 DQN vs Double DQN 同一 env 的 Q 均值曲线,Double 应更平稳。TD3 的 twin Q + min 是连续版同一思路。Internal baseline 默认 Double Q on;ablation 才 off,避免 overestimation 污染对比。Overestimation 的肉眼症状:Q 曲面尖刺,policy 追逐尖刺。

6. 与 Dueling 和 board games

Double DQN 不解决 distributional shift 全部问题,只是去掉 max 算子里最显眼的那层 optimistic bias。Dueling 把 V(s) 和 advantage 拆开估。在 board games 等离散大 action space,若非法 action 未 mask,max Q 还会选非法 action——Double DQN 不解决非法 action 问题,mask 要单独做。Eval return 不应低于 vanilla 太多;若低很多查是否 under-explore。

Paper 复现时 Double Q 是默认;baseline 故意关 Double Q 要在表格脚注。Monitor:Q1/Q2 gap 长期很大可能 twin 训练不稳;gap 零则失去 min 意义。Target update τ 与 Double Q 独立,两项都写 config。Eval greedy 时多个 equal Q 的 tie-breaking 随机性会导致行为不稳定。Internal baseline 默认 Double Q on;ablation 才 off,避免 overestimation 污染对比。

7. 过估计的肉眼症状与连续空间类比

价值曲面在状态空间上呈现「尖刺」:少数动作的 Q 远高于实际 rollout 回报,策略追逐尖刺导致仿真里抖动或卡死。双重 Q 网络后尖刺变钝,评估更稳。连续控制里 TD3 的双 Q 取最小值是同一思路。棋类大动作空间若未掩码非法动作,取 max 仍可能选非法——双重 Q 不替代掩码。关闭双重 Q 做消融时要在论文脚注标明,避免过估计污染对比。目标网络更新频率与双重 Q 独立,两项都写进配置。

8. 验收

  • 对比 DQN vs Double DQN 同一 env 的 Q 均值曲线,Double 应更平稳。
  • Eval return 不应低于 vanilla 太多;若低很多查是否 under-explore。
  • 关闭 Double Q 时 Q 均值爬得更快但 eval 更差——说明过估计在作祟。
  • Target update τ 与 Double Q 独立,两项都写 config。
  • Board games 非法 action 须 mask,Double DQN 不替代 mask。

Double DQN 几乎免费的实现改动,去掉 max 算子里最显眼的那层 optimistic bias。Q 尖刺变钝,eval 更稳。Board games 非法 action 须 mask,Double DQN 不替代 mask;选动作与估值拆开是离散 Q 的第一层 fix。对比关闭双重 Q 时 Q 均值是否爬得更快但 eval 更差——若是,说明过估计在作祟。TD3 双 Q 取 min 是连续控制里的同一类补丁。Eval return 不应低于 vanilla 太多;若低很多查是否 under-explore。Paper 复现时 Double Q 是默认配置。

← 全部文章

johan's blog