微调与对齐:从「会接话」到「能用」
约 14 分钟
预训练完的模型知识渊博,但并不好用。它只会接着往下写,不会「听话」。
你问它「怎么做番茄炒蛋?」
一个纯预训练模型可能回答:「怎么做红烧肉?怎么做糖醋排骨?」因为在互联网语料里,问题后面经常跟着更多问题(比如一个问题列表)。它在做的是最可能的续写,不是回答你。
从「会接话」到「能用」,中间隔着对齐(alignment)。
第一步:监督微调(SFT)
用人工编写的「指令—回答」配对数据继续训练:
指令:把这段话翻译成英文:今天天气很好。
回答:The weather is nice today.
指令:用三句话解释什么是光合作用。
回答:光合作用是植物利用光能……
规模:通常几万到几十万条高质量样本。
关键认识:质量远比数量重要。 几千条精心撰写的数据,效果可以超过几十万条粗糙数据。原因是模型的知识已经在预训练阶段获得了,SFT 只是在教它「以什么形式呈现」——这个「格式」不需要海量数据。
指令微调(instruction tuning)是 SFT 的一种,特点是用多样化的任务训练,让模型学会泛化到没见过的指令。
第二步:从人类反馈中学习(RLHF)
SFT 之后模型会听指令了,但还有个问题:很多问题没有唯一正确答案。
「帮我写一封道歉信」——什么样算好?很难写出标准答案,但人类很容易在两个回答之间说出哪个更好。
这个不对称是 RLHF 的出发点:评价比创作容易。
三个步骤:
① 让模型对同一个问题生成多个回答
② 人类标注员对这些回答排序(A 比 B 好)
③ 用排序数据训练一个「奖励模型」,它学会给回答打分
④ 用强化学习(PPO 等)优化语言模型,让奖励模型给的分数更高
奖励模型是关键:它把「人类偏好」这件模糊的事,变成了一个可优化的数值目标。
对齐要解决的三件事(3H)
| 目标 | 含义 |
|---|---|
| Helpful 有用 | 真的回答问题,而不是回避 |
| Honest 诚实 | 不知道就说不知道,不编造 |
| Harmless 无害 | 拒绝协助造成伤害的请求 |
这三者经常互相冲突,这是对齐最难的地方:
- 过度强调无害 → 模型变得畏首畏尾,正常问题也拒答
- 过度强调有用 → 可能协助有害请求
- 过度强调诚实 → 大量回答「我不确定」,失去实用性
调这三者的平衡,是一项工程也是一项判断。
更轻的做法:DPO
RLHF 的流程复杂(要训奖励模型、要跑强化学习、超参数敏感)。
直接偏好优化(DPO) 证明了可以跳过奖励模型和强化学习,直接用偏好数据优化语言模型,数学上等价,但实现简单得多、训练稳定得多。
这类方法正在成为主流,因为它把对齐的门槛大幅降低了。
参数高效微调:PEFT
全量微调一个大模型需要海量显存(要存参数、梯度、优化器状态)。LoRA 是最流行的解法:
冻结原模型的全部参数,只在旁边加一对低秩矩阵 、,训练时只更新它们。
效果:可训练参数量降到原来的百分之一甚至千分之一,效果接近全量微调。
额外好处:一个基座模型 + 多个小 LoRA 权重,可以按需切换不同「人格」或领域能力,不用存多份完整模型。
练习:为什么说 RLHF 的出发点是「评价比创作容易」?举一个你自己领域里的例子。
为什么纯预训练模型问「怎么做番茄炒蛋」可能回答一串别的问题?RLHF 的出发点是什么不对称?
登录 后可看答案