预训练、指令微调和人类反馈对齐分别做了什么?
一句话回答
预训练在海量无标注文本上做"预测下一个 token",学到语言能力和世界知识,产物是只会续写的基础模型;指令微调(SFT)用"指令和回答"形式的高质量数据继续训练,让模型学会按指令回答、遵守对话格式;偏好对齐利用人类对多个回答的好坏比较,通过 RLHF(先训练奖励模型,再用强化学习优化)或 DPO(直接用偏好数据优化),让回答更有帮助、更诚实、更安全。我们通过 API 使用的,基本都是走完这几个阶段的对话模型。
详细解析
三个阶段对比
| 阶段 | 数据 | 训练目标 | 产物 |
|---|---|---|---|
| 预训练 | 海量网页、书籍、代码等无标注文本 | 预测下一个 token | 基础模型(Base),擅长续写 |
| 指令微调(SFT) | 规模小得多的高质量指令、回答和多轮对话 | 仍是预测下一个 token,通常只在回答部分计算损失 | 能理解指令的对话模型 |
| 偏好对齐 | 同一问题的多个回答,加上人类(或 AI)标注的偏好 | 提高好回答的概率,降低差回答的概率 | 更符合人类偏好的模型 |
预训练通常占训练算力的大头;后两个阶段的数据量小得多,却决定了模型"好不好用"。
为什么基础模型直接用不好用
基础模型只学会了"接着写",并不知道自己应该"回答":
输入:法国的首都是哪里?
基础模型可能的续写:德国的首都是哪里?英国的首都是哪里?……
(训练语料里这类问题常出现在题目列表中,它就按列表的样子续写下去)
对话模型的回答:法国的首都是巴黎。
基础模型也不懂对话的角色格式,不会拒绝有害请求,输出风格也不可控。它主要用作继续训练的起点,或者在研究中通过精心设计的续写格式来使用。
偏好对齐:RLHF 和 DPO
RLHF(基于人类反馈的强化学习)分三步:
- 收集偏好:同一个 Prompt 让模型生成多个回答,由标注员比较哪个更好
- 训练奖励模型:输入问题和回答,输出一个分数,让被偏好的回答得分更高
- 强化学习:模型生成回答,奖励模型打分,用 PPO 等算法更新模型;同时加 KL 约束,限制模型不要偏离 SFT 模型太远
DPO(直接偏好优化)跳过奖励模型和强化学习,直接用"好回答、差回答"成对的数据训练:相对于一个参考模型,提高好回答的概率、降低差回答的概率。它实现简单、训练稳定、成本更低,很多开源模型都在使用。
偏好数据也可以由 AI 按事先写好的原则来标注(RLAIF),以减少人工成本。推理模型还会在数学、代码这类答案可以自动验证的任务上做大规模强化学习,见 思维链和推理模型。
对应用开发者意味着什么
- 应用团队说的"微调"基本都是 SFT(多用 LoRA 这类参数高效的方法),有时再加上 DPO;预训练成本极高,几乎不会自己做,见 微调、RAG 和 Prompt 工程怎么选
- 一个常见的观点是:知识主要来自预训练,SFT 更多是教会模型"用什么格式和方式回答"。想给模型补充知识,优先考虑 RAG
代码示例
SFT 和 DPO 训练数据的常见格式(字段名因框架和平台而异):
{
"sft_example": {
"messages": [
{ "role": "system", "content": "你是电商客服,回答简洁礼貌" },
{ "role": "user", "content": "下单后多久发货?" },
{ "role": "assistant", "content": "现货商品一般在付款后 48 小时内发货,预售商品以页面标注的时间为准。" }
]
},
"dpo_example": {
"prompt": "用一句话解释什么是闭包",
"chosen": "闭包是函数和它定义时所在词法作用域的组合,函数在作用域之外执行时,仍能访问其中的变量。",
"rejected": "闭包就是函数里面套一个函数。"
}
}
面试官可能追问
RLHF 为什么要加 KL 约束?
奖励模型只是人类偏好的近似,本身有漏洞。不加约束的话,模型会找到奖励模型的漏洞刷高分,比如输出又长又空的内容(reward hacking),同时丢掉原有的语言能力。KL 约束让模型在提高奖励的同时,不要离 SFT 模型太远。
为什么对齐后的模型会"讨好"用户?
标注时,人们往往更喜欢赞同自己、语气肯定的回答,奖励模型学到了这种偏好,模型就可能顺着用户的错误观点说下去,这叫谄媚(sycophancy)。根本上要靠改进训练数据和方法;应用层也可以在 Prompt 中要求"发现用户的说法有误时直接指出"。
开源模型的 Base 版和 Instruct 版怎么选?
做对话、问答、工具调用等应用,选 Instruct 版,它已经学会了对话格式和指令遵循。Base 版适合继续预训练,或者用大量自有数据重新塑造模型的行为。自己部署 Instruct 版时,输入要按它的对话模板(chat template)组织,推理框架的对话接口一般会自动处理;格式不对,效果会明显下降。
易错点
- SFT 和预训练的训练目标都是预测下一个 token,区别在数据和计算损失的范围
- RLHF 里的人类反馈主要用来训练奖励模型,不是每一步都有人打分
- 对齐不只是"安全",也包括有帮助、诚实、遵循指令
- 基础模型不是"差模型",它只是还没学会对话
AI 模拟面试官
用自己的话回答,AI 对照参考答案打分、指出遗漏,再追问,最多 3 轮
这道题你掌握了吗?
选一个最接近的状态,没掌握的题会出现在"我的进度 · 待复习"里。
学习记录暂存在本机浏览器。登录后自动同步到账号,换设备也能看到。