预训练 → SFT → RLHF:让模型"听话"
你跟 ChatGPT / Claude / Gemini 聊天,它们温和、有礼、会拒绝危险请求。这不是参数变多换来的 —— GPT-3(175B)刚出来时和 ChatGPT 一样大,但它非常"野"。把"野模型"变成"听话助手",靠的是这一节讲的三阶段训练。
① 一个直观对比:同一个问题,三个阶段回答的差距
切换不同的问题,看一个模型在预训练 / SFT / RLHF 三个阶段会怎么回答。 三个阶段用的模型可能参数量完全一样,差距全在训练目标:
三种回答的差距,不是模型变大了(参数量可能一样),而是训练目标不同导致的。 Base 学的是"续写互联网文本";SFT 学的是"按问答格式回答";RLHF 学的是"什么样的回答更被人类喜欢"。
关键观察:(1)Base 不"理解"你在跟它说话;(2)SFT 学会了对话格式但回答机械; (3)RLHF 多了"共情"、"主动拒绝"、"详细解释"这些人类偏好的特质。
② 阶段 1:预训练(Pretraining)
预训练就是上节讲的"大规模自回归语言建模":拿几 TB 的互联网文本(CommonCrawl + Wikipedia + Books + Code + ...), 训练目标只有一个:给定上文预测下一个 token。
- 数据:几 TB 的无标注原始文本。 GPT-3 用 ~570GB,LLaMA-2 用 ~5TB,Claude 3 估计 ~10TB+。
- 目标:(交叉熵 loss)
- 算力:GPT-3 训练用了 ~3640 PFLOP-days,相当于 1024 × A100 跑 ~30 天。
- 输出:一个"LLM 基座(base model)"。 它什么都"知道",但它不会"对话" —— 你给它什么前缀它就续写什么。
关键认知:预训练教的是"世界知识 + 语言能力",不是"如何成为助手"。 基座模型见过维基百科,所以"知道"巴黎是法国首都;但你问它"法国的首都是?"它可能续写成一篇地理博客的开头,而不是直接回答 —— 因为它在互联网上见过的"问题—回答"格式远远少于"问题—讨论 / 复读 / 标题"等噪音。
③ 阶段 2:SFT(监督微调)—— 教模型"按问答格式回答"
SFT = Supervised Fine-Tuning。在基座模型上继续训练,但用精挑细选的"指令—回答"对话格式数据:
### 助手:尊敬的 X 总,您好:
由于今天早上发烧到 38.5 度...
训练目标和预训练完全一样—— 还是 next-token prediction,还是交叉熵。 但数据从"互联网原汁原味文本"换成"人工编写的优质对话",模型就学会了:
- 遇到
### 用户:...时,应该跟### 助手:+ 实际回答 - 回答要直接、有条理、按用户的请求格式来
- 不要继续续写其他无关内容
SFT 数据规模通常是 1 万 ~ 10 万条,远比预训练(万亿 token)少,但质量要求极高。 Anthropic、OpenAI 都雇了几百人专门写、审核、改这些对话样本。
np. 看自动提示,⌘/Ctrl + Enter运行。④ SFT 之后还差什么?
SFT 模型已经"会对话"了,但还有问题:
- 回答机械、缺乏共情 —— 因为标注员只能写"对的"回答,没法精确表达"好的"回答
- 很难拒绝危险请求 —— SFT 数据里"如何回答 X"清晰,但"什么时候不要回答 X"难以穷举
- 有些回答虽然格式对、内容不一定有用 —— 模型不知道哪种风格人类更喜欢
要解决这些,就需要给模型一个更高维度的反馈信号:不仅告诉它"这样答对了", 还要告诉它"两个都对的回答里,哪个更好"。这就是 RLHF。
⑤ 阶段 3:RLHF(人类反馈强化学习)
RLHF 是 InstructGPT 论文(OpenAI 2022)公开的方案,三步走:
5.1 收集偏好数据
对每个 prompt,让 SFT 模型生成 2~4 个候选回答,让标注员排序谁更好:
A: "听你这么说,挺为你担心的..." ← 标注:1st 喜欢
B: "心情不好就别问我了。" ← 标注:2nd
5.2 训练奖励模型(Reward Model)
把上面的偏好数据训成一个奖励模型:输入 (prompt, response),输出一个标量分数 r。 训练目标是"被偏好的回答分数 > 被拒绝的回答分数":
跑一下:
np. 看自动提示,⌘/Ctrl + Enter运行。5.3 用 PPO 优化 SFT 模型
最后一步:把 SFT 模型当作"策略 π",让它生成回答,RM 打分,PPO 强化学习更新 π, 让 π 越来越倾向输出 RM 打分高的回答。
np. 看自动提示,⌘/Ctrl + Enter运行。PPO(Proximal Policy Optimization)是 OpenAI 2017 提出的强化学习算法, 核心是"每步只走一小步,clip 掉太大的更新"。RLHF 用 PPO 而不是 SGD,因为它在不稳定的奖励信号下更鲁棒。
⑥ 三阶段一张图概览
| 阶段 | 数据 | 目标 | 规模 |
|---|---|---|---|
| 预训练 | 几 TB 原始文本 | 学语言 + 世界知识 | ~10⁻¹² token |
| SFT | 人工编写的对话样本 | 学对话格式 | ~1万-10万条 |
| RLHF | 人工偏好排序 → 奖励模型 → PPO | 学"人类喜好" | ~10万-100万 偏好对 |
⑦ 现代变体:DPO、Constitutional AI、RLAIF
RLHF 在 2024–2025 出现了几个简化方案:
- DPO(Direct Preference Optimization, 2023):跳过显式训奖励模型, 直接用偏好数据优化策略。数学上等价于"RM + PPO",但代码简单 50 倍,已经成为开源社区主流。
- Constitutional AI(Anthropic 2022):Claude 用的方法, 用一份"宪法"(一组原则)让模型自己批评、自己改进自己的回答,减少对人类标注的依赖。
- RLAIF(RL from AI Feedback):用一个强模型当"标注员",给弱模型的输出打分。 比 RLHF 便宜得多,效果接近。
⑧ 一个常见误区
听到"RLHF 是 ChatGPT 的核心"很容易以为它"教会了模型新知识"。不是。 RLHF 只是把"已经存在但被压抑的能力"解锁出来。 基座模型本就能回答你的问题(它见过几乎一切),只是不知道"应该回答"。 SFT + RLHF 不教知识,只教"什么时候、用什么风格去用知识"。
这也是为什么开源社区只要拿 LLaMA-2 base + 几万条 SFT 数据,就能做出表现接近 ChatGPT 的助手 —— 知识早就在那了。
⑨ 小测验
⑩ 延伸阅读
- InstructGPT 论文 — Training language models to follow instructions with human feedback:OpenAI 2022,RLHF 的标准做法都来自这篇。
- DPO — Direct Preference Optimization:把 RLHF 简化成一个 loss 函数,2024 后的开源对齐基本都用它。
- Anthropic — Claude's Constitution:Claude 的 Constitutional AI 方法和原则细节。
- HuggingFace TRL:开源 RLHF / DPO 库,自己跑一遍 PPO 训练最直观。