一句话定义:DPO(Direct Preference Optimization,直接偏好优化)是一种用“人类更喜欢哪个回答”的成对数据,直接微调语言模型的方法,跳过了先训练奖励模型、再强化学习的常规流程。
它怎么做到不要奖励模型?
传统 RLHF 通常分三步:先做 SFT(监督微调),再训练一个奖励模型(Reward Model)给回答打分,最后用 PPO 等强化学习算法让模型追高分。奖励模型像“评委”,模型像“选手”,选手根据评委分数改进。
DPO 的关键洞察是:在带 KL 约束的奖励最大化问题里,最优策略和奖励函数之间存在解析关系。简单说,奖励可以用“当前模型相对参考模型的对数概率比”来表示。把这个关系代入偏好概率模型后,奖励项会被消掉,最终只剩一个类似分类的损失:对同一个 prompt,让 chosen(被选中的回答)的概率相对 rejected(被拒绝的回答)更高。
打个比方:RLHF 是先请评委给菜打分,再让厨师根据分数调整;DPO 是直接给厨师看两盘菜和“这盘更好”的标签,让他从对比中领悟方向。DPO 仍然需要偏好对数据和参考模型(通常是 SFT 后的模型),但不需要单独的奖励模型,也不需要在线采样跑强化学习。
和相邻概念的区别
| 方法 | 主要数据 | 奖励模型 | 优化方式 |
|---|---|---|---|
| SFT | 示范回答 | 不需要 | 最大似然,只学“好答案” |
| RLHF / PPO | 偏好数据 + 在线生成 | 需要 | 奖励模型打分 + 强化学习 |
| DPO | 偏好对 | 不需要 | 监督式损失,直接优化策略 |
SFT 只告诉模型“应该这样答”;DPO 额外告诉模型“这样答比那样答更好”。RLHF 要训练并维护奖励模型,还要处理 RL 的不稳定;DPO 把对齐变成了更接近监督学习的问题,工程链路更短、更稳定,也更省算力。
对从业者和普通人的意义
对从业者,DPO 降低了偏好对齐的门槛:有(prompt, chosen, rejected)数据,就能直接训练,少了奖励模型和 RL 调参的麻烦。但它不是万能的:效果很依赖偏好数据的质量与覆盖度;离线优化可能过拟合数据中的偏见,比如偏好更长回答;参考模型和温度式系数 β 也会影响结果。具体实现细节和超参,以相应官方页面为准。
对普通职场人,可以这样理解:以前想让模型“更懂人话”,要先造一个打分器;现在只要持续收集“A 回答比 B 回答好”的反馈,就能直接拿去优化模型。这让人工反馈到模型改进的路径更短,也让偏好对齐更像日常的产品迭代。
