Direct Preference Optimization
Rafailov et al.
数学证明 RLHF 的 RM+PPO 两阶段可以合成一个 SFT-style 损失——跳过 RM,直接从偏好数据优化策略。
arXiv:2305.18290#alignment#rlhf#preference-learning
核心贡献
- 01理论:RLHF 的最优策略有闭式解,形式是 π*(y|x) ∝ π_ref(y|x) · exp(r(x,y)/β)
- 02反解得:r(x,y) = β log(π*(y|x)/π_ref(y|x)) + const
- 03代入 Bradley-Terry 偏好损失,得到直接对策略 π 的损失
- 04完全避开训练独立的 RM 和跑 PPO 的复杂性
- 05实践中效果匹敌甚至超过 PPO,且训练稳定得多
从 RLHF 到 DPO
RLHF 最优化目标
这个问题有闭式解(通过变分法求解):
关键反解
从上式反解 reward:
左边是 reward,右边是策略的函数。这说明:策略隐式地定义了 reward。
代入 Bradley-Terry
Bradley-Terry 偏好模型说:
注意到 log Z(x) 在 y_w 和 y_l 的 reward 差中会抵消掉(同一个 x),最终得到 DPO 损失:
为什么这很强
- 训练流程简化为和
SFT类似的监督学习 - 不需要采样、不需要 reward hacking 担忧、不需要 critic value function
- 超参数少:就一个 β(控制偏离 ref 的程度)
- 训练稳定,reproducibility 好
局限
- 需要 offline preference dataset(不像
PPO可以 on-policy) - 会过拟合 preference data,over-optimization 问题存在
- β 选择敏感
面试考点
"DPO 为什么可以跳过 RM?" 核心:最优策略和 reward 是一一对应的(通过那个 exp 闭式解)。既然策略和 reward 等价,我们可以直接把 reward 参数化成策略的 log-ratio——训练策略等价于训练 reward,合二为一。
"DPO vs PPO 的本质区别?"
PPO:on-policy RL,需要采样 + reward model 打分 + actor-critic + GAEDPO:offline 监督学习,只需要 preference pairs (x, y_w, y_l) 和一个 reference modelDPO简单稳定,但失去了 on-policy 探索能力
"什么时候用 PPO 什么时候用 DPO?" 经验:
- 数据量小、要快速迭代:
DPO - 有强 RM 且能 on-policy 采样:
PPO仍有优势 - 需要细粒度 reward shaping:
PPO(DPO只吃成对偏好)
"DPO 的 over-optimization 如何缓解?"
- Identity PO (IPO):换 sigmoid 为平方损失,防止 over-confident
- SimPO:去掉 reference model,用 length-normalized log-prob
- β-DPO:动态调整 β
"GRPO 和 DPO 的关系?" GRPO 是 DeepSeek 提出的 online RL 变种,去掉 critic,用 group 内相对优势计算 baseline。本质上是 PPO 家族的简化版,但保留 online 特性。DPO、PPO、GRPO 代表对齐训练的三种范式。