对于大部分大型语言模型对齐的历史,主导范式一直是从人类反馈的强化学习(RLHF)——一个结合奖励模型训练与强化学习的复杂多阶段流程。直接偏好优化(DPO) 以一个令人惊讶的简单替代方案颠覆了这种方法:直接从偏好数据对齐语言模型,完全不需要任何强化学习。
DPO 由斯坦福大学的研究人员于 2023 年提出,此后已成为 LLM 对齐文献中最具影响力的论文之一。核心洞察在于,RLHF 中基于 RL 的优化步骤可以重新参数化为偏好对上的简单二元交叉熵损失,从而消除了对单独奖励模型、RL 采样以及 PPO 众所周知的繁琐超参数调整的需求。
其影响是巨大的。DPO 已被 Mistral(Zephyr 模型)、Meta(Llama 3 对齐)以及无数开源微调项目所采用。eric-mitchell/direct-preference-optimization 仓库提供了一个干净、文档完善的参考实现,已成为研究人员和工程师实现 DPO 的首选资源。
DPO 在数学上是如何工作的?
DPO 将 RLHF 目标重新参数化为一个可以直接使用标准监督式学习技术优化的直接偏好损失。
graph LR
A[偏好数据\n提示 + 选择 + 拒绝] --> B[参考模型\n冻结的基础策略]
A --> C[策略模型\n训练中的策略]
B --> D[对数概率\n比较]
C --> D
D --> E[DPO 损失\n二元交叉熵]
E --> F[策略更新\n梯度步骤]
F --> C
关键洞察在于,DPO 隐式地将奖励函数表示为策略本身的函数,通过训练策略与参考模型之间的对数概率比率来表达。这避免了显式建模和训练单独的奖励函数。
DPO 与 RLHF 的比较
DPO 和 RLHF 之间的实践差异远不止于方法的理论优雅性。
| 方面 | RLHF (PPO) | DPO |
|---|---|---|
| 组件 | 3 个模型:SFT + 奖励 + 策略 | 2 个模型:SFT + 策略 |
| 训练阶段 | 3 个:奖励模型 + RL (PPO) | 1 个:直接优化 |
| 超参数 | 多个(KL 惩罚、裁剪范围等) | 少数(beta、学习率) |
| 稳定性 | 对 PPO 超参数敏感 | 更稳定 |
| 计算量 | 高(RL 采样成本高) | 低(监督式风格训练) |
| 内存 | 奖励模型 + 策略 + 参考 | 策略 + 参考(冻结) |
对于大多数实践对齐任务,DPO 达到或超过 RLHF 的质量,同时在实现和训练上显著更简单。
DPO 有哪些变体?
DPO 的成功催生了丰富的变体生态系统,以解决特定限制或替代场景。
| 变体 | 主要差异 | 使用场景 |
|---|---|---|
| IPO(身份偏好优化) | 增加正则化以防止过拟合 | 偏好数据有限时 |
| KTO(Kahneman-Tversky 优化) | 处理未配对的偏好 | 仅有好/坏示例时 |
| ORPO(优势比偏好优化) | 在单一阶段中结合 SFT + 对齐 | 单阶段训练流程 |
| CPO(对比偏好优化) | 对比学习公式 | 多偏好排序 |
| SimPO(简单偏好优化) | 无需参考模型的 DPO 变体 | 减少内存占用 |
每种变体都保留了 DPO 的核心洞察——从偏好直接优化——同时适应不同的数据可用性场景和训练约束。
如何使用 DPO 进行训练?
使用 DPO 进行训练遵循一个直接的流程,任何熟悉标准语言模型微调的人都可以使用。
| 步骤 | 说明 | 工具 |
|---|---|---|
| 数据准备 | 收集或生成偏好对(选择 vs 拒绝) | Hugging Face datasets、自定义 JSON |
| 参考模型 | 加载冻结的基础 SFT 模型副本 | Transformers 库 |
| 策略模型 | 加载相同模型的可训练副本 | Transformers 库 |
| 训练循环 | 计算偏好对上的 DPO 损失 | TRL 库、自定义实现 |
| 评估 | 比较对齐与未对齐的模型输出 | 人类评估、LLM 作为评审 |
eric-mitchell/direct-preference-optimization 中的参考实现提供了一个完整的训练流程,可适用于大多数现代语言模型架构。
常见问题
什么是 DPO? DPO 是由斯坦福大学研究人员引入的训练范式,无需强化学习即可将语言模型与人类偏好对齐。
DPO 与 RLHF 有何不同? RLHF 需要三个阶段,而 DPO 将其缩减为监督式微调后直接偏好优化。
DPO 相较于 RLHF 有哪些优势? DPO 实现更简单、计算更高效、更稳定,且通常能达到更好的对齐效果。
DPO 需要什么样的数据? DPO 需要偏好对,包含一个提示与两个响应(选择和拒绝)。
DPO 适用于所有 LLM 对齐任务吗? DPO 在一般偏好对齐方面表现良好,但变体如 KTO、IPO 和 ORPO 可能更适合特定场景。
延伸阅读
- DPO GitHub 仓库 – Eric Mitchell 的参考实现
- DPO 论文 (ArXiv) – “Direct Preference Optimization: Your Language Model is Secretly a Reward Model”
- TRL 库文档 – Hugging Face TRL DPO 训练器集成
- RLHF 与 DPO 比较 – 对齐方法的技术比较
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!