RLHF 和 DPO 有什么区别?

让AI学会"审美":RLHF和DPO如何让大模型更懂你?
上篇聊完 LoRA,我一直在想一个问题:模型已经学会怎么回答问题了,但怎么保证它回答得"恰到好处"?
举个例子。你让 AI 写文案,它能写出来。但你看完总觉得差点意思,换个回答又觉得好一些。这种"好一些"的判断,模型怎么学会?
这就是今天的主题——偏好对齐。
大模型训练的三级台阶
在说偏好对齐之前,先把大模型训练的完整路径走一遍。
第一级:预训练
模型在海量文本里自己学。学到的是语言的基本规律——语法、常识、世界知识。这阶段模型"肚子里有货",但不知道怎么用。
第二级:SFT(监督微调)
用人写的高质量问答数据教模型。告诉它:用户问这个问题时,应该这么回答。模型开始"学会按指令行事"。
第三级:偏好对齐
这才是今天的重点。让模型知道:同一个问题,可以有很多回答,但有些回答"更讨人喜欢"。
我之前带过一个实习生做文案,让他去考级、背标准菜谱,这些他都会。但你让他真正去接待客人,他就抓瞎了——因为客人的反应、表情、反馈,这些是菜谱里没有的。大模型也是这个道理。
培养一个厨师:
- 预训练是让他去烹饪学校,学食材搭配、火候控制
- SFT 是让他去考级,背标准菜谱
- 偏好对齐是让他去实习,观察客人的表情,学会"看人下菜碟"

为什么需要第三级?
因为"标准答案"根本不够用。
用户问"怎么减肥",你可以推荐运动,可以推荐饮食,可以讲原理,可以给方案。这些答案都"对",但哪个更"好"?
这种"好"的判断,涉及主观偏好、文化习惯、表达风格,没法用标准答案教。得让模型自己"品"出来。
RLHF:用"打分器"猜偏好
OpenAI 在 ChatGPT 里用的就是这套方法。
核心思路很简单:先找个裁判,让裁判给回答打分,然后让模型朝高分方向调整。
整个流程分三步:
第一步:收集偏好数据
找来一批 prompt,让模型对同一个问题生成多个回答。然后请人工标注员对比:哪个回答更好?好在哪里?
这里不需要标注员给具体分数,只需要判断"这个比那个好"。判断偏好的成本比精确打分低得多,所以 Anthropic 早期做 RLHF 时找了大量标注员来做这件事。
第二步:训练奖励模型
用这些偏好数据训练一个"奖励模型"。这个模型吃进去一个"问题+回答",吐出来一个分数。
训练好的奖励模型就像一个挑剔的美食评委。看一眼菜品,闻一闻,就能打出"8分"或"5分"。
第三步:用PPO强化学习优化
有了打分器,接下来让原模型不断生成回答,打分器给分数,模型根据反馈调整参数。
分数高了说明回答质量好,模型强化这个方向。分数低了说明跑偏了,模型往回拉。
整个过程就是:试错 → 反馈 → 改进。

RLHF 的优点很明显:通过强化学习,模型能学会很细微的偏好判断,输出质量明显提升。
但问题也来了:
训练一个 RLHF 需要同时跑三个模型——原模型、奖励模型、PPO优化器。计算成本蹭蹭往上涨,光是 PPO 的计算量就是普通微调的 3-5 倍。
流程复杂,调试困难。强化学习本身就是出了名的"炼丹",加上奖励模型又是另一层不确定性。
能不能绕过强化学习这一步?
DPO:跳过打分器,直接学偏好
2023年,Stanford 和 DeepSeek 分别提出了 DPO(Direct Preference Optimization)方法。
DPO 的核心洞察是:理论上,最优策略可以用偏好对直接表达,不需要显式的奖励模型。
说白了,RLHF 需要两步:先训练奖励模型,再让模型朝高分优化。DPO 发现,这两步可以合并成一步。
训练数据还是一样:prompt + chosen + rejected。但训练目标变了。
不是让模型"记住正确答案",而是让模型学会:这个 prompt 配这个回答,那个回答不匹配。

还是用厨师来类比。
RLHF 像是:先培训美食评委,让评委打分,再让厨师根据分数调整。
DPO 像是:不培养评委了,直接把"客人喜欢什么"这个关系教给厨师。告诉他"这个客人喜欢重口味,那个客人喜欢清淡"。
DPO 训练的数据结构也很简单:
prompt: "怎么减肥最快?"
chosen: "推荐结合饮食控制和适量运动..."
rejected: "饿着就行了,少吃多动"模型要学会的是:对于"怎么减肥"这个问题,chosen 的表达方式比 rejected 更合适。
就这么简单。
三种方法的横向对比
直接上个表:
| SFT | RLHF | DPO | |
|---|---|---|---|
| 训练方式 | 监督学习 | 强化学习 | 监督学习 |
| 流程复杂度 | 简单 | 复杂 | 中等 |
| 数据需求 | 标准问答对 | 偏好对比数据 | 偏好对比数据 |
| 适用场景 | 有标准答案的任务 | 主观质量判断 | 主观质量判断 |
| 核心能力 | 学会"怎么答" | 学会"怎么答更好" | 学会"怎么答更好" |
SFT 是背标准答案,RLHF/DPO 是学会审美判断。
DPO 用监督学习的方式实现了 RLHF 的效果,不需要强化学习那一套复杂的流程,所以现在很多团队都在用。
DPO训练实战:盯紧Loss值
如果你真的要跑 DPO,有个小技巧必须掌握——看 Loss 值。
DPO 的 Loss 不是越高越好,也不是越低越好。
有一个基准线:0.693。
这是数学上的 ln(2),代表模型对 chosen 和 rejected 没有偏向。
Loss = 0.693:模型中立,觉得两个回答差不多。
Loss < 0.693:模型开始偏向 chosen 答案。数值越小,偏向越强。
Loss > 0.693:模型反而偏向 rejected。说明训练方向反了,赶紧检查数据。

Loss 越低越好吗?
未必。
Loss 太低说明模型"用力过猛",为了讨好 chosen 答案,把 rejected 的所有特征都否定了。
就像厨师学刁了:客人口淡,他就把所有带盐的菜都做坏了。
怎么办?
参考模型来救场。
训练时让当前模型和参考模型对比,确保在提升偏好的同时,不破坏原有的基础能力。
这就像开车时看导航:导航告诉你"方向对不对",防止为了抄近路开到沟里。
总结
大模型训练分三级台阶。预训练让模型有知识,SFT 让模型会回答,偏好对齐让模型回答得"讨人喜欢"。
RLHF 是先训练打分器,再用强化学习优化。效果不错,但流程复杂。
DPO 跳过打分器,直接用偏好对数据训练。流程简化,效果相当。

从 RLHF 到 DPO,偏好对齐的技术在不断简化。但不管用什么方法,数据才是核心。
没有高质量的偏好数据,再好的算法也是巧妇难为无米之炊。
所以下一篇我们就来聊:微调数据怎么构造?格式、质量、清洗和配比怎么考虑?
你的偏好数据准备好了吗?
