DPO原理

直接偏好优化算法原理

什么是DPO

DPO(Direct Preference Optimization)是一种简化版的RLHF方法,直接从偏好数据优化语言模型, 无需训练单独的奖励模型,大大简化了对齐训练流程。

PPO方式

训练RM → PPO优化 → 复杂流程

DPO方式

直接优化 → 无需RM → 简单高效

核心思想

DPO的核心洞察:最优策略可以通过偏好数据直接推导,无需显式学习奖励函数。

# DPO损失函数
L = -log σ(β × (log π(y_w|x)/π_ref(y_w|x)
- log π(y_l|x)/π_ref(y_l|x)))
# y_w: 胜者响应, y_l: 败者响应
# π_ref: 参考模型(通常是SFT模型)
# β: 控制偏离参考模型的惩罚强度

与PPO对比

特性PPODPO
奖励模型需要单独训练不需要
训练复杂度高(需要多个组件)低(单模型训练)
训练稳定性需要仔细调参相对稳定
数据需求偏好数据偏好数据
效果成熟,效果验证接近PPO效果

训练流程

1. 准备SFT模型作为参考模型 π_ref
2. 收集偏好数据(prompt, winner, loser)
3. 计算两个响应的log概率
4. 优化DPO损失函数
5. 得到对齐后的模型

实践建议

β参数选择

通常0.1-0.5,越大越保守

参考模型冻结

保持参考模型不变,只训练策略模型

学习率

通常较小,1e-6到5e-5

----