🏠 总目录📚 本教程 15 · 实战与挑战项目
📑 本页目录(点开跳转)

15 · 实战与挑战项目

项目 1–2 天 / 挑战 4–7 天 | ⭐ RL 尤其必须动手


🎯 一句话

RL 的算法看起来都很简单,但它们出错的方式和监督学习完全不同 —— 不会报错,只是学不出来。 这一章的四个项目,一半的价值在于让你亲眼看到那些失败模式。


🧰 开工前:三条 RL 特有的调试铁律

铁律 为什么
① 先在最简单的环境上跑通 直接上 Atari 你分不清是算法错了还是超参不对
② 固定种子,跑多个种子 ⭐⭐ RL 的种子间方差极大 —— 一个种子的结果毫无意义
③ 画曲线,别只看最终分数 RL 经常"先涨后崩",只看最后一个数会得出错误结论
   ⭐ 关于第 ② 条,一个必须知道的事实:
     同一份代码、同一组超参,换 5 个随机种子,
     在 MuJoCo 这类任务上结果可能相差【好几倍】

   → 所以论文和你自己的实验,都必须报告【多个种子的均值±标准差】
pip install gymnasium numpy torch matplotlib

🥉 项目一:表格法三件套(1 天)

目标:把第 47 章全部跑一遍。

🎯 该看到的现象(T5 是重点)

   悬崖行走(走边缘最短但掉下去 -100):

   ⭐ Q-learning 学到【最优路径】:贴着悬崖边走
     但训练过程中因为 ε-贪心偶尔失足,【实际得分更低】

   ⭐ SARSA 学到【安全路径】:绕远一点
     因为它是 on-policy,把"我会以 ε 概率乱走"也考虑进去了

   → 这个差别就是 on-policy 和 off-policy 的直观体现 ⭐

✅ 通关标准


🥈 项目二:DQN 打 CartPole(1–2 天)

目标第 8 章

🎯 该看到的数字

   CartPole-v1(满分 500):

   T1 朴素版      → 剧烈震荡,经常回到 10 分左右 💀
   T2 +经验回放   → 明显稳定
   T3 +目标网络   → 能稳定到 400+ ✅
   T5 Double DQN  → Q 值估计明显更接近真实回报

   ⭐ T6 是这个项目的灵魂:
     把"网络预测的 Q" 和 "实际跑出来的折扣回报" 画在一起
     → 标准 DQN 的曲线会明显【偏高】
     → Double DQN 的曲线贴得更紧

✅ 通关标准


🥇 挑战 A:从零实现 PPO(3–4 天)

难度 ★★★★☆

🎯 该看到的现象

   T6 的消融(这是整个项目最有价值的部分):
   ├─ 关掉【优势标准化】 → 训练明显变慢或不稳 ⭐
   ├─ 关掉【梯度裁剪】   → 偶尔某个种子直接发散
   ├─ 关掉【熵奖励】     → 早期就收敛到某个动作,分数卡住 ⭐
   └─ 关掉【观测归一化】 → 在 LunarLander 上影响巨大

   T7:ε 越大 → KL 越大 → 训练越快但越容易崩
       ⭐ 你会亲眼看到 clip 就是在控制 KL

✅ 通关标准

  1. LunarLander 稳定通关(200+ 分)
  2. T6 的消融表完成,每项都有 3 个种子的均值±标准差
  3. 能说清哪两个细节最关键

💡 这个项目做完,你会理解一件事RL 论文里"我们的方法提升了 15%",很可能来自实现细节而不是算法本身。 这就是 RL 复现危机的根源。


🥇 挑战 B:迷你 RLHF(4–7 天)

难度 ★★★★★把第 12、13 章跑通

   ⚠️ 用【小模型】做(GPT-2 small 或更小),普通 GPU 就能跑
     目标不是效果,是【把流程全跑通并看到那些现象】⭐

阶段 1:SFT(半天)

阶段 2:奖励模型(1–2 天)

阶段 3:对齐(2–3 天)

🎯 该看到的现象(这才是项目的产出)

   ⭐ T4:RM 对更长的回答系统性给高分
        → 你亲手造出了"长度偏好"

   ⭐ T6:DPO 训练中,chosen 的绝对概率也在下降
        → 亲眼看到第 13 章说的那个反直觉现象

   ⭐⭐ T8(β=0):模型开始生成
        · 极长的重复文本
        · 疯狂使用某几个高分短语
        · 完全不通顺但 RM 给分很高
        → 这就是奖励攻击 💀

   ⭐⭐ T9:奖励分数还在涨,但 KL 已经飙升
        → 这个分叉点就是"该早停了"的信号
        → 理解为什么第 12 章说【要盯 KL 而不是奖励】

✅ 通关标准

  1. RM 的成对准确率明显高于 50%
  2. T6 的概率下降现象可见
  3. T8 成功复现奖励攻击(这是最重要的一条)
  4. T9 的两条曲线画出来了,能指出分叉点
  5. 写一段对比:DPO vs PPO 的效果、成本、稳定性

🔑 这个项目的真正价值你会对"对齐"这件事产生一种健康的怀疑 —— 奖励分数上涨看起来很美好,但模型可能正在变成一个专门讨好评分器的东西。 这个直觉,看多少篇论文都不如亲手跑一次。


📝 报告模板

# 实验:____
## 环境与设定(含种子数量)
## 结果(曲线 + 均值±标准差)      ← RL 必须有误差带 ⭐
## 消融 / 对比
## 失败模式:我看到它怎么崩的      ← RL 特有的、最有价值的一节 ⭐
## 我原本以为 ___,实际上 ___

🔗 这一章连到哪里

去哪 为什么
上线之后 17 ⚠️ RL 实验对种子极其敏感,报告要能复现,先看那边的可复现清单
Kaggle 04 实验记录与调参的工程做法,报告模板可以直接抄
推荐算法 20 同构的沙盘项目:也是自己造环境、自己观察策略把环境带偏

✅ 检查点

  1. RL 调试的三条铁律是什么?为什么第二条特别重要?
  2. 悬崖行走里 Q-learning 和 SARSA 的差别是什么?根源是什么?
  3. DQN 项目里为什么要先跑"故意不加修补"的版本?
  4. 怎么验证 DQN 的 Q 值高估?
  5. PPO 消融实验里,关掉哪两个细节影响最大?
  6. clip ε 变大时会观察到什么?这说明 clip 在控制什么?
  7. 迷你 RLHF 里怎么复现奖励攻击?
  8. "奖励曲线和 KL 曲线分道扬镳"意味着什么?
👀 答案
  1. ①先在最简单环境跑通 ②固定种子但要跑多个种子 ③画曲线不只看最终分数。第二条重要是因为 RL 的种子间方差极大——同一份代码同一组超参换 5 个种子,结果可能相差好几倍,一个种子的结果毫无意义
  2. Q-learning 学到贴着悬崖的最优路径(但训练时因 ε-贪心偶尔失足,实际得分更低);SARSA 学到绕远的安全路径。根源:SARSA 是 on-policy,把"我会以 ε 概率乱走"也考虑进了价值估计。
  3. 因为亲眼看到它崩,才会记住经验回放和目标网络在解决什么。直接给你一个能跑的版本,你学不到那两个修补的必要性。
  4. 网络预测的 Q实际跑出来的折扣回报画在一张图上——标准 DQN 的曲线会明显偏高,Double DQN 贴得更紧。
  5. 优势标准化(不做则训练明显变慢或不稳)和熵奖励(不做则早期就收敛到某个动作、分数卡住)。梯度裁剪则决定会不会偶尔某个种子直接发散。
  6. ε 越大 → KL 散度越大 → 训练越快但越容易崩。说明 clip 本质上就是在控制 KL
  7. 把 KL 系数 β 设成 0,模型会开始生成极长的重复文本、疯狂使用高分短语、完全不通顺但 RM 给高分。
  8. 意味着模型正在钻奖励模型的漏洞而不是真的变好——这个分叉点就是"该早停了"的信号,也是第 12 章说"要盯 KL 而不是奖励"的实证。

🛑 完成了?

附录 A 把公式和超参过一遍,然后回总目录


走神救援

RL 的错误方式和监督学习完全不同:不会报错,只是学不出来三条调试铁律:先在最简环境跑通、⭐⭐跑多个种子RL 种子间方差极大,同代码同超参换 5 个种子结果可能差好几倍,一个种子的结果毫无意义)、画曲线别只看最终分数。项目一(表格法):价值迭代 → Q-learning → SARSA;⭐悬崖行走是重点——Q-learning 学贴悬崖的最优路径(但训练时偶尔失足得分更低),SARSA 学绕远的安全路径,根源是 SARSA 是 on-policy,把"我会以 ε 概率乱走"也算进了价值项目二(DQN):⭐先跑故意不加修补的版本看它怎么崩(别跳过),再逐个加经验回放和目标网络;⭐灵魂是 T6:把预测 Q 和实际折扣回报画在一起,看到标准 DQN 系统性高估、Double DQN 贴得更紧。⭐挑战 A(PPO):实现 GAE + 裁剪目标 + 六个细节,⭐⭐核心是 T6 消融实验(关掉优势标准化训练变慢、关掉熵奖励早早收敛卡住、关掉梯度裁剪偶尔发散);T7 扫 ε 看 KL —— 亲眼看到 clip 就是在控制 KL;⭐做完你会理解 RL 论文的"提升 15%"很可能来自实现细节而非算法,这就是复现危机的根源。⭐挑战 B(迷你 RLHF):用 GPT-2 small,SFT → Bradley-Terry 训 RM → DPO → PPO;四个必看现象:T4 亲手造出长度偏好、⭐T6 看到 DPO 的概率下降现象、⭐⭐T8 把 β 设成 0 复现奖励攻击(极长重复文本、疯狂用高分短语、不通顺但 RM 给高分)、⭐⭐T9 画奖励和 KL 两条曲线找分叉点奖励还在涨但 KL 飙升 = 正在钻漏洞,这就是"该盯 KL 不是奖励"的实证)。⭐这个项目真正的价值是让你对"对齐"产生健康的怀疑。报告模板里 RL 必须有误差带,且"失败模式:我看到它怎么崩的"是最有价值的一节。

打卡记录保存在你的浏览器里,首页能看到总进度