跳到主要内容

强化学习 — 从「看回报调策略」到主力训练法

这一章讲三件事: 强化学习与监督学习(拿标准答案逐个对照的那类学习)的本质差别。

策略梯度这条主线的五步演化(策略梯度 → REINFORCE → GAE → PPO:主力训练法 → GRPO)——每一步分别在修上一步的什么病。 它是流水线第四站的引擎,也是下一章 RLHF 和推理模型的技术底座。

1. 为什么监督学习不够用

书里开篇给了 SFT 的两个硬伤。其一,要构造海量「指令-答案」对,高质量人工打标签的成本高昂;其二更根本,交叉熵损失要求模型输出与标准答案逐字匹配——「非常满意」和「无可挑剔」明明等效,逐字匹配却认不出这种等效性;也捕捉不到「不推荐」和「强烈推荐」之间一个否定词造成的极性反转1

强化学习换了一种反馈形态:不告诉模型每一步该怎么写,只在结果上告诉它好不好。智能体在环境中获取状态、输出动作,环境返回下一个状态和奖励,目标是让累计奖励最大2。书里用了宠物狗学接飞盘的例子:没人教狗关节怎么发力,只在他接住时给奖励,行为自己长出来3

几个最小必要概念,一次给全:

概念意思例子
状态 / 动作 / 奖励此刻的处境 / 做出的事 / 得到的反馈飞盘的位置 / 跳起 / 接住(正奖励)
策略从状态到动作的规则,可输出概率分布给一个状态,各动作选多大概率
价值函数对未来累计奖励的预测这个处境平均能拿多少分
折扣因子 γ远期奖励打几折0.9 意味着十步之后的奖励只值现在的 0.35 倍

动作空间可以是离散的(围棋 361 个交叉点)或连续的(机器人关节角度)4。按学习机制,智能体分三类:基于价值(学价值函数,Q-Learning)、基于策略(直接学策略,REINFORCE)、演员-评论员(两者都学,PPO 属于这类)5

书里还引了 Richard Sutton《苦涩的教训》作立场:过去 70 年 AI 最重要的经验是只有通用的、可规模化扩展的方法最终有效——强化学习的「粗粒度反馈 + 自主探索」正符合这条哲学6

2. 策略梯度:直接对策略求梯度

监督学习的梯度是「输出与答案差多远」;策略梯度的梯度是「怎么调整策略,高回报的动作更常被选中」。推导只需要三步,书里都给了式子7:

① 一条轨迹(一局完整对话)出现的概率
= 初始状态概率 × 每步(选这个动作的概率 × 环境转移概率)连乘

② 对数求导后,环境相关的项全部消掉
(转移概率与策略参数无关,导数为零)
只剩:每步动作概率的对数梯度之和

③ 策略梯度 = 期望[ 回报 × Σ 每步 log 概率的梯度 ]
直觉:这条轨迹赚了 → 把轨迹里每个动作的概率都调大一点
这条轨迹亏了 → 全都调小一点

两个必须打的补丁。补丁一:别让历史背锅。 整条轨迹的回报当权重太粗——第一步的动作不该为第十步的失误受罚,所以把权重换成「从当前时刻起到结束的回报」8

补丁二:基线(一条及格线)。 回报的随机性很大,直接当权重会让梯度忽上忽下(方差大,收敛慢)

解法是减去一个只依赖状态的基线 b(st)——数学上可以严格证明减去它不改变梯度的期望(平均而言的结果),只降低方差(忽上忽下的幅度)。最优基线就是状态价值函数 V(st),减完之后的量 Q−V 有个名字:优势函数——它衡量的正是「这一步比该状态的平均水平好多少」,为正加强、为负抑制9

REINFORCE 是这条线最原始的实现(Williams 1992):完整采样若干条轨迹,用蒙特卡洛方式算回报,套上面的公式更新。它的病根也清楚:必须等整条轨迹结束才能更新、样本用一次就丢、方差高10

3. GAE:在偏差与方差之间拧旋钮

蒙特卡洛方法无偏差但高方差;时序差分(TD)方法反过来——不等轨迹走完,用「一步真实奖励 + 下一状态的价值估计」近似,方差低但估计本身有偏。两者是一条光谱的两端11

GAE(广义优势估计)在这条光谱上装了个旋钮 λ:把各步的优势估计做指数加权平均。用 TD 误差(δ = r + γV(s′) − V(s))改写后,公式收敛成一个优雅的形式12:

  • λ = 0:只用一步 TD 误差 → 偏差最大,方差最小;
  • λ = 1:累加全部 → 退化成蒙特卡洛,无偏但方差大;
  • 中间值:两边权衡。

实践中 λ 取 0.9~0.99 一类的值——「不追求理论无偏,追求训练稳定」是这个领域的典型取舍。

4. PPO:安全地复用旧数据

策略梯度有个效率死穴:它是同策略的——数据是用当前策略采的,可参数一更新,策略就变了,旧数据立刻作废,每一步都要重新采样13

PPO 的两步走。第一步,重要性采样:想用旧策略 θ′ 采的数据更新新策略 θ,给每个样本乘一个修正权重 πθ(a|s)/πθ′(a|s),数学期望就对回来了。但两个分布差太远时权重会出极端值(高方差),硬裁剪又引入偏差14第二步,clip 剪切:把权重硬限制在 [1−ε, 1+ε] 区间内(ε 常取 0.1 或 0.2)——更新幅度被物理性地锁死,旧数据可以复用,策略也不会一步迈太大15

完整的 PPO 循环是演员-评论员结构16:

循环:
① 用当前策略在环境里采一批轨迹(生成若干条回复)
② 用评论模型(价值网络)预测每步的未来收益
③ GAE 算优势:这一步比预期好多少
④ 剪切目标函数更新策略(演员)
⑤ 最小化均方误差更新价值网络(评论)
⑥ 回到 ①

放在语言模型语境里:轨迹 = 一条回复,动作 = 每个词元的选择,环境 = 奖励模型(下一章的主角),评论模型 = 另一个和策略模型差不多大的网络——这个「评论模型」正是 PPO 训练大模型最贵、最难伺候的部件,也是 GRPO 要革命的对象。

5. RLOO 与 GRPO:甩掉评论模型的两条路

RLOO(REINFORCE Leave-One-Out):同一提示采 k 个回复,把「其余 k−1 个回复的平均奖励」当作这个回复的基线。它的妙处在于基线是从数据里长出来的——不需要训练任何价值网络,而且每个样本既被评估也参与构造别人的基线,样本利用率高;代价是假设样本相互独立,且每步要多做 k−1 次求和17

GRPO(组相对策略优化)是 RLOO 思想与 PPO 剪切框架的结合,也是下一章 DeepSeek-R1 用的方法。核心变化只有一个:不再训练与策略模型同规模的价值模型,而是对每个提示采一组(G 个)回复,用组内奖励的均值和方差做归一化,得到每个回复的优势;剪切机制和 KL 散度约束(防止偏离参考模型太远)照旧保留18

主走查:GRPO 的一组比较

一个数学提示词进来,GRPO 让旧策略生成 G=4 条回复,规则评分器打分(分数是演示编的):

提示:「计算 17×23」
回复 A:答对,得分 1
回复 B:答对,得分 1
回复 C:算错,得分 0
回复 D:算错,得分 0

组内统计:均值 = 0.5,标准差 = 0.5
优势归一化:
回复 A 优势 = (1 − 0.5)/0.5 = +1 → 概率调高
回复 B 优势 = +1 → 概率调高
回复 C 优势 = (0 − 0.5)/0.5 = −1 → 概率调低
回复 D 优势 = −1 → 概率调低
再套 PPO 的剪切(每词元的概率比限制在 1±ε 内),
加 KL 惩罚拉住模型别离参考策略太远。

图说:组均值 0.5 自动成了基线——没有训练任何价值网络。
「怎么算出 0.5 和 0.5」这一步书里给的是公式;这四个分数是为演示编的。

对比 PPO 的账:省掉一个与策略同规模的评论模型(显存和算力立省近一半),组内归一化天然抗单个样本的噪声;代价是每个提示要生成 G 条回复,采样开销上浮。书里引 DeepSeekMath 的结果:换用 GRPO 后在 GSM8K、MATH 等数学基准上性能显著提升19

6. 作者的判断与证据

  • 有证据的: REINFORCE/GAE/PPO/RLOO/GRPO 的公式全部有文献出处;GRPO 对 PPO 的三点优势(省算力、基线效率、稳定性)与 DeepSeekMath 实验结果书里都有引用。
  • 作者的判断: 把 RL 的三大优势(保留表达多样性、突破知识天花板、建模长期收益)归纳成节,并归到《苦涩的教训》名下,是作者的立场整理;其中「突破人类认知边界」的论证(与 AlphaGo 类比)偏思辨,实验支撑较少。
  • 书里的坦白: 策略梯度「梯度估计方差大、训练不稳定」是各方法共同的出发点;书里没有宣称任何一个方法彻底解决了它。

7. 边界与局限

  • 本章公式链较长,但全部是「策略梯度 → 加基线 → 换估计器 → 加剪切 → 去评论员」一条线,没有旁支;真正的工程细节(比如 KL 控制器的实现)在第 08 章的 verl 一节。
  • 书里对 RLOO 与 GRPO 的关系点得不透:两者基线构造同源(组内均值),GRPO 多了剪切和 KL 约束——理解了一个就理解了另一个(我们按两节内容归纳)。
  • 离线强化学习、DPO 等不用 RL 循环的对齐替代方案,书里只在 Kimi k1.5 一处顺带提及,没有系统展开——这是本章作为 2025 年教材的一个明显留白。

8. 可带走的

  1. 监督学习对答案,强化学习对结果:交叉熵逐字匹配认不出「非常满意」=「无可挑剔」,这是引入 RL 的第一动因;
  2. 策略梯度直觉版:轨迹赚了就把轨迹里每个动作的概率调大——所有公式都是这句话的精确化;
  3. 基线减掉不改变期望、只降方差;最优基线是状态价值,减出来就是优势函数 Q−V;
  4. GAE 的 λ 是偏差-方差旋钮:0 = 信一步估计,1 = 信完整轨迹,实践取中间;
  5. PPO = 重要性采样(复用旧数据)+ 剪切(步幅锁死在 1±ε);它贵在需要一个与策略同规模的价值网络;
  6. RLOO 和 GRPO 的共同招:组内互相当基线——省掉价值网络,代价是多采样几条回复;
  7. GRPO 的组归一化自带抗噪:单条轨迹的奖励噪声被组均值和组方差吸收;
  8. 看到任何「RL 训练大模型」的工作,先问三件事:奖励从哪来、基线怎么建、KL 拉不拉——三个答案定位整个方法。

9. 原文地图

主题原书章原文位置
SFT 两局限、逐字匹配6 强化学习text/06-ch06.txt:232(搜「逐字匹配」)
RL 基本框架6 强化学习text/06-ch06.txt:257(搜「智能体与环境」)
宠物狗例子6 强化学习text/06-ch06.txt:268(搜「飞盘」)
动作空间 3616 强化学习text/06-ch06.txt:302(搜「361 个交叉点」)
价值函数与折扣因子6 强化学习text/06-ch06.txt:311(搜「价值函数」) · text/06-ch06.txt:325(搜「折扣因子」)
三类智能体6 强化学习text/06-ch06.txt:328(搜「演员」)
苦涩的教训6 强化学习text/06-ch06.txt:358(搜「苦涩的教训」)
RL 三优势6 强化学习text/06-ch06.txt:367(搜「无可挑剔」)
策略梯度推导6 强化学习text/06-ch06.txt:398(搜「策略梯度」) · text/06-ch06.txt:418(搜「对数导数技巧」)
别让历史背锅6 强化学习text/06-ch06.txt:432(搜「衡量当前动作价值」)
基线6 强化学习text/06-ch06.txt:446(搜「基线」)
优势函数6 强化学习text/06-ch06.txt:470(搜「优势函数」)
REINFORCE 与缺陷6 强化学习text/06-ch06.txt:475(搜「REINFORCE」) · text/06-ch06.txt:559(搜「显著缺陷」)
TD 方法6 强化学习text/06-ch06.txt:571(搜「时序差分」)
GAE6 强化学习text/06-ch06.txt:568(搜「广义优势估计」) · text/06-ch06.txt:649(搜「退化为」)
同策略低效6 强化学习text/06-ch06.txt:673(搜「同策略」)
重要性采样6 强化学习text/06-ch06.txt:676(搜「重要性采样」)
clip 剪切6 强化学习text/06-ch06.txt:718(搜「剪切机制」)
PPO 流程6 强化学习text/06-ch06.txt:726(搜「算法流程」)
RLOO6 强化学习text/06-ch06.txt:749(搜「RLOO」)
GRPO 组奖励6 强化学习text/06-ch06.txt:842(搜「Group Relative Policy Optimization」) · text/06-ch06.txt:871(搜「组大小」)
GRPO 对 PPO 三优势6 强化学习text/06-ch06.txt:903(搜「计算负担方面」)
DeepSeekMath6 强化学习text/06-ch06.txt:918(搜「DeepSeekMath」)

Footnotes

  1. 出处:「6 强化学习」第 232 段(text/06-ch06.txt:232,搜「逐字匹配」)与第 367 段(text/06-ch06.txt:367,搜「无可挑剔」)。

  2. 出处:「6 强化学习」第 257 段(text/06-ch06.txt:257,搜「智能体与环境」)。

  3. 出处:「6 强化学习」第 268 段(text/06-ch06.txt:268,搜「飞盘」)。

  4. 出处:「6 强化学习」第 302 段(text/06-ch06.txt:302,搜「361 个交叉点」)。

  5. 出处:「6 强化学习」第 328 段(text/06-ch06.txt:328,搜「演员」)。

  6. 出处:「6 强化学习」第 358 段(text/06-ch06.txt:358,搜「苦涩的教训」)。

  7. 出处:「6 强化学习」第 398-416 段(text/06-ch06.txt:398,搜「策略梯度」;text/06-ch06.txt:418,搜「对数导数技巧」),即原书式 (6.5)-(6.9)。

  8. 出处:「6 强化学习」第 432 段(text/06-ch06.txt:432,搜「衡量当前动作价值」)。

  9. 出处:「6 强化学习」第 446 段(text/06-ch06.txt:446,搜「基线」)与第 470 段(text/06-ch06.txt:470,搜「优势函数」)。

  10. 出处:「6 强化学习」第 559 段(text/06-ch06.txt:559,搜「显著缺陷」)。

  11. 出处:「6 强化学习」第 571 段(text/06-ch06.txt:571,搜「时序差分」)与第 608 段(text/06-ch06.txt:608,搜「逐渐趋向于蒙特卡洛方法」)。

  12. 出处:「6 强化学习」第 568 段(text/06-ch06.txt:568,搜「广义优势估计」)与第 649 段(text/06-ch06.txt:649,搜「退化为」)。

  13. 出处:「6 强化学习」第 673 段(text/06-ch06.txt:673,搜「同策略」)。

  14. 出处:「6 强化学习」第 676 段(text/06-ch06.txt:676,搜「重要性采样」)与第 526 段(text/06-ch06.txt:526,搜「高方差」)。

  15. 出处:「6 强化学习」第 718 段(text/06-ch06.txt:718,搜「剪切机制」)。

  16. 出处:「6 强化学习」代码 6.1(text/06-ch06.txt:726,搜「算法流程」)。

  17. 出处:「6 强化学习」第 749 段(text/06-ch06.txt:749,搜「RLOO」)与第 815 段(text/06-ch06.txt:815,搜「方差降低效果」)。

  18. 出处:「6 强化学习」第 842 段(text/06-ch06.txt:842,搜「Group Relative Policy Optimization」)与第 871 段(text/06-ch06.txt:871,搜「组大小」)。走查中四个分数为演示编造。

  19. 出处:「6 强化学习」第 903 段(text/06-ch06.txt:903,搜「计算负担方面」)与第 918 段(text/06-ch06.txt:918,搜「DeepSeekMath」)。