DPO直接偏好优化


一句话总结

DPO将RLHF中的奖励建模和强化学习合并为一个简单的分类损失,直接从偏好数据优化策略模型,无需训练奖励模型和运行RL。

核心概念

DPO(Direct Preference Optimization)的核心洞察是:RLHF的最优策略可以解析地表示为偏好数据的函数,无需显式的奖励模型作为中介。DPO的损失函数为:L = -log(sigmoid(beta * (log(pi/pi_ref)(chosen) - log(pi/pi_ref)(rejected))))。直觉上,DPO增大chosen回复相对于参考模型的概率,同时降低rejected回复的概率,beta控制偏离参考模型的程度。整个训练过程类似SFT,只需策略模型和参考模型两个模型,显存需求约为PPO的一半。

为什么重要

DPO极大简化了对齐流程:无需训练RM、无需RL的复杂工程(4个模型同时运行)、超参数更少、训练更稳定。Zephyr、Neural-Chat等模型验证了DPO能达到与RLHF相当的对齐效果。DPO使得小团队也能完成高质量的模型对齐。

实践要点

数据格式与RM训练相同:(prompt, chosen, rejected)三元组。beta通常设为0.1-0.5,越大越保守(越接近参考模型)。建议参考模型就用SFT模型。训练1-3个epoch,学习率1e-6到5e-6。数据量建议10K-100K对。可使用TRL库的DPOTrainer快速实现。在线DPO(如Online-DPO、Iterative-DPO)通过不断用最新模型生成新数据进行迭代优化,效果更好。

常见误区

误区一:DPO在所有场景都优于PPO。在大规模训练和复杂偏好建模上PPO仍有优势。误区二:忽视参考模型的重要性。参考模型质量差会导致DPO优化方向错误。误区三:使用过大的beta导致模型几乎不更新,或过小的beta导致模型偏离过远失去语言能力。