目录
上一课的 SFT 用“问题—理想回答”示范教模型接话。但真实使用中,许多问题没有唯一的标准答案:两个回答可能都没错,却一个更具体、更贴近用户需求。要继续改进模型,我们需要表达的不是“答案是什么”,而是在同一个问题下,哪个回答更好。
偏好对齐不是把“人类价值”完整写进模型;它是让模型更倾向于产生训练数据中被选中的那类回答。
同一个问题,两个回答
用户问:“我只有 10 分钟,怎样准备一次技术分享?”模型给出两个回答:
| 回答 | 内容(节选) | 这个例子里的判断 |
|---|---|---|
| A | “先写一句核心结论;用一个例子解释;最后留两分钟答疑。只做三页幻灯片。” | 更可执行,被选中(chosen) |
| B | “充分准备,保持自信,多和听众交流。” | 没有明显错误,但太笼统(rejected) |
这里的选择依赖任务标准。如果用户明确只要一句鼓励话,B 可能更合适。偏好标签不是宇宙真理,它记录的是:在这个问题和这套标注标准下,A 比 B 更受偏好。实际数据通常写成三元组:问题 $x$、被选中的回答 $y_w$、未选中的回答 $y_l$。InstructGPT 的做法就是先收集回答排名,再用它们训练后续模型。[1]
偏好数据从哪里来?
可以让模型对同一问题生成多个候选,再请标注者按明确规则比较:是否完成任务、是否准确、是否过度自信、是否有害、是否冗长。也有自动或模型辅助的偏好数据,但来源不同,可信度与偏差也不同;不能把“chosen”直接读成“人类一定喜欢”。
这一步很容易被低估。若标注者总偏好长回答,模型可能把“写得长”误学成“写得好”;若只比较简单问题,复杂问题的效果就没有保证。比较质量之前,最好先看偏好数据覆盖了哪些场景、标注者是否一致,以及是否留出独立评估集。
经典 RLHF:先学一个打分器,再优化模型
以 InstructGPT 风格流程为例,前面已经有一个 SFT 模型。接下来通常分两步:
- 用成对偏好训练奖励模型(Reward Model,RM):在同一个问题下,尽量给 A 比 B 更高的分。
- 让正在训练的回答模型生成新回答,用奖励模型给分,再用 PPO 等强化学习方法更新回答模型。
奖励模型是从有限比较中学到的近似打分器,不是人的真实判断本身。训练回答模型时,常加入相对参考模型的 KL 惩罚,限制它为了讨分数而偏离原模型太远。InstructGPT 的实现使用了 PPO,并把 SFT 模型作为这一约束的参考。[1]
沿用技术分享的例子:奖励模型学到“具体、可执行”的回答更可能得高分;回答模型随后尝试生成更多能得到高分的答复。但如果奖励模型只看到了片面的数据,回答模型也可能学会迎合打分器,而不是真的更有帮助。
DPO:不单独训练奖励模型
DPO(Direct Preference Optimization)也使用“同一问题下 A 胜过 B”的数据。它不先训练一个显式奖励模型,也不在训练循环中运行 PPO,而是直接调整回答模型:让被选中的回答相对于未选中的回答更有优势。DPO 论文把带参考约束的偏好优化写成一个可直接训练的分类式目标。[2]
关键是“相对于参考模型”。假如参考模型本来就更偏向 A,当前模型再偏向 A 一点,与“原本偏向 B、后来转向 A”不是同一回事。DPO 通过当前模型与固定参考模型的对数概率之差,比较 A 和 B 的相对优势。它不是简单地“只提高 A 的概率”,也不是“完全没有约束”。下面这行只写概念关系,不是完整训练公式:
\[\text{偏好优势}\ \propto\ \left[\log \frac{\pi_\theta(y_w\mid x)}{\pi_{\rm ref}(y_w\mid x)}\right]-\left[\log \frac{\pi_\theta(y_l\mid x)}{\pi_{\rm ref}(y_l\mid x)}\right]\]$\pi_\theta$ 是正在训练的模型,$\pi_{\rm ref}$ 是固定参考模型。实际 DPO 损失还会用温度参数 $\beta$ 和 sigmoid 转换上述差值。我们本课只需抓住它的作用:用偏好对直接训练回答模型,同时以参考模型为基准控制改变。[2]
自己切换两条路线:同一组 A 胜 B 的标签,会怎样进入训练?
偏好对 → 训练奖励模型(A 分高于 B)→ 用奖励模型评估新回答 → PPO 等方法更新回答模型;参考模型限制偏移。
这是流程示意,不是可运行的训练器;点击不会给真实模型打分或更新参数。
RLHF 和 DPO,到底是什么关系?
“RLHF”有两种常见用法。狭义常指“奖励模型 + PPO”这类强化学习训练流程;按这个说法,DPO 是另一条更直接的优化路线。广义指“利用人类反馈改进模型”的整个方向;若 DPO 的偏好对来自人类比较,它当然也使用了人类反馈。因此,别把两者说成“一个有人类反馈,另一个没有”。
| 要问的问题 | 奖励模型 + PPO 路线 | DPO 路线 |
|---|---|---|
| 是否训练显式奖励模型? | 是 | 否 |
| 是否在训练中让当前模型采样新回答? | 常见实现会 | 原始 DPO 的离线训练通常不用 |
| 是否需要参考模型? | 常用它约束策略偏移 | 是,参与偏好损失 |
| 主要代价 | 训练链路较长,奖励与策略都要调 | 更依赖已有偏好对的覆盖与质量 |
DPO 流程简洁,但这不意味着它在所有任务都胜过在线 RLHF。若问题分布不断变化,在线采样和重新收集反馈可能有价值;若已有高质量偏好对,DPO 常是更容易起步的方案。方法选择还取决于数据、算力、评估标准,不能只看算法名字。[2]
偏好对齐能保证“更好”吗?
不能。奖励模型可能被“刷分”:模型找到能拿高分却不真正解决问题的写法。DPO 不用显式奖励模型,也仍会继承偏好数据里的偏差;例如学到过度冗长、过度迎合或过度拒答。偏好对齐优化的是被收集、被标注的信号,不是所有用户在所有情境中的真实利益。
评估时要把训练集之外的真实问题拿出来,由人比较新旧模型回答,并按任务拆开看:有用性、事实准确、拒答边界、格式要求和多轮稳定性。还要检查失败案例,而不是只看奖励分数或偏好训练 Loss。InstructGPT 也使用人类评估来判断改进,而不只依赖训练目标本身。[1]
本课可以这样记:SFT 示范“怎样回答”;偏好数据表达“两个回答里更想要哪个”;经典 RLHF 先学打分器再优化,DPO 直接从偏好对优化,但两者都受数据与评估边界约束。
约 95 秒讲解视频
参考文献(References)
- Ouyang, L., Wu, J., Jiang, X., et al. “Training language models to follow instructions with human feedback.” NeurIPS, 2022. arXiv:2203.02155.↩
- Rafailov, R., Sharma, A., Mitchell, E., et al. “Direct Preference Optimization: Your Language Model is Secretly a Reward Model.” NeurIPS, 2023. arXiv:2305.18290.↩
第二十三课复习总图
最后一课把全部知识放进一个可复现项目:训练、评估并部署一个小型语言模型。