帮你快速理解、总结文档立即下载

DPO(直接偏好优化)

最近更新时间:2026-10-19 21:38:00
我的收藏
DPO(Direct Preference Optimization,直接偏好优化)是 2023 年 NeurIPS 的一篇论文(Rafailov et al.)提出的方法,核心主张是:RLHF 里那个"先训奖励模型、再用 PPO 做强化学习"的两步流程,其实可以压成一步普通的监督学习。它现在是几乎所有开源对齐模型(Zephyr、Llama-3、Qwen 系列)的默认后训练算子。DPO 用分类损失训练模型,使其更偏好 chosen 回复而非 rejected 回复,不需要单独的奖励模型。


DPO 与 RLHF
DPO 直接优化策略,因此不再需要单独的奖励模型。它比经典 RLHF 更简单、更便宜,但要求基座模型已经与偏好数据同分布。


DPO 损失

损失函数公式
损失函数公式

πθ — 正在训练的当前策略
πref — 参考模型(冻结,通常是 DPO 之前的检查点)
β — 控制偏好强度(越大越保守)

DPO: 偏好数据 chosen 与 rejected→参考策略π_ref(冻结)→DPO 损失β 加权→对齐后的模型π_θ


可用数据集

数据集
来源
说明
hhh
Anthropic
Helpful-Harmless-Honest 成对偏好数据
helpsteer3
NVIDIA
HelpSteer3 偏好数据集
ultrafeedback
UltraFeedback
二值化的偏好比较

关键超参数

dpo_beta:从 0.1 开始。取值越大越保守。
learning_rate:比 SFT 更低,通常取 1e-5 到 1e-6。
基座模型:应与偏好数据同分布。可以先做一轮轻量 SFT,或收集 on-policy 的偏好数据。

训练指标

dpo_loss:分类损失(应下降)
accuracy:模型偏好 chosen 回复的频率
margin:chosen 与 rejected 之间的平均奖励差
chosen_reward / rejected_reward:平均隐式奖励

延伸阅读

DPO 与偏好教程:动手实践、可交互的演练
RLHF 流程教程:带奖励模型的完整三阶段 RLHF
DPO Recipe:生产环境训练脚本