基于人类反馈的强化学习
预训练决定了模型知道什么,后训练决定了它是不是能用。这里是 Nathan Lambert《RLHF Book》全 17 章加 3 个附录的中文精读文档。
0. 这本书在讲什么
2022 年 11 月之前,「把 GPT-3 变成 ChatGPT」这件事在公开文献里几乎没有系统记载。基座模型的能力早就在那里了,但它只会续写文本;让它变成一个会回答问题、会拒绝、会在合适的时候说「我不知道」的助手,靠的是一整套后训练(post-training)技术。这本书讲的就是这套技术里最核心、也最难写清楚的那一部分。
后训练的整体图景
现代后训练由三类优化方法组成,它们通常按顺序叠加、也常常循环往复:
| 阶段 | 做什么 | 信号从哪来 | 本书章节 |
|---|---|---|---|
| 指令微调(SFT / IFT) | 教会模型「对话」这种格式,把 base 模型改造成 assistant | 人写的或模型生成的示范回复,逐 token 做交叉熵 | ch04 |
| 偏好微调(PreFT) | 在同一个 prompt 的多个回复之间做取舍,优化「哪个更好」 | 成对比较标签 →(可选)奖励模型 → RL 或直接对齐 | ch05、ch06、ch08、ch09 |
| 可验证奖励强化学习(RLVR) | 在答案可被程序判定对错的任务上,把能力真正训上去 | 代码测试用例、数学答案匹配、工具执行结果 | ch07、ch13 |
RLHF 主宰第二块,同时是第三块的技术祖先——今天所有推理模型用的 GRPO、rollout 基础设施、KL 控制,都是从 RLHF 的 PPO 流水线里长出来的。所以哪怕你只关心 o1/R1 那条路线,也得先把 RLHF 这一段读通。
整本书的技术内容,几乎都可以挂到这一个式子上:
$$ \max_{\pi_\theta} \; \E_{x \sim \mathcal{D},\, y \sim \pi_\theta(\cdot \mid x)} \big[ r_\phi(x, y) \big] \;-\; \beta\, \KL\big[\pi_\theta(y \mid x) \,\|\, \pi_{\text{ref}}(y \mid x)\big] $$其中 $r_\phi$ 是奖励(ch05 讲它怎么从偏好数据里学出来),$\max$ 那一项怎么算梯度是 ch06 的全部内容,$\KL$ 惩罚项是 ch15,$r_\phi$ 被优化坏掉的那些方式是 ch14,绕开 $r_\phi$ 直接解这个式子得到 DPO 是 ch08,把 $r_\phi$ 换成程序化验证器就是 ch07。剩下的章节讲的是这个式子外面的东西:数据从哪来(ch10–ch12)、怎么知道自己练好了(ch16)。
它和一篇论文综述的区别
关于 RLHF 的综述已经有很多,这本书值得单独读的理由是它是从实践者视角写的。作者 Nathan Lambert 在 Ai2 带 OLMo 的后训练,此前在 HuggingFace 做过 Zephyr 和 TRL,Tülu 系列模型和数据集也出自他手。这意味着书里到处是这种判断:
- 哪些技巧真有用。拒绝采样(ch09)几乎没有正经论文,却是工业界跑得最多的算法;SFT 数据的质量比数量重要一个数量级;奖励模型的绝对分数没有意义、只有相对排序有意义。
- 哪些是论文里好看而已。过程奖励模型(PRM)在真实流水线里的地位远不如论文数量暗示的那么高;DPO 的各种变体绝大多数在换个数据集之后就复现不出优势;「aha moment」被讲成了神话,实际观察到的现象要平淡得多(ch07)。
- 哪些是行业公开秘密。偏好数据的单条成本量级、标注一致率(IAA)真实能到多少、大厂为什么宁可花钱买数据也不用开源集(ch11);character training 每天在做但几乎不发论文(ch17)。
这些判断在原书里散落在正文各处,在本站的每一章里被显式提出来,标为「Lambert 的判断」。它们是这本书最不可替代的部分——公式你在别处也能查到,取舍经验不行。
它不讲什么
作者对本书的定位很克制:不是一本穷尽一切的教科书,而是一本能让你动手做出玩具实现、或者有底气扎进文献的最小知识集合。因此几个方向被有意留在了范围之外:
- 预训练。数据清洗、并行策略、缩放律都不在此列,本书默认你手上已经有一个 base 模型。
- 经典深度强化学习。Q-learning、离线 RL、连续控制只在附录 A 里作为背景提一句。语言模型上的 RL 是一个非常特殊的退化情形(单步决策、确定性转移、动作空间等于词表),把 Sutton & Barto 读完并不会让你在这里更顺利。
- 最新一周的论文。本书刻意只收录「反复被验证过、在多个团队多个设置下都成立」的技术。这是它作为参考手册的价值来源,也意味着你不能指望在这里读到上个月的 SOTA。
- 可复现的排行榜数字。RLHF 是一个结果噪声极大的领域,作者反复提醒:不要把任何单篇论文的数字当定论,要读多篇形成直觉。
适合谁读
| 你是 | 能拿到什么 |
|---|---|
| 要动手做后训练的工程师 | 一份从数据准备到排障的完整操作路径,附录 C 是显存核算和常见 bug 的排查手册 |
| 研究方向转向 RL / 对齐的学生 | 策略梯度到 GRPO 的完整推导链条,以及每个算法当初是为解决什么问题被造出来的 |
| 做 agent、做产品的人 | 模型「性格」是怎么被训进去的、工具调用怎么进入训练循环、评测为什么是最大瓶颈 |
| 关心 AI 风险与局限的人 | 偏好本身的理论困境(Arrow、VNM)、过优化的必然性、谄媚是怎么被训出来的 |
预备知识:熟练 Python 与 PyTorch,知道 Transformer 和交叉熵损失是什么。不需要强化学习基础——MDP、策略、价值函数、优势函数这些概念在 ch03 和附录 A 里从头讲。
1. 全部章节
共 17 章 + 3 个附录,每一章都是 1 万–2 万中文字的精读:覆盖原章节的每个小节,在原文给结论的地方补推导、直觉、数值例子和可运行的最小实现。不是摘要,可以直接替代读英文原章节。
RLHF 到底是什么、它在后训练的三块拼图里占哪一块。核心是「判别比生成容易」这个不对称性:人说不清什么是好回答,但看到两个回答能立刻选出更好的那个——这就是整个领域存在的理由。同时解释 RLHF 为什么能做到 SFT 做不到的事:响应级而非 token 级的更新,对比式而非模仿式的信号。
今天流水线里的每个零件都有出处:Bradley-Terry 模型来自 1952 年的统计学,TAMER 和 COACH 是机器人学里的人类反馈实验,Christiano 2017 第一次用偏好训出了后空翻的仿真人形机器人,InstructGPT 把这一切接到语言模型上。读完你会知道哪些设计是必需品、哪些只是历史包袱。
把后训练形式化成一个优化问题:谁是 state、谁是 action、为什么这不是一个标准 MDP(单步 bandit、确定性转移、只在终点给奖励)。全书的符号系统在这一章建立,后面每个公式都依赖它。附带 RL 预备知识回顾:策略、回报、价值函数、优势函数。
base → assistant 这一步转变的全部工程细节:chat template 长什么样、特殊 token 怎么加、loss masking 为什么必须只在 completion 上算损失(漏掉这一条是最常见的 bug)。以及「少而精」之争——1000 条精选数据到底能不能顶得上 10 万条众包数据。
Bradley-Terry 从概率模型到损失函数的完整推导,为什么最后长成一个 logsigmoid(r_chosen - r_rejected)。三类监督信号的分工:输出奖励模型(ORM)、过程奖励模型(PRM)、以及 LLM-as-a-judge 的生成式奖励。附带奖励模型的实现细节:value head、初始化、为什么绝对分数没有意义。
全书最长、也最硬的一章。策略梯度定理的推导(对数导数技巧为什么成立)、REINFORCE 的高方差从哪来、基线与 GAE 怎么把它压下去;PPO 的 clip 目标与它在语言模型上的真实行为;GRPO 用组内归一化替代价值网络的代价与收益;再到 RLOO、DAPO、GSPO 等一整个变体家族的对照。含完整可运行的最小实现。
当奖励可以被程序验证,RL 就从「对齐口味」变成了「提升能力」——这是 2025 年推理模型爆发背后唯一真正的技术变化。RLVR 的机制、o1 与 DeepSeek-R1 两条路线的差异、推理长度为什么会自发增长,以及「aha moment」这个说法里哪些部分被严重夸大了。
DPO 从 KL 正则 RLHF 目标出发的完整闭式推导,每一步变换都讲清楚。然后是它的真实行为:概率位移(chosen 和 rejected 的概率同时下降)为什么是内生的而不是 bug、隐式奖励和显式奖励模型差在哪。以及 IPO / KTO / ORPO / SimPO 的横向对比——它们各自去掉了什么假设。
生成 N 个候选、用奖励模型挑出最好的、拿去再做一次 SFT——最简单的策略改进算法,也是工业界用得最多、却几乎没人正经写下来的那个。best-of-N 的采样效率、选样策略(per-prompt vs global)、以及它和 RL 的关系:为什么说它是一步近似的策略梯度。
整条流水线都建立在「人类偏好可以被一个标量函数表示」这个假设上,这一章检查这个假设在哪里必然会塌。VNM 效用定理给出它成立的条件,Arrow 不可能定理说明多人偏好聚合无解。最重要的一个结论:标注者之间的分歧不是噪声,是信号——它告诉你这个问题本身就没有唯一正确答案。
全书实践者视角最浓的一章:RLHF 里唯一不能用代码生成的东西是怎么被造出来的。标注界面的每个设计选择如何改变数据分布、评分量表 vs 二选一、标注协议怎么写、标注一致率(IAA)真实能到多少、一条数据的成本量级、以及供应商交付的数据要怎么验收。
今天绝大部分后训练数据是模型生成的。蒸馏的方向性(强到弱、弱到强、自蒸馏各自意味着什么)、on-policy 蒸馏为什么比离线采样更有效、AI 反馈(RLAIF)能替代人类到什么程度。以及对「模型坍缩」这个流行说法的辨析——它成立的条件比论文标题暗示的窄得多。
当模型能在生成中途停下来调外部系统、把结果读回来再接着写,后训练的每个环节都得改:工具返回的内容必须被 loss 掩码排除(否则模型学会「幻想」工具输出)、rollout 循环要能中断和恢复、多步 agent 任务的信用分配怎么做。
奖励曲线一路向上,模型却越来越难用。Goodhart 定律在 RLHF 里的具体形态、Gao 等人的过优化缩放律(奖励模型越大越抗造,但抗不住无限优化)、以及谄媚(sycophancy)这个最典型的失败模式是怎么被一步步训出来的。
怎么把奖励榨干又不毁掉上一阶段辛苦训出的通用模型。KL 惩罚放在奖励里和放在损失里的区别、k1/k2/k3 三种 KL 估计器各自的偏差与方差(为什么大家最后都用 k3)、$\beta$ 该定多大、以及除 KL 之外的手段:熵正则、参数空间约束、为什么 RL 比 SFT 更不容易遗忘。
后训练真正的瓶颈不是算法,是「你怎么知道这次改动让模型变好了」。LLM-as-a-judge 的各种偏置(位置、长度、自我偏好)及其缓解、Chatbot Arena 的 Elo 是怎么拟合出来的和它测不到什么、评测污染的检测、以及为什么内部评测集才是实验室真正的护城河。
前沿实验室每天在做、却几乎没有公开研究的那部分后训练。character training 怎么把一个「人格」训进权重里、人格向量(persona vectors)作为可解释性与控制工具、model spec 这类文档在组织内部的真实作用,以及性格与能力之间的取舍。
全书符号表 + 术语速查手册:每个记号的数学形式、中英文名、量纲与张量形状、首次出现的章节。另外展开讲了三个最容易卡住的概念:优势函数到底在比什么、三种 KL 估计器的区别、on-policy 这个词在 RLHF 语境下的确切含义。读正文卡壳时回来查这里。
对「RLHF 只是学会了讨好人的文风、并没有真正提升能力」这个流传最广的批评,作者的完整反驳:文风本身就是信息传递效率的一部分,格式、长度、结构化程度会实打实改变用户能否用上模型的知识。同时也承认这个批评在什么条件下确实成立。
真正动手跑后训练时会踩的坑,按「症状 → 成因 → 排查顺序」组织:算力预算与显存逐项核算(RL 要同时放几个模型)、超参搜索该先动哪个、loss 不降 / 奖励不涨 / 输出崩成重复串各自对应什么问题。排障时直接翻这一篇。
六个可在单卡上跑完的小实验,用 SmolLM 级别的模型把书里的算法真正跑一遍:hw1 SFT、hw2 奖励模型、hw3 策略梯度、hw4 DPO、hw5 拒绝采样、hw6 蒸馏。每个作业都配了训练日志和指标曲线,能看到书里描述的现象(比如 DPO 的概率位移)在真实训练里长什么样。
2. 课程地图:11 讲与 17 章的对应
除了书,Lambert 还录了一套配套课程,共 11 讲(lec0 是 RL 预备知识回顾,lec1–lec10 是正课)。课程不是把书念一遍——它是作者拿着书讲课时,把哪些内容值得强调、哪些可以跳过、哪些他自己也不太信,当场说了出来。这些判断是本站的独有信息:本站以书的章节为主干组织,讲座里的实践判断已经折进对应章节的正文。
之所以选书而不是讲座作为主干,理由很简单:书的组织更适合当参考手册反复查,而讲座是线性的、为一次性讲授优化的。但知道对应关系仍然有用——如果你在看录像,这张表告诉你该配哪几章读。
| 讲次 | 主题 | 对应章节 | 本站入口 |
|---|---|---|---|
| lec0 | RL 预备知识回顾(The ML Foundations of LLM Post-Training) | 前置内容,不单独成章 | ch03 · 附录 A |
| lec1 | 导论与全景(Overview) | 第 1–3 章 | ch01 · ch02 · ch03 |
| lec2 | SFT、奖励模型、拒绝采样 | 第 4、5、9 章 | ch04 · ch05 · ch09 |
| lec3 | 策略梯度(上):强化学习基础 | 第 6 章前半 | ch06 |
| lec4 | 策略梯度(下):实现与实践 | 第 6 章后半 | ch06 |
| lec5 | 推理模型的兴起 | 第 7 章 | ch07 |
| lec6 | 直接偏好优化(DPO) | 第 8 章 | ch08 |
| lec7 | 合成数据与现代后训练方法 | 第 12 章 | ch12 |
| lec8 | 偏好与偏好数据 | 第 10、11 章 | ch10 · ch11 |
| lec9 | 过优化与 RLHF 的坏名声 | 第 14 章 + 附录 B | ch14 · 附录 B |
| lec10 | 正则化、RL 为何泛化、SFT 为何遗忘 | 第 15 章 | ch15 |
- 第 6 章占了两讲。策略梯度是全书唯一被拆成上下两次讲的内容——lec3 讲数学(策略梯度定理、PPO、GAE),lec4 讲实现与踩坑。本站合并成 ch06 一章,也因此它是全站最长的一页。
- lec9 原本是一讲,后来被拆成两讲。作者把「叙事/实证」(过优化、RLHF 的坏名声)和「数学/技术」(KL 控制、正则化)分开,让每个视频只对应一种内容类型,理由和 lec3/lec4 的拆分一样。
- 有五处内容没有对应讲座:ch13(工具使用)、ch16(评测)、ch17(性格与产品化)、附录 A、附录 C。这几篇仅依据章节原文与参考实现代码写成。其中 ch16 和 ch17 是原书里最新、也最贴近前沿实验室当下做法的两章,别因为「没有讲座」就跳过。
3. 学习路线建议
20 篇不必线性读完。三类读者对应三条路线,后一条包含前一条。
(a) 只想搞懂 RLHF 的核心机制
目标是能看懂论文、能听懂同事在说什么,不打算自己跑训练。五篇,大约两周:
ch01 导论 → ch03 训练全景 → ch05 奖励建模 → ch06 策略梯度 → ch08 直接对齐算法
这条路线的逻辑是「一个目标函数被建立、被求解、再被绕开」:ch01 说清楚要解决什么问题,ch03 把它写成数学式子,ch05 造出奖励函数 $r_\phi$,ch06 用策略梯度去优化它,ch08 展示同一个式子还能被解析地解开、完全不需要 RL。走完这五篇,你手上就有了理解后续所有变体的框架。
可以先跳过的:ch02(历史,有趣但不影响理解)、ch06 里的变体家族对照(先看懂 REINFORCE → PPO → GRPO 这条主线就够)。
(b) 要动手做后训练
在 (a) 的基础上补齐工程链条。顺序建议按流水线的实际执行顺序走:
(a) 的五篇 → ch04 指令微调 → ch09 拒绝采样 → ch12 合成数据与蒸馏 → 附录 C 实践问题 → 配套作业
- ch04 不要跳。后训练里最常见的 bug 不在 RL 部分,而在 chat template 拼错和 loss mask 没对齐。这两个问题不会报错,只会让你的模型悄悄变差。
- ch09 是性价比最高的一章。如果你只有有限的算力和时间,拒绝采样比跑 PPO 更可能先做出效果,而且它的失败模式少得多。很多团队的第一版「RLHF 模型」其实是拒绝采样出来的。
- ch12 决定你的数据从哪来。今天几乎没人从零标注 SFT 数据了,怎么用大模型造数据、怎么筛,直接决定上限。
- 附录 C 是排障手册,不用通读。训练跑挂了、显存爆了、奖励曲线不对劲的时候按症状查。
- 作业是唯一能把这些变成肌肉记忆的环节。六个实验都能在单张消费级卡上跑完,用的是 SmolLM 量级的模型——重点不是训出好模型,是亲眼看到 DPO 的概率位移、奖励模型的过拟合、PG 的方差这些书里描述的现象。
(c) 关心局限与风险
这条路线可以独立走,不需要先读完 (a)——它关注的是「这套方法在原理上会在哪里出问题」,技术细节要求较低:
ch10 偏好的本质 → ch14 过优化 → ch15 正则化 → ch16 评测 → 附录 B 不只是「文风」
顺序是有讲究的:ch10 说明假设层面的问题(把多人的、内部矛盾的偏好压成一个标量函数,在理论上就是不可能的);ch14 说明优化层面的必然后果(只要奖励是学出来的代理,过优化就不可避免);ch15 是应对手段及其代价;ch16 说明我们连「有没有变好」都测不准,所以前面所有问题都很难被及时发现。最后附录 B 是对这条路线的一个平衡——批评 RLHF 的人常说它「只学会了文风」,这一篇解释为什么这个说法既有道理又低估了它。
如果还有余力,ch11(偏好数据是怎么被生产出来的)和 ch17(模型性格是怎么被设计的)会让这条路线更完整——它们把抽象的「价值对齐」问题落到具体的人和具体的商业决策上。
- 附录 A 随时备查。本书的符号密度不低,$\pi_\theta$、$\pi_{\text{ref}}$、$A_t$、$\beta$、$r_\phi$ 在不同章节的下标习惯略有差异。卡在某个式子上时,先去附录 A 确认符号含义和张量形状,通常比反复读那一段更快。
- 不要把任何单个实验结果当定论。RLHF 是一个复现性很差的领域:同一个算法换个基座模型、换个数据集,结论可能反过来。原书大量使用学术引用正是为了让你能去读多篇论文而不是记住一个数字。本站每章末尾的「延伸阅读」按这个思路组织。
4. 关于这份文档
内容整理自 Nathan Lambert《RLHF Book》的公开源码仓库:书章节的 Markdown 原文、作者本人授课用的 11 份讲座稿、课程问答记录,以及配套的参考实现代码。每一章在忠实覆盖原章节全部小节的基础上,补充了推导过程、数值例子、最小 PyTorch 实现,并把讲座里作者的实践判断显式写进正文。
原书目前有正式英文纸质版在制作中,网页版持续更新在 rlhfbook.com,源码在 natolambert/rlhf-book。作者的博客 Interconnects 是这本书内容的持续延伸,书里许多判断的完整论证在那里能找到。发现本站的错译或错误,欢迎直接对照英文原文核对。
本站配图取自原书仓库,公式使用 MathJax 渲染,每一页左侧的目录由脚本自动生成。全部页面为静态 HTML,可离线阅读。
页面里的几种提示框
正文中的彩色方框各有固定含义,扫读时可以据此决定读不读:
| 类型 | 含义 |
|---|---|
| 核心结论 | 这一节如果只记一件事,就记这个。每章第 0 节必有一个。 |
| 直觉 | 把公式翻译成人话,或者装作者本人的实践判断(标为「Lambert 的判断」)——哪些技巧真有用、哪些是论文里好看而已。 |
| 推导 | 可以跳过的完整数学过程。跳过不影响读懂后文,但至少读一遍能省掉后面很多困惑。 |
| 注意 / 常见误区 | 实现时真的会踩的坑,以及领域里流传很广但其实站不住的说法。 |
术语首次出现时写成「中文(English, 缩写)」的形式,之后一律用缩写。token、prompt、rollout、logits、batch、KL、on-policy / off-policy 这几个词保持英文不译——它们在中文技术讨论里本来就以英文形态流通,硬译反而增加阅读成本。