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

Q-learning 与 deadly triad

表格 Q-learning 收敛有保证;加函数近似和 off-policy 后,max 与 bootstrap 叠加可能不稳定。

Q-learning 与 deadly triad

1. 表格收敛,神经网络发散

Q-learning 更新:

行为策略(ε-greedy)负责探索;目标策略是 greedy,故为 off-policy。小表格环境有收敛保证。换成深度 Q 网络:神经网络近似 Q,目标用 max over actions,叠加 函数近似、离策略、自举——Sutton & Barto 所称 deadly triad,不保证收敛。连续动作上硬用 naive Q-learning,Q 曲面很快出现尖峰,greedy action 在 sim 里抖动——MuJoCo 默认走 Actor-Critic 不是 plain DQN。

2. 与 SARSA 的取舍

SARSA 用实际采取的下一动作更新,同策略,通常更保守。Cliff walking:Q-learning 学 optimal 路径(贴悬崖),SARSA 学 safer 路径——部署若 exploration 不能关干净,SARSA 有时更保守。Q-learning 更激进,学 optimal Q 但行为策略仍在探索。Function approximation 后两者都不保证收敛,但 SARSA 的 on-policy 目标通常方差略低、过估计略少,代价是学 behavior policy 附近的 Q,不是 strict optimal Q。

3. 从表格到 DQN 的工程补丁

Gridworld 上打印 Q 表看收敛;换成 CartPole + SB3 DQN,Bellman 逻辑进 replay buffer。learning_starts 设几千步,让 buffer 先有 diversity 再更新,否则 early Q 在少数 state 上过拟合。实践靠 replay、target net、Double DQN 等补丁。Target network hard sync period 和 soft τ 二选一写 config;混用是 copy-paste bug。ε schedule 可视化进 experiment page;decay 过快是 DQN 不收敛常见原因之一。

4. 失败模式与 deadly triad

ε 衰减太快,策略过早 greedy 停在次优。学习率过大,Q 振荡。max 在噪声 Q 上系统性过估计(见 Double DQN)。done 处理错误导致 bootstrap 到终止态。Production discrete 用小 action space DQN 仍 viable;大 action 必须 mask 或 factorize。Deadly triad 不是抽象概念:函数近似换掉表格的收缩保证,off-policy 用旧数据,bootstrap 用不完整的 return。三者叠加,Q 可能发散或振荡。

5. 案例:Cliff walking

Cliff walking 类例子里 Q-learning 学 optimal 路径(贴悬崖),SARSA 学 safer 路径——部署若 exploration 不能关干净,SARSA 有时更保守。理解这一点,就不会问「为什么我的 Q-learning 策略更激进」。教新人 RL 时我先让手写 Q-table 在 4×4 grid 上收敛,再开 DQN;看到 TD backup 如何进代码,deadly triad 就不是抽象名词。SARSA 在 cliff walk 演示 on-policy 保守性。

6. 与 target network 和 max

Max operator 和 neural net 外推结合是 overestimation 根源之一。replay、target net、Double DQN 是工程补丁——理解 backup 从哪来,才知道该加 replay 还是换 AC。Target network hard sync period 和 soft τ 二选一写 config。Function approximation 后 Q-learning 和 SARSA 都不保证收敛。

Production discrete 用小 action space DQN 仍 viable;大 action 必须 mask 或 factorize。Max operator 和 neural net 外推结合是 overestimation 根源之一。SARSA 在 cliff walk 演示 on-policy 保守性。Function approximation 后 Q-learning 和 SARSA 都不保证收敛。Target network schedule 二选一写 config;混用两种 schedule 是 copy-paste bug。ε schedule 可视化进 experiment page;decay 过快是 DQN 不收敛常见原因之一。

7. 教学与工程之间的桥梁

教新人强化学习时,我先把四乘四网格上的 Q 表手写迭代到收敛,再开深度 Q 网络;看到时序差分备份如何进代码,致命三元组就不是抽象名词。悬崖行走例子里,Q 学习学贴悬崖的最优路径,SARSA 学更保守的路径——部署时若探索不能关干净,SARSA 有时更安全。表格情形有收敛保证,换成神经网络后要靠经验回放、目标网络、双重 Q 网络等补丁。生产里离散小动作空间仍可用 DQN;大动作空间必须掩码或分解。

8. 验收

  • CartPole-v1 上 DQN 应在 1e5~1e6 步内稳定 500 分。
  • TD error 分布无爆炸。
  • 对比 SARSA 和 Q-learning 在同一 env 的学习曲线。
  • Target net 更新频率与 config 一致。
  • done 为 True 时 target 不 bootstrap。

Deadly triad 是「表格算法 + 神经网络」之间的契约断裂。理解 backup 从哪来,才知道该加 replay 还是换 Actor-Critic。CartPole 上 DQN 应在百万步内稳定五百分的 sanity check,是工程上可用的离散基线。ε 衰减过快是深度 Q 网络不收敛的常见原因之一,schedule 应可视化进实验页便于复盘。Cliff walking 演示 off-policy 激进性与 on-policy 保守性的差别,有助于选型。表格 Q 表手写迭代是理解 deadly triad 的最短路径。生产离散小动作空间仍可用 DQN,大动作空间必须掩码。

← 全部文章

johan's blog