L08: Post-training
Week 4 · Thu Jan 29 2026 08:00:00 GMT+0800 (中国标准时间)
L08: Post-training
Slides
中英交替版(推荐)
英文原版
中文翻译版
核心知识点
1. 语言建模 != 辅助用户
- 预训练 LM 只会续写文本(completion),不会遵循指令
- GPT-3 示例:对 “Explain X” 的回复是生成更多类似 prompt,而非实际回答
- 核心问题:语言模型与用户意图未对齐(not aligned)
📐 预训练 LM 与助手模型的目标差异
预训练语言模型的目标:在给定任意前缀的情况下,预测最可能的下一个 token:
这个目标对输入内容完全无偏——给定 “The sky is” 和给定 “How do I make a bomb? Answer:” 都一视同仁,只预测下一个最可能的 token。
助手模型的目标:给定用户请求 和系统角色描述 ,生成有帮助的回复:
两者的根本差异:LM 目标是描述性的(世界上的文本是什么样的),助手目标是规范性的(回复应该是什么样的)。这个差距——对齐问题(Alignment Problem)——是后训练(post-training)存在的根本原因。
📚 已收录至 拓展阅读知识库
💡 为什么这样做?
把预训练 LM 想象成一个读了大量书的人,他能流利地”续写”任何文章风格。但”续写文章”和”回答你的问题”是完全不同的事。如果你在一本书里问”今天天气怎么样?“,接下来的文字很可能是”晴朗的春日让人心情愉悦……”,而不是真正回答天气预报。预训练模型的行为正是如此——它在模仿训练数据的分布,而不是在帮你解决问题。
⚠️ 常见误区
-
误区:RLHF/SFT 的目的是让模型变得”更聪明”、获得更多知识 → 正确:模型的能力(推理、知识、代码)主要在预训练阶段获得,后训练的核心目的是行为对齐——让模型更有用(Helpful)、更无害(Harmless)、更诚实(Honest),即 Anthropic 的 HHH 框架。后训练可以激发预训练中隐含的能力,但无法凭空创造新能力。
-
误区:只要模型够大,预训练后就能自动成为好助手 → 正确:GPT-3(175B)在没有对齐的情况下,会在”Explain the moon landing” 之后生成更多关于月球登陆的讨论(而非解释),因为这是语料中最可能的续写。规模不能替代对齐。
2. Instruction Fine-tuning(指令微调)
- 收集 (instruction, output) 对,跨多任务微调 LM
- Super-NaturalInstructions:1.6K+ 任务,3M+ 样本
- Flan-T5(Chung et al., 2022):T5 在 1.8K 任务上指令微调
- 更大模型 = 更大的指令微调增益(T5-XXL: +26.6)
- 模型可在未见任务上泛化
- 数据 + 模型规模是关键
- 新基准:MMLU(57 个知识密集型任务)、BIG-Bench(200+ 任务)
📐 SFT 目标函数
监督微调(Supervised Fine-Tuning) 与标准语言模型训练的区别仅在于损失计算的范围:
- :(指令 / 用户请求,示范回复)对
- 只在回复 上计算损失,指令 的 token 损失被 mask 掉(不参与梯度更新)
- 这与标准 CLM 预训练的区别:SFT 的模型需要学的是”给定指令,生成好的回复”,而不是”给定任意前缀,续写任意文本”
数学上,SFT 等价于在条件分布 上做最大似然估计(MLE),以人类示范回复作为正样本。
📚 已收录至 拓展阅读知识库
🔢 InstructGPT 数据集规模对比
| 数据类型 | 规模 | 用途 |
|---|---|---|
| SFT 示范数据 | ~13K 指令 | 训练 SFT 模型 |
| RM 偏好数据 | ~33K 偏好对 | 训练奖励模型 |
| PPO 提示 | ~31K 提示 | PPO 在线优化 |
| GPT-3 预训练数据 | ~300B tokens | 预训练(对比) |
关键洞察:SFT 数据量(13K)比预训练数据(3000 亿 token)小约 2300 万倍,但效果变化天翻地覆。这说明对齐是一个数据效率极高的过程——模型的能力已在预训练中存在,SFT 只是”解锁”正确的行为模式。
LIMA 论文(Zhou et al., 2023)进一步证明:1000 个高质量 SFT 样本与 52K 个 Alpaca 样本效果相当甚至更好,彻底颠覆了”SFT 需要大量数据”的认知。
⚠️ 常见误区
-
误区:SFT 数据越多越好 → 正确:数据质量远比数量重要。低质量示范(如 GPT-3 自动生成的标注)可能引入坏的行为模式。人工精心标注的少量数据(LIMA 的 1000 条)往往优于自动生成的大量数据(Alpaca 的 52K 条)。
-
误区:在指令上也计算损失能帮助模型更好地理解指令 → 正确:在指令上计算损失会让模型同时学”如何生成指令”,这不是目标,且会稀释回复生成的训练信号。正确做法是对指令部分的 token 用 loss mask 屏蔽。
3. RLHF(从人类反馈中强化学习)
- 三阶段流水线:SFT -> Reward Model 训练 -> PPO 优化
- PPO 的复杂性:需要 Policy Model + Value Model + Reward Model + Reference Model
- KL 散度约束防止偏离预训练分布太远
- 超参数敏感、在线采样慢、训练不稳定
📐 RLHF 完整流程的数学推导
Step 1:训练奖励模型(Reward Model)
收集人类偏好数据:对同一输入 ,标注者标记哪个回复更好,形成偏好对 (winner, loser)。
基于 Bradley-Terry 偏好模型(人类选择 优于 的概率):
训练 RM 最大化偏好数据的对数似然(最小化负对数似然):
Step 2:PPO 微调策略
最大化奖励,同时通过 KL 惩罚约束策略不偏离参考模型过远:
其中 是 KL 惩罚系数, 是 SFT 模型(固定不更新)。
完整训练所需的模型数量:Policy(更新) + Reference(固定) + Reward(固定) + Value(更新)= 4 个模型同时在显存中,这是 PPO 内存开销大的根本原因。
📚 已收录至 拓展阅读知识库
🔢 Reward Hacking 与 KL 约束的数值示例
场景:奖励模型过度偏好”长且流畅的回复”(常见的 RM 偏差)。
未加 KL 约束时():
- 模型学会无限重复、填充废话以增加长度
- 某回复:奖励 ,但实际对用户无用(reward hacking)
加 KL 约束后():
-
某冗长回复:,
-
有效奖励 =
-
某精简回复:,
-
有效奖励 = ← 更高!
结论:KL 惩罚使模型倾向于用更接近 SFT 模型行为的方式获得奖励,抑制了极端的 reward hacking。
⚠️ 常见误区
-
误区:RLHF 是”在人类偏好上优化” → 正确:RLHF 是”在奖励模型上优化”。奖励模型是人类偏好的近似,本身有误差。Goodhart’s Law:“当一个度量指标成为优化目标时,它就不再是好的度量指标”——模型会找到奖励模型的漏洞(如倾向于给更长、语气更确定的回复高分),而不是真正提高有用性。
-
误区:KL 约束 越小越好(更自由地优化奖励) → 正确: 太小会导致严重的 reward hacking 和模型退化; 太大则 RLHF 效果微弱(模型几乎不更新)。 的调优是 RLHF 最重要的超参数之一,通常需要实验搜索。
4. InstructGPT 和 ChatGPT
- InstructGPT(Ouyang et al., 2022):首次大规模应用 RLHF
- 从补全模型到对话助手的关键转变
📐 InstructGPT 三阶段训练流水线
阶段 1 — SFT:在人工示范数据上监督微调,得到 :
阶段 2 — RM 训练:学习人类偏好排序,得到奖励函数 :
阶段 3 — PPO:在 RM 的奖励下优化策略,约束不偏离 :
关键结论(InstructGPT 论文原文数字):
在人类评测中,1.3B 参数 InstructGPT 优于 175B 参数 GPT-3(85% 的评测者偏好 InstructGPT 输出)。参数量相差 134 倍,但对齐使小模型胜出——说明行为对齐的收益远超单纯的模型规模。
📚 已收录至 拓展阅读知识库
🔢 InstructGPT 的人类评测结果
| 对比组 | 偏好 InstructGPT 的比例 |
|---|---|
| InstructGPT-1.3B vs GPT-3-175B | 85% |
| InstructGPT-175B vs GPT-3-175B | ~85% |
| InstructGPT-175B vs RLHF without SFT | 71% |
同等参数量的 InstructGPT-175B 与 GPT-3-175B 对比,仍有 85% 偏好率,说明 RLHF 而非模型规模是主要贡献。
⚠️ 常见误区
-
误区:ChatGPT = InstructGPT → 正确:ChatGPT 在 InstructGPT 框架基础上加入了多轮对话历史建模,将整个对话 history 作为 context 输入。此外,ChatGPT 针对安全性有额外的 RLHF 阶段。OpenAI 从未公开 ChatGPT 的完整技术细节。
-
误区:RLHF 之后模型完全”听话”,不会产生有害输出 → 正确:RLHF 显著降低了有害输出,但无法完全消除——通过 jailbreak(越狱 prompt)、角色扮演等方法仍可绕过安全训练。这是对抗式 AI 安全研究的核心问题。
5. DPO(Direct Preference Optimization)
- 核心洞察:RLHF 目标的闭式解可将 reward model 用 policy 的对数概率比表示
- DPO 损失:
- Z(x) 在损失中消去(因为只测量 reward 差异)
- 用简单的加权 MLE 替代复杂的 RL
- 开源 LLM 几乎都用 DPO(HuggingFace 排行榜验证)
- 变体:KTO、IPO 等
📐 DPO 从 RLHF 目标的完整推导
Step 1:RLHF 目标的最优解
RLHF 最大化(对每个输入 ,对所有可能输出 求最优):
对此目标关于 取变分,令导数为零,得闭式最优策略:
其中 是归一化常数(配分函数)。
Step 2:反解奖励函数
由上式取对数,用 表示 :
Step 3:代入 Bradley-Terry 偏好模型
代入 的表达式, 在差值中完全抵消:
Step 4:DPO 损失(用 近似 ,最大化偏好对数似然):
结论:DPO 完全绕过了奖励模型的训练,直接用偏好数据优化策略,且数学上等价于 RLHF 的最优解。
📚 已收录至 拓展阅读知识库
🔢 DPO vs RLHF 工程复杂度对比
| 维度 | RLHF (PPO) | DPO |
|---|---|---|
| 需要的模型数量 | 4(Policy + Value + RM + Ref) | 2(Policy + Ref) |
| 是否需要在线采样 | 是(每步采样新回复) | 否(离线偏好数据) |
| 训练稳定性 | 较差(PPO 对超参敏感) | 较好(标准 MLE 梯度) |
| GPU 显存需求 | 极高(4 模型同时加载) | 适中(2 模型) |
| 是否需要 RM 单独训练 | 是 | 否 |
典型实践:Llama 2/3、Mistral、Qwen 等主流开源模型的偏好对齐阶段均采用 DPO 或其变体(SimPO、KTO)。
⚠️ 常见误区
-
误区:DPO 总是优于 RLHF → 正确:DPO 是离线方法——它只能从固定的偏好数据集中学习,而 PPO 可以通过在线与奖励模型交互动态生成新训练数据(探索未见过的输出)。对于分布外的困难指令,DPO 可能不如 PPO 的在线 RL 有效。近期 Online-DPO 和 DAPO 等方法试图结合两者优势。
-
误区:DPO 推导中 消去,说明归一化常数无关紧要 → 正确: 消去是数学推导的偶然便利,它实际上仍然存在于最优策略 中。DPO 的真正假设是:偏好数据是由”接近真正最优策略”的分布生成的,当数据分布与当前策略差距大时(distribution shift),DPO 会失效。
6. GRPO(Group Relative Policy Optimization)
- 来自 DeepSeekMath(Shao et al., 2024)
- 相比 PPO 移除了 Value Model,用 group computation 估计 advantage
- 更简单的训练架构
📐 GRPO 目标函数推导
核心思想:PPO 需要一个单独的 Value Network(价值网络)来估计优势函数(Advantage)——这个网络和策略网络一样大,代价极高。GRPO 用组内相对奖励代替价值网络。
Step 1:组内采样
对同一输入 ,从当前策略采样 个输出 ,计算各自奖励 。
Step 2:优势估计(组内归一化)
表示第 个输出优于组内平均, 则相反。
Step 3:GRPO 目标(结合 PPO clip 技巧)
与 PPO 的对比:PPO 用 ( 是价值网络),而 GRPO 用组内统计替代,消除了对价值网络的需求,节省了约 50% 的训练显存。
📚 已收录至 拓展阅读知识库
🔢 DeepSeek-R1 使用 GRPO 训练推理模型
任务:数学题求解(可自动验证正确性)
参数设置:(每题采样 16 个解),,
一次训练步示例(某道数学题):
| 解法编号 | 是否正确 | 格式分 | 总奖励 |
|---|---|---|---|
| 正确 ✓ | +0.1 | 1.1 | |
| 错误 ✗ | +0.1 | 0.1 | |
| 正确 ✓ | 0 | 1.0 | |
| …(16个) | … | … | … |
设 ,:
- (上调概率)
- (下调概率)
训练信号:增加 类解法的概率,降低 类解法的概率——模型学会”比平均水平更好的解题思路”。
⚠️ 常见误区
-
误区:GRPO 可以用于任何 NLP 任务 → 正确:GRPO 依赖可自动评分的奖励函数(如数学答案对错、代码是否通过测试)。对于需要人类判断的开放性任务(如写作风格、创意),无法在每步对 个输出进行快速自动评分,实践中通常用预训练的奖励模型代替,但这又带回了奖励模型偏差的问题。
-
误区:组内采样数 越大越好 → 正确: 增大确实能让优势估计更准确,但计算成本是 的。当 过大时,正确/错误样本比例可能过于固定(高难题全错、简单题全对),组内方差趋近于零,优势估计退化。DeepSeek-R1 选择 是经过消融实验的平衡点。
7. 偏好数据的伦理问题
- RLHF 标注数据来源:大量海外低薪劳工
- 标注者偏见可能渗入模型(OpinionQA 研究)
- Reward model 对不同国家/文化的偏好不均匀
- AI Feedback 作为替代:RL from AI Feedback(Bai et al., 2022)
💡 为什么这样做?
RLHF 的本质是用”人类偏好”定义”好的回复”,但人类偏好是主观的、文化相关的、有偏的。OpenAI 的 InstructGPT 标注者主要来自美国和英语国家;Anthropic 使用众包平台(Mechanical Turk)的标注者人口结构偏向年轻、英语为母语的人群。这些偏好被嵌入奖励模型,再被 RLHF 放大。结果是:模型对某些文化背景的用户”更有帮助”,对其他文化的用户则可能产生偏见性或不当回复。OpinionQA 研究(Santurkar et al., 2023)发现,主流 LLM 的意见分布与特定人口群体高度相关,不能代表全球用户多样性。
⚠️ 常见误区
-
误区:RLHF 让模型更诚实(Honest)→ 正确:RLHF 让模型产生看起来诚实的回复,但奖励模型通常由倾向于给”自信、流畅回复”高分的人类标注者训练。这可能导致模型学会”自信地编造事实”(hallucination with confidence),而不是”诚实地承认不确定性”。真正的诚实需要专门设计针对不确定性表达的评估和训练数据。
-
误区:用 AI Feedback(RLAIF,Bai et al., 2022)代替人类标注可以消除偏见 → 正确:RLAIF 只是将偏见的来源从”人类标注者”转移到”作为评判者的 LLM”。评判模型本身就包含了人类偏见(因为它也是由人类数据训练的),偏见并没有消失,只是变得更不透明。
推荐阅读
- InstructGPT — Ouyang et al., 2022
- Scaling-Instruction-FT — Chung et al., 2022
- AlpacaFarm — Dubois et al., 2023
- How-Far-Camels — Tulu, 2023
- DPO — Rafailov et al., 2023