第二部分 · 后训练、对齐与推理能力¶
预训练语言模型(第一部分的主角)是一个极其出色的文档续写器。给它一篇维基百科文章的开头,它会接着往下写;给它一个问题,它可能会回答,也可能再吐出三个问题,因为互联网上的文本往往就是这个样子。后训练(post-training)指的是预训练之后的一切工作,目的是把这个原始的续写器变成我们想要的样子:能遵循指令的助手、回答前会认真推理的模型、会调用工具的智能体(agent),以及会拒绝有害请求的系统。
本部分从第一性原理出发,讲解完成这些工作的算法。我们从最朴素的监督微调(SFT)开始,逐步搭起大模型领域使用的强化学习工具箱(策略梯度、PPO、KL 惩罚),再用它推导出 RLHF、DPO 和 GRPO。沿途还会讲到:推理模型如何在测试时花费额外算力;为什么"可验证奖励的强化学习"(RLVR)在 2025 年成为主流配方;如何借助蒸馏和 LoRA 把这一切变得负担得起;以及智能体和安全训练如何叠加在这些之上。
为什么重要:你接触到的几乎每个模型都是经过后训练的模型,而且在 2025–2026 年,前沿实验室投入后训练的算力和研究精力占比越来越高,甚至超过预训练。只要理解每个阶段在优化什么目标,你就能预测它会改变模型的什么、不会改变什么,也能把任何一篇新的后训练论文读成"对某个我已经熟悉的东西的小改动"。
先修知识与时间¶
- 数学:线性代数、概率(期望、条件概率、对数似然)、基础微积分(梯度、链式法则)。
- 代码:Python 和基础 PyTorch(张量、
nn.Module、自动求导、优化器训练循环)。 - 来自第一部分:什么是仅解码器(decoder-only)Transformer,下一个 token 的交叉熵训练如何工作,以及 token 和 logits 是什么(第一部分)。
- 不要求有强化学习基础;第 2.3 章会从零讲起。
预计时间:阅读和练习约 25–35 小时;如果做动手项目,再加 10–30 小时(小模型用一块消费级或云端 GPU 就够了)。
章节地图¶
| # | 章节 | 一句话简介 |
|---|---|---|
| 2.1 | 为什么要后训练? | 基座模型 vs 助手模型、各阶段分别带来什么、对话模板、如何评估后训练 |
| 2.2 | 监督微调 | SFT 目标函数、损失掩码、序列打包、超参数、数据来源、完整训练循环 |
| 2.3 | 大模型的强化学习基础 | 把生成看作 MDP、策略梯度、REINFORCE、基线、PPO、GAE、KL 惩罚 |
| 2.4 | RLHF | 偏好数据、Bradley–Terry 奖励模型、四模型 PPO 循环、奖励投机、RLAIF |
| 2.5 | 直接偏好优化 | 从 RLHF 目标推导 DPO、其损失的代码实现、β、变体、离线 vs 在线 |
| 2.6 | 推理与测试时算力 | 思维链、自洽性、best-of-N、过程奖励 vs 结果奖励、思考预算 |
| 2.7 | 可验证奖励的强化学习 | 基于规则的奖励、GRPO、DeepSeek-R1 配方、DAPO/Dr. GRPO/GSPO/CISPO 的改进、RL 基础设施 |
| 2.8 | 蒸馏与高效微调 | 知识蒸馏、在线策略蒸馏、从零实现 LoRA、QLoRA、DoRA |
| 2.9 | 智能体、工具使用与安全 | 函数调用、ReAct、智能体强化学习、MCP、智能体基准、拒答与安全训练 |
心智模型¶
现代后训练流水线由一系列阶段组成,每个阶段在不同的数据上优化不同的目标:
┌────────────────────────────────────────────────────────────────┐
│ (安全 / 对齐数据贯穿各阶段混入) │
└────────────────────────────────────────────────────────────────┘
┌────────────┐ ┌──────────────┐ ┌─────────────────────┐ ┌────────────────────┐
│ 基座模型 │──►│ SFT │──►│ 偏好调优 │──►│ RLVR(数学、代码、 │──► 助手 /
│ (第一部分)│ │ 第 2.2 章 │ │ RLHF 第 2.4 章 / DPO│ │ 工具、智能体) │ 推理 /
│ 下一个token│ │ 对回答做交叉熵│ │ 第 2.5 章 │ │ GRPO 第 2.7 章 │ 智能体模型
└────────────┘ └──────────────┘ │ "哪个回答更好?" │ │ "答案能否被检验为 │ │
▲ └─────────────────────┘ │ 正确?" │ │
│ ▲ └────────────────────┘ │
│ └──── RL 工具箱 ─────┘ │
│ (第 2.3 章) │
│ ▼
└────────────── 蒸馏(第 2.8 章):大的后训练模型 ──────────────────┘
为小的学生模型生成数据 / logits
测试时算力(第 2.6 章)和工具使用(第 2.9 章)是后续阶段所要训练出来的行为。
| 阶段 | 数据 | 目标 | 带来什么 |
|---|---|---|---|
| SFT | (提示,理想回答)对,包括长思维链轨迹 | 对回答 token 的交叉熵 | 格式、指令遵循、推理的"冷启动" |
| 偏好优化 | (提示,被选中的回答,被拒绝的回答) | RLHF(奖励模型 + PPO)或 DPO 系列损失 | 有用性、风格、无害性 |
| RLVR | 带可检验答案的提示(单元测试、数学答案、工具执行结果) | 策略梯度(GRPO、DAPO、GSPO…) | 推理、长思维链、智能体技能 |
| 蒸馏 | 教师模型的输出或 logits | SFT 或在线策略 KD | 廉价的小模型,继承大模型的能力 |
真实的训练配方会对这些阶段重新排序并重复(例如 DeepSeek-R1 交替进行了两轮 SFT 和 RL,见第 2.7 章),但每个阶段都是上面某个方框的一种。
如何学习本部分¶
- 按顺序读到 2.5。2.1–2.2 章很快;2.3 章是整个部分的数学核心,不要跳过:一旦熟悉了策略梯度和带 KL 正则的目标,RLHF、DPO 和 GRPO 都不过是一页代数。
- 2.6 和 2.7 章配合着读。2.6 解释为什么更多的思考 token 有帮助;2.7 解释 RL 如何教会模型产生它们。
- 2.8 和 2.9 章可以任意顺序阅读,也是最直接实用的两章。
建议的动手项目(每个对应一章):
- (2.2) 用 TRL 的
SFTTrainer+ LoRA,在指令数据集上对一个 0.5–1.5B 的模型(例如小号 Qwen)做 SFT。然后用 2.2 章的代码自己写训练循环。 - (2.4/2.5) 在 UltraFeedback 上训练 DPO;与 SimPO 对比。
- (2.7) 复现一个迷你版 R1-Zero:在 GSM8K 或 countdown 任务上用基于规则的奖励跑 GRPO(TRL GRPOTrainer 或 verl)。绘制训练过程中的奖励、回答长度和熵的曲线。
- (2.7) 加入 DAPO 的 clip-higher 和动态采样,比较训练稳定性。
- (2.8) 蒸馏:用一个更大的开源推理模型生成的推理轨迹对 1.5B 模型做 SFT;在数学基准上评估。
- 以 Hugging Face Open-R1 项目和 Tülu 3 open-instruct 代码作为参考实现。
一本与本部分很搭的免费教材是 Nathan Lambert 的 RLHF Book。