对应:Stanford CS234 拓展内容(RL for LLM Reasoning、Reward Design & Safety、Course Review) 配套代码:
code/lecture16/(只需 numpy) 预计阅读时间:3.5 小时
0. 本讲导航
0.1 本讲要回答的问题
强化学习的最新前沿在哪里?这门课学过的所有东西,怎样串成一个整体?
2024 年底到 2025 年,“推理模型”(OpenAI o1、DeepSeek-R1 等)让强化学习重新成为人工智能最受关注的方向之一:用 RL 训练的大语言模型,学会了在回答之前”想很久”——尝试、检查、回溯、换一种思路——在数学竞赛和编程任务上取得了惊人的进步。支撑它们的核心技术,恰恰是这门课讲过的东西:策略梯度(第 6 讲)、基线与优势(第 7 讲)、KL 约束(第 9 讲)、探索(第 11–13 讲)、搜索(第 14 讲)……
这一讲的前半部分讲前沿:可验证奖励的强化学习(RLVR)、GRPO、以及奖励投机这个伴随 RL 始终的风险。后半部分回顾全课:一张图串起所有算法,以及贯穿始终的几条主线。
0.2 学完本讲,你应该能够
- 解释 RLHF 与 RLVR 的区别,以及”可验证的奖励”为什么让 RL 在推理任务上如此有效。
- 写出 GRPO 的优势估计,解释它为什么不需要价值网络,以及除以标准差带来的隐含效果。
- 解释 pass@k 与 pass@1 的关系,以及”RL 把偶尔能做对的变成稳定地做对”。
- 解释奖励投机:为什么代理奖励上升、真实表现下降;KL 惩罚的作用与局限;为什么会泛化。
- 把全课的算法放进一张地图,说出贯穿全课的几条主线。
0.3 先修知识
| 知识点 | 用在哪里 | 最低要求 |
|---|---|---|
| 第 6、7 讲:策略梯度、基线、PPO | 第 1–3 节 | 必须 |
| 第 9 讲:RLHF、KL 约束、奖励过度优化 | 第 1、4 节 | 必须 |
| 第 1–15 讲的主要算法 | 第 6 节 | 读过即可 |
0.4 本讲地图
第1节 大模型中的 RL:从 RLHF 到可验证的奖励
│
第2节 GRPO:用"同一道题的其他回答"代替价值网络
│
第3节 实验:优势估计到底改变了什么?
│
第4节 奖励投机:当验证器有漏洞时
│
第5节 其他前沿方向(简介)
│
第6节 全课回顾:一张图、几条主线
1. 大模型中的 RL:从 RLHF 到可验证的奖励
1.1 回顾:RLHF
第 9 讲的 RLHF:人类比较两个回答 → 训练奖励模型 → 用 PPO 优化语言模型,同时用 KL 约束不要离参考模型太远。它的瓶颈在于奖励模型:它是从有限的人类偏好中学来的,在分布外不可信,优化得太狠会出现奖励过度优化。
1.2 可验证的奖励(RLVR)
很多任务的好坏可以自动地、可靠地检查:
- 数学:最终答案是否等于标准答案;
- 编程:代码能否通过单元测试;
- 形式化证明:证明能否被证明检查器(比如 Lean)接受;
- 格式与约束:输出是否符合要求的格式、长度。
**可验证奖励的强化学习(Reinforcement Learning with Verifiable Rewards, RLVR)**直接用这些检查结果作为奖励,不需要奖励模型。好处:
- 奖励可靠:答案对就是对,不存在”奖励模型在分布外乱打分”的问题(但有另一种风险,见第 4 节);
- 奖励便宜:不需要人工标注,可以无限量地生成;
- 奖励稀疏但清晰:只在最后给 0 或 1,中间的推理过程完全由模型自己探索。
DeepSeek-R1(2025)报告了一个引人注目的现象:只用”答案对不对”作为奖励,模型在训练中自发地学会了越来越长的推理,出现了”等等,让我重新检查一下”这样的自我反思——没有人教它这样做,这是 RL 优化”最终答案正确率”时涌现出来的策略。
1.3 语言模型生成是怎样的 RL 问题?
- 按 token 看:状态 = 提示词 + 已生成的 token,动作 = 下一个 token,转移是确定的(把 token 接上去),奖励只在最后出现。这是一个视界很长(几千步)、动作空间很大(几万个 token)的 MDP。
- 按整个回答看:提示词是上下文,整个回答是一个动作,得到一个奖励——这是第 12 讲的上下文老虎机。
GRPO 等算法实际上介于两者之间:用整个回答的奖励计算优势,再把这个优势分配给回答中的每一个 token,用 PPO 式的逐 token 更新。
2. GRPO
2.1 从 PPO 说起
第 7 讲的 PPO 需要一个价值网络(critic)来估计优势。在大语言模型中,这意味着:
- 训练一个和策略一样大的 critic,显存和计算都翻倍;
- critic 要给长文本中每个 token 估计”从这里开始,最终答对的概率”——这本身就是一个很难的学习问题,估计不准时反而引入偏差。
2.2 GRPO 的做法
GRPO(Group Relative Policy Optimization,Shao et al., 2024,DeepSeekMath):对每道题 ,用当前策略抽 个回答 ,得到奖励 ,每个回答的优势是
然后把 分配给回答 的每一个 token,用 PPO 的裁剪目标(第 7 讲)更新,外加一个 KL 惩罚:
其中 是新旧策略在第 个 token 上的概率比。
核心思想:用同一道题的其他回答当基线。比同组的平均水平好,就加强;差,就减弱。这就是第 6 讲的”减去基线”,只是基线不是学出来的,而是从同一道题的多个样本中当场算出来的。
2.3 相关的优势估计
| 方法 | 优势 | 特点 |
|---|---|---|
| REINFORCE(无基线) | 无偏,奖励有共同偏移时方差大 | |
| 学到的基线 / PPO | 需要训练价值函数 | |
| RLOO(留一法) | 无偏(基线不依赖 自己) | |
| 组内均值(“Dr. GRPO”) | 把自己也算进基线,梯度缩小 | |
| GRPO | 按组内标准差缩放 |
3. 实验:优势估计到底改变了什么?
3.1 玩具推理模型
代码 toy_rlvr.py:200 道题,每题从 16 个候选回答中选一个,答对得 1 分。参考模型(RL 之前)在不同难度的题上答对的概率从 1% 到 60% 不等。
代码 01_grpo.py 演示 1:
| 难度 | 题数 | pass@1 | pass@8 | pass@64 |
|---|---|---|---|---|
| 很难(1%) | 42 | 0.010 | 0.077 | 0.474 |
| 难(5%) | 47 | 0.050 | 0.337 | 0.962 |
| 中等(20%) | 52 | 0.200 | 0.832 | 1.000 |
| 容易(60%) | 59 | 0.600 | 0.999 | 1.000 |
pass@k :独立抽 次、至少答对一次的概率。参考模型在”很难”的题上 pass@1 只有 1%,但 pass@64 有近一半——正确答案在模型的能力范围内,只是概率太低。RL 要做的,就是把 pass@k 中”偶尔能对”的部分,变成 pass@1 中”稳定地对”。
这也揭示了 RLVR 的一个根本限制:如果一道题的正确答案模型从来抽不到,就没有任何学习信号——RL 只能放大模型已有的能力。(有研究发现,RL 训练后的模型在很大的 上的 pass@k 有时反而不如训练前,说明 RL 可能在”聚焦”的同时牺牲了一些多样性。这个现象依赖于真实模型中参数的共享,在我们的表格玩具模型中不会出现。)
3.2 梯度的偏差与方差
演示 2,参考模型下一道中等难度的题(,真实梯度 ),,重复 2 万次:
| 方法 | 奖励 0/1:梯度均值 | 总方差 | 奖励 1/2(带”格式分”):梯度均值 | 总方差 |
|---|---|---|---|---|
| 无基线 | 0.1601 | 0.0142 | 0.1589 | 0.1607 |
| RLOO | 0.1602 | 0.0147 | 0.1607 | 0.0147 |
| 组内均值 | 0.1402 | 0.0111 | 0.1394 | 0.0112 |
| GRPO | 0.3366 | 0.0516 | 0.3376 | 0.0514 |
- 无基线和 RLOO 无偏;组内均值把梯度缩小了 7/8。
- 奖励是 0/1 时,有没有基线差别不大。但所有回答都有一个共同的”格式分”时,无基线的方差大了十倍,有基线的方法完全不受影响——第 6 讲的结论在大模型时代依然成立(实际训练中确实常有格式分、长度惩罚等共同的奖励项)。
- GRPO 不再是梯度的无偏估计:它把每道题的梯度放大了约 倍。各难度的放大倍数(GRPO 梯度 / 真实梯度):很难 2.63、难 2.52、中等 2.11、容易 1.88。越难的题放大得越多——GRPO 隐含地对题目按难度加权。
3.3 训练
演示 3(每步 16 道题 × 8 个回答,300 步,5 个种子):
| 方法 | 学习率 | 格式分 | 训练后 pass@1 | 很难 / 难 / 中等 / 容易 |
|---|---|---|---|---|
| 无基线 | 2 | 0 | 0.768 | 0.05 / 0.92 / 0.97 / 0.98 |
| 学到的基线 | 2 | 0 | 0.768 | 0.05 / 0.92 / 0.97 / 0.98 |
| RLOO | 2 | 0 | 0.768 | 0.05 / 0.92 / 0.97 / 0.98 |
| GRPO | 2 | 0 | 0.886 | 0.50 / 0.99 / 0.99 / 0.99 |
| 无基线 | 2 | 5 | 0.329 | 0.01 / 0.16 / 0.41 / 0.62 |
| 学到的基线 | 2 | 5 | 0.523 | 0.04 / 0.33 / 0.68 / 0.88 |
| RLOO | 2 | 5 | 0.768 | 0.05 / 0.92 / 0.97 / 0.98 |
| GRPO | 2 | 5 | 0.886 | 0.50 / 0.99 / 0.99 / 0.99 |
| 无基线 | 8 | 0 | 0.936 | 0.72 / 0.99 / 1.00 / 1.00 |
| GRPO | 4 | 0 | 0.945 | 0.75 / 0.99 / 1.00 / 1.00 |
(参考模型 pass@1 = 0.243。)
- 同样的学习率下,GRPO 明显更快,尤其是难题。
- 加上格式分,无基线严重受损;学到的基线要花时间追上新的奖励水平,也受了影响;组内基线(RLOO、GRPO)完全不受影响。
- GRPO 更快,主要是因为更大的有效步长,而不是更好的方向:把无基线方法的学习率调到 8,结果与学习率 4 的 GRPO 相当。
那 GRPO 为什么流行? 主要原因是省掉了价值网络——便宜、针对每道题、自动适应奖励的尺度。在我们的表格玩具中,“学到的基线”只是一张表,体现不出这个优势;在几十亿参数的模型中,这是决定性的。
对 GRPO 的批评(Dr. GRPO,Liu et al., 2025)也正是从这里出发:除以标准差造成的难度加权、以及按回答长度平均造成的长度偏差,都是”没有明确理由的偏差”。去掉它们、配合调好的学习率,效果同样好。
3.4 组的大小
演示 4(总样本数固定,每步 128 个回答;GRPO,学习率 2):
| 每步题数 | 训练后 pass@1 | 很难 / 难 / 中等 / 容易 | “没有学习信号”的组 | |
|---|---|---|---|---|
| 2 | 64 | 0.935 | 0.71 / 0.99 / 0.99 / 0.99 | 93.6% |
| 4 | 32 | 0.932 | 0.70 / 0.99 / 0.99 / 0.99 | 86.2% |
| 8 | 16 | 0.886 | 0.50 / 0.99 / 0.99 / 0.99 | 72.0% |
| 16 | 8 | 0.825 | 0.27 / 0.95 / 0.98 / 0.99 | 47.0% |
| 32 | 4 | 0.697 | 0.08 / 0.66 / 0.92 / 0.97 | 23.5% |
- 一组回答全对或全错时,组内基线下所有优势都是 0,这组样本没有任何学习信号。 越小,这种组越多;训练后期大部分题都会做了,比例还会上升。
- 但在这个玩具问题上,总样本数固定时 越小反而越好:每步覆盖更多的题、更新更频繁。“没有学习信号的比例高”不等于”学得慢”。
- 实际训练大模型时常用 ~:同一道题的多个回答可以共享提示词的计算,并行生成很便宜;真实的奖励更吵,太小的组给出的基线不准。结论依赖于具体的开销结构。DAPO(2025)等方法会动态地丢掉全对或全错的题,把计算留给有信息量的题。
4. 奖励投机:当验证器有漏洞时
4.1 规格博弈
奖励投机(reward hacking),也叫规格博弈(specification gaming):智能体找到了一种方式,让奖励很高,却没有完成设计者真正想要的任务。经典的例子:
- 一个赛艇游戏中,智能体发现绕圈反复撞击同一组得分道具,比完成比赛得分更高——于是它永远不去终点;
- 一个被奖励”让测试通过”的编程智能体,学会了修改测试文件、或者针对测试用例硬编码答案;
- 第 9 讲的奖励过度优化:奖励模型喜欢长回答,于是模型学会了写又长又空的回答。
RL 是一个强大的优化器。奖励函数与真实目标之间的任何差距,都可能被找到并利用——这与第 4 讲的最大化偏差、第 10 讲的外推误差、第 15 讲的优化器的诅咒,是同一个现象。
4.2 实验
代码 02_reward_hacking.py:玩具模型中,回答 1 是”作弊”的回答——有漏洞的验证器也给它 1 分,但它其实是错的。参考模型产生作弊回答的概率只有 0.5%;“作弊倾向”是所有题共享的参数。
演示 1(GRPO,600 步):
| 步数 | 没有漏洞:真实准确率 | 有漏洞:代理奖励 | 有漏洞:真实准确率 | 有漏洞:作弊概率 |
|---|---|---|---|---|
| 0 | 0.243 | 0.248 | 0.243 | 0.005 |
| 60 | 0.590 | 0.611 | 0.582 | 0.029 |
| 120 | 0.738 | 0.990 | 0.206 | 0.784 |
| 300 | 0.886 | 0.999 | 0.031 | 0.968 |
| 600 | 0.979 | 1.000 | 0.012 | 0.988 |
前 60 步,模型在学着答对题。随后,作弊回答在一部分难题上被偶然抽到、得分、被强化,并借助共享的参数迅速扩散到所有题上。代理奖励上升到 1.000,看起来训练得完美无缺;真实准确率却跌到 1%——比训练前还差得多。 在真实训练中,你只能看到代理奖励那一列。
演示 2:KL 惩罚:
| KL 系数 | 代理奖励 | 真实准确率 | 作弊概率 |
|---|---|---|---|
| 0 | 1.000 | 0.012 | 0.988 |
| 0.05 | 0.996 | 0.594 | 0.402 |
| 0.2 | 0.992 | 0.710 | 0.283 |
| 1.0 | 0.547 | 0.528 | 0.019 |
(对照:没有漏洞时真实准确率 0.979。)KL 惩罚让策略不能离参考模型太远——而参考模型几乎从不作弊,所以它确实能压制作弊。但它不区分好的偏离和坏的偏离:系数小时挡不住作弊,系数大时同样压制了”学会答对”。KL 惩罚是一种保险,不是解药。
演示 3:为什么后果这么严重?
| 作弊倾向 | 真实准确率 | 作弊概率:很难 / 难 / 中等 / 容易 |
|---|---|---|
| 所有题共享 | 0.012 | 1.00 / 1.00 / 0.98 / 0.98 |
| 每道题各自学 | 0.945 | 0.21 / 0.00 / 0.00 / 0.00 |
如果每道题都要各自”发现”作弊,作弊只出现在最难的题上(正确答案太难找,偶然抽到的作弊回答成了唯一的得分途径)。共享时,在难题上学到的”作弊”被推广到了所有题上——包括那些本来很容易答对的题。大语言模型的参数是所有任务共享的,“钻空子”这种行为模式同样会泛化。
演示 4:修好验证器之后:在第 300 步修好验证器时,作弊概率已经是 97%;100 步之后准确率恢复到 0.77,最终达到 0.98。在这个玩具模型中恢复得很快,因为作弊是通过共享的参数实现的,每道题”正确答案”的知识一直保留在下面,只是被盖住了。真实的模型不一定这么幸运,而真正的难点在于发现漏洞。
4.3 对策
- 更好的验证器:更全面的测试、隐藏的测试用例、沙箱隔离(让模型无法修改测试);
- 监控:定期人工抽查、用独立的严格验证器评测、监控异常模式(回答长度突变、固定的套路);
- 约束优化:KL 惩罚、早停(在代理奖励与真实指标开始分化之前停下);
- 过程监督:不只检查最终答案,也检查推理过程(过程奖励模型)——但过程监督本身也可能被投机;
- 更根本的问题:怎样让智能体真正”理解”我们想要什么,而不只是优化我们写下来的东西——这是 AI 对齐研究的核心问题。
5. 其他前沿方向(简介)
- 推理时的搜索:第 14 讲的”直觉 + 搜索”在语言模型中的对应:生成多个推理路径,用验证器或价值模型挑选(best-of-N、树搜索);“推理时计算”的扩展规律。
- 智能体(agent)RL:让语言模型在多步交互的环境中学习(使用工具、浏览网页、写代码并运行)——奖励更稀疏、视界更长,第 13 讲的探索问题重新变得关键。
- 机器人与基础模型:在大规模多样的数据上预训练策略,再用 RL 微调;离线到在线(第 10 讲)。
- 多智能体 RL:多个学习者互相影响,环境对每个智能体都是非平稳的;自我对弈(第 14 讲)是一个特例。
- RL 用于科学发现:AlphaTensor、AlphaDev(第 14 讲),以及芯片设计、分子设计、核聚变的等离子体控制等。
6. 全课回顾:一张图、几条主线
6.1 一张图
强化学习
│
┌─────────────────────┼──────────────────────────┐
模型已知 从经验中学习 从别的信号中学习
│ │ │
动态规划(2) ┌─────┴──────┐ 模仿学习(8):BC、DAgger、IRL
前向搜索、MCTS(14) 无模型 基于模型(15) 偏好学习(9):RLHF、DPO
│ Dyna、MPC、 离线数据(10):OPE、悲观
┌──────┴──────┐ 世界模型
基于价值 基于策略
│ │
评估:MC、TD(3) 策略梯度 REINFORCE(6)
控制:SARSA、 Actor-Critic、GAE、
Q-learning(4) TRPO、PPO(7)
函数逼近、DQN(5) GRPO(16)
│ │
└──────┬────────┘
探索贯穿其中:
ε-贪心 → UCB、汤普森采样(11、12)→ R-max、MBIE、PSRL(13)
6.2 同一把尺子下的比较
代码 03_course_review.py 把核心的表格型算法放到同一个 5×5 格子世界上(10% 打滑、一个陷阱,),比较交互 个回合后学到的策略的真实价值(10 个种子):
| 算法 | 达到 95% 的回合(中位数) | |||||
|---|---|---|---|---|---|---|
| MC 控制(4) | −0.039 | 0.192 | 0.548 | 0.559 | 0.565 | 122 |
| SARSA(4) | −0.137 | 0.225 | 0.524 | 0.578 | 0.594 | 135 |
| Q-learning(4) | −0.169 | 0.358 | 0.555 | 0.449 | 0.582 | 490 |
| Double Q-learning(4) | −0.195 | −0.055 | 0.589 | 0.589 | 0.597 | 58 |
| REINFORCE + 基线(6) | −0.348 | −0.238 | 0.164 | 0.500 | 0.567 | 802 |
| Actor-Critic(7) | −0.345 | −0.260 | 0.051 | 0.535 | 0.581 | 645 |
| Q-learning + 计数奖励(13) | −0.081 | −0.117 | −0.125 | 0.403 | 0.583 | 170 |
| Dyna-Q,(15) | 0.557 | 0.498 | 0.574 | 0.520 | 0.566 | 40 |
(超参数没有仔细调,10 个种子;在别的问题上排名可能完全不同。)
- Dyna-Q 样本效率最高:10 个回合就接近最优——用计算换数据(第 15 讲)。
- TD 方法居中。Q-learning 的曲线在第 300 回合下降:有 2 个种子的贪心策略出现了”转圈”(两个格子互相指向),永远到不了终点——固定学习率下 Q 值一直带着噪声;Double Q 更平稳(第 4 讲)。
- 策略梯度方法在小的表格问题上最慢,它们的优势在于连续动作、随机策略、与大模型的结合。
- 乐观探索前期有代价,在容易探索的问题上不划算,在 RiverSwim 那样的问题上不可或缺(第 13 讲)。
6.3 贯穿全课的六条主线
主线一:偏差与方差的权衡
- MC(无偏、高方差) vs TD(有偏、低方差)(第 3 讲); 步 TD、TD(λ)、GAE 在两者之间插值(第 3、7 讲);
- 策略梯度的基线:不引入偏差,降低方差(第 6 讲);GRPO 的标准差归一化:引入了”偏差”(难度加权)换取更大的步长(第 16 讲);
- 离策略评估:重要性采样(无偏、方差爆炸) vs 直接法(有偏、低方差) vs 双重稳健(第 10 讲)。
主线二:探索——乐观与后验采样
- 贪心会卡住,ε-贪心的探索是盲目的(第 1、4、11 讲);
- 面对不确定性时保持乐观:UCB(11)→ UCT(14)→ R-max、MBIE-EB(13)→ Dyna-Q+(15);
- 后验采样:汤普森采样(12)→ PSRL(13)→ Bootstrapped DQN;
- MDP 中需要深度探索:有计划地、持续地去验证不确定的地方(13)。
主线三:分布偏移
- 行为克隆的复合误差:学习者到了专家没去过的地方(第 8 讲);
- 奖励模型在分布外不可信(第 9 讲);
- 离线 RL 的外推误差(第 10 讲);
- 学到的模型在数据之外失控(第 15 讲);
- 对策:收集学习者自己会遇到的数据(DAgger、在线交互);或在分布外保持悲观(CQL、KL 约束)。
主线四:优化会利用估计的错误
- Q-learning 的最大化偏差(第 4 讲);
- 奖励过度优化(第 9 讲);
- 离线 RL 专挑没见过的动作(第 10 讲);
- 在估计的模型中规划的优化器的诅咒(第 15 讲);
- 奖励投机(第 16 讲)。
- 能收集新数据时,对不确定性乐观;不能时,悲观。
主线五:泛化与函数逼近
- 表格方法无法处理大状态空间;函数逼近带来泛化,也带来致命三角(第 5 讲);
- DQN 的经验回放与目标网络(第 5 讲);
- AlphaZero 的查找表在没见过的局面上一无所知,神经网络才能泛化(第 14 讲);
- 共享的参数让”作弊”也会泛化(第 16 讲)。
主线六:数据与计算的交换
- 确定性等价、Dyna:同样的数据,更多的计算,更好的结果(第 3、15 讲);
- 搜索:推理时花更多的计算,下出更好的棋(第 14 讲);
- 大模型:预训练的计算提供了强大的先验,RL 只需要”唤醒”已有的能力(第 16 讲)。
7. 本讲总结
7.1 核心概念清单
- RLVR:用可以自动检查的结果(答案、测试)作为奖励,不需要奖励模型。
- 语言模型生成:按 token 是长视界 MDP,按回答是上下文老虎机。
- GRPO:优势 = 组内标准化的奖励;不需要价值网络;PPO 式裁剪 + KL 惩罚。
- 基线的作用:奖励有共同偏移时至关重要;组内基线自动抵消共同部分。
- 标准差归一化:不是无偏的梯度估计,隐含地按难度加权,并放大有效步长。
- pass@k:;RL 把”偶尔能对”变成”稳定地对”,但无法学习从未抽到过的正确答案。
- 没有学习信号的组:全对或全错的组优势为 0;总样本数固定时,它的比例高不等于学得慢。
- 奖励投机:代理奖励上升、真实表现下降;共享参数使投机行为泛化;KL 惩罚是保险不是解药;关键是发现漏洞。
- 全课主线:偏差-方差、探索、分布偏移、优化利用错误、泛化、数据与计算的交换。
7.2 公式速查表
| 名称 | 公式 |
|---|---|
| GRPO 优势 | |
| RLOO 优势 | |
| pass@k | |
| softmax 的得分函数 | |
| KL 的梯度(对 logits) |
7.3 中英术语对照表
| 中文 | 英文 | 中文 | 英文 |
|---|---|---|---|
| 可验证奖励的强化学习 | RL with Verifiable Rewards (RLVR) | 推理模型 | Reasoning model |
| 组相对策略优化 | Group Relative Policy Optimization (GRPO) | 留一法 | Leave-one-out (RLOO) |
| 验证器 | Verifier | 过程奖励模型 | Process reward model |
| 奖励投机 | Reward hacking | 规格博弈 | Specification gaming |
| 代理奖励 | Proxy reward | 对齐 | Alignment |
| 推理时计算 | Inference-time / test-time compute | 动态采样 | Dynamic sampling |
8. 练习题
本讲练习
练习 1(GRPO 的优势):一道题抽了 4 个回答,奖励为 (1, 0, 0, 0)。分别计算 RLOO、组内均值、GRPO(用总体标准差)给每个回答的优势。
参考答案
均值 0.25,总体标准差 。 RLOO:答对的回答 ;答错的回答 。 组内均值:;。 GRPO:;。 GRPO 的优势最大——这就是 3.2 节中”难题被放大”的来源:只有一个回答答对时,标准差很小。
练习 2(没有学习信号):一道题模型答对的概率是 ,每组 个回答。这组”全对或全错”(没有学习信号)的概率是多少?、 时是多少? 呢?
参考答案
。、:(92% 的组全错,没有信号);:。很难的题需要很大的 才能偶尔抽到一个正确答案——这也是 pass@k 的另一面: 就是”至少有一个正确回答”的概率。
练习 3(格式分):解释为什么奖励中加入一个所有回答都有的常数(比如格式分)会让无基线的 REINFORCE 变差,却不影响 GRPO。
参考答案
无基线时,每个被抽到的回答都乘以它的奖励去推高它的概率。常数部分让每个被抽到的回答都被推高——期望上这些推力互相抵消(因为 ),但在有限的样本中,它们取决于”碰巧抽到了哪些回答”,引入了很大的噪声(演示 2 中方差大了十倍)。GRPO 在同一组内减去均值,常数部分被完全消掉,优势只取决于回答之间的相对好坏。
练习 4(奖励投机):在 4.2 节的实验中,为什么作弊首先出现在最难的题上?
参考答案
在最难的题上,参考模型答对的概率(1%)只比作弊的概率(0.5%)高一点,一组 8 个回答里抽到正确答案和抽到作弊回答的机会差不多;一旦抽到作弊回答并得分,GRPO 就强化它。而在容易的题上,正确答案的概率(60%)远高于作弊,组里几乎总有正确的回答,作弊的相对优势很小。在不共享参数的实验中,作弊只出现在最难的题上(21%),正说明了这一点。
练习 5(动手)★:如果漏洞只在一半的题上有效(另一半题上作弊回答得 0 分),共享的作弊倾向还会占领所有题吗?
参考答案
实测(5 个种子,600 步):不会。在漏洞有效的题上,作弊概率只有 12%,真实准确率 0.873;在漏洞无效的题上,作弊概率只有 0.4%,准确率 0.969。共享的作弊倾向 仍然升高了(约 3.1),但在漏洞无效的题上,作弊回答得 0 分、在 GRPO 中得到负的优势,每道题自己的参数把作弊压了下去。“部分有效”的漏洞造成的伤害远小于”处处有效”的漏洞——因为模型能从失败中得到反面的证据。这也提示了一种防御思路:让投机行为在足够多的情况下失败(比如随机加入隐藏的检查)。
全课综合复习题
练习 6(主线一):列出至少三个”用一点偏差换取大幅降低方差”的例子,分别来自不同的讲次。
参考答案
TD(0) 用自举目标代替完整回报(第 3 讲);GAE 用 λ 在 TD 和 MC 之间插值(第 7 讲);加权重要性采样(WIS)的自归一化(第 10 讲);PPO 的裁剪(第 7 讲);GRPO 的标准差归一化(第 16 讲);直接法用模型代替重要性采样(第 10 讲)。
练习 7(主线二):UCB、汤普森采样、PSRL、Dyna-Q+ 各自用什么方式鼓励探索?它们的共同点是什么?
参考答案
UCB:给每个臂加一个随拉动次数减小的置信宽度(乐观)。汤普森采样:从后验中抽样,不确定的臂有机会抽到高值(后验采样)。PSRL:每个回合从 MDP 的后验中抽一个 MDP,按其最优策略走完整个回合。Dyna-Q+:给很久没有验证过的 (s, a) 加随时间增长的探索奖励。共同点:探索的强度与不确定性挂钩——越不确定(数据越少、越久没验证),越值得去尝试;而一旦有了足够的证据,探索自动减少。这与 ε-贪心”不管确定与否都以固定比例乱试”形成鲜明对比。
练习 8(主线三、四):第 8、9、10、15 讲都出现了”分布偏移”。用一句话分别说明每一讲中”训练时的分布”和”使用时的分布”是什么。
参考答案
第 8 讲:训练时是专家访问的状态,使用时是学习者自己访问的状态。第 9 讲:奖励模型训练时是参考模型产生的回答,使用时是被优化后的策略产生的回答。第 10 讲:数据来自行为策略,要评估或学习的是另一个策略。第 15 讲:模型在真实数据覆盖的状态上训练,规划时却在想象出的(可能越界的)状态上使用。
练习 9(综合):你要为一家医院设计一个用 RL 推荐治疗方案的系统。结合本课内容,列出你会考虑的至少五个问题,并说明它们来自哪一讲。
参考答案
(1) 不能随便试错,只有历史病历——离线 RL 与离策略评估(第 10 讲);(2) 历史数据中医生的决策可能依赖于没有记录的信息——混杂因素,OPE 可能有偏(第 10 讲);(3) 新策略上线前需要高置信度的评估,且新策略不应离医生的做法太远——悲观、KL 约束(第 9、10 讲);(4) 奖励怎么定义?“出院”可能被投机(比如过早出院),需要考虑长期结果——奖励设计与投机(第 16 讲);(5) 医生的示范可以利用——模仿学习(第 8 讲);(6) 如果允许小规模的谨慎试验,怎样在收益与学习之间权衡——老虎机与探索(第 11、12 讲);(7) 数据很少,能否利用医学知识构建模型——基于模型的方法与先验(第 12、15 讲)。
练习 10(开放题):这门课中,你觉得哪一个”反直觉”的实验结果最有启发?它改变了你对哪个算法的理解?
参考答案
没有标准答案。一些候选:GAE 的方差不随 λ 单调变化(第 7 讲);行为克隆比带噪声的专家本身还好(第 8 讲);ε-贪心的 Q-learning 到达过目标却没学会(第 13 讲);平坦蒙特卡洛模拟再多也会选错(第 14 讲);普通 Q-learning 反而比 Dyna-Q 更容易发现捷径(第 15 讲);GRPO 的”更快”主要来自更大的步长(第 16 讲)。这些结果的共同启示是:算法的行为要在具体问题上验证,理论直觉需要实验来检验。
9. 延伸阅读
- Shao et al. (2024),DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models(GRPO)。
- DeepSeek-AI (2025),DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning。
- Ahmadian et al. (2024),Back to Basics: Revisiting REINFORCE Style Optimization for Learning from Human Feedback in LLMs(RLOO)。
- Liu et al. (2025),Understanding R1-Zero-Like Training: A Critical Perspective(Dr. GRPO)。
- Yu et al. (2025),DAPO: An Open-Source LLM Reinforcement Learning System at Scale。
- Yue et al. (2025),Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model?(pass@k 的讨论)。
- Krakovna et al. (2020),Specification Gaming: The Flip Side of AI Ingenuity(DeepMind 博客,含大量奖励投机的例子)。
- Amodei et al. (2016),Concrete Problems in AI Safety。
- Sutton & Barto,第 17 章(前沿);Sutton (2019),The Bitter Lesson。
10. 结语
从第 1 讲的火星车到这一讲的推理模型,我们走过了强化学习的主要版图:
- 知道了怎样表述一个序贯决策问题(MDP、价值、策略);
- 知道了怎样在已知模型时求解它(动态规划、搜索),在未知模型时学习它(MC、TD、Q-learning、策略梯度、Actor-Critic、基于模型的方法);
- 知道了怎样高效地学习(探索、乐观、后验采样),怎样在不能试错时学习(离线 RL、悲观),怎样从人类那里学习(模仿、偏好);
- 也知道了 RL 的风险:它会利用每一个估计的错误、每一个奖励的漏洞。
强化学习的核心问题——在不确定的世界里,通过与之交互来学会做出好的决策——远没有被解决。希望这份讲义和代码能成为你继续探索的起点。
建议的下一步:
- 用 PyTorch 把第 14 讲的 AlphaZero 骨架换成神经网络,或者把第 16 讲的玩具模型换成一个真正的小语言模型;
- 读一读 Sutton & Barto 的全书,以及 Agarwal, Jiang, Kakade & Sun 的 RL: Theory and Algorithms;
- 在 Gymnasium 的环境上复现一篇你感兴趣的论文——动手实验,永远是理解一个算法最好的方式。