DPO 与新方法
DPO 如何消去 RM + PPO,及 KTO、ORPO、SimPO 的进一步简化思路
核心要点:
- DPO 把 RLHF 的"RM + PPO" 两步合成一个 binary cross-entropy loss
- 数学:在 KL-constrained RLHF 闭式解上反解 reward,消去 $Z(x)$,与 RLHF 等价
- 显存:DPO 用 2 个模型 (policy + ref), PPO 用 4 个 (policy + ref + RM + value),省 ~50%
- Llama 3 / Qwen / DeepSeek / Mistral 全转 DPO 系
- KTO 单边偏好 / ORPO 单阶段 / SimPO 去 reference model
- on-policy 数据上 RLHF 仍略优,但工程复杂度让 DPO 主导
名词定义
本篇共享名词在 7.1 总览 已定义 (DPO / KTO / ORPO / SimPO / Preference data)。本篇新引入:
| 名词 | 定义 |
|---|---|
| 隐式 reward ($\hat{r}_\theta$) | DPO 推导中 $\hat{r}_\theta = \beta \log(\pi_\theta / \pi_{\text{ref}})$,让 policy 自己充当 reward model |
| Partition function $Z(x)$ | KL-constrained 闭式解中的归一化项,$Z(x) = \sum_y \pi_{\text{ref}}(y |
| Reference model ($\pi_{\text{ref}}$) | DPO 训练用的固定锚点模型 (典型为 SFT model),约束 policy 不偏离过远 |
| On-policy data | 当前训练 policy 自己生成的数据,RL 类方法用 |
| Off-policy data | 离线收集的固定数据集,DPO 默认用 |
| Length-normalized log p | SimPO 用的隐式 reward, $\frac{1}{ |
@tbl-dpo-glossary 本篇新引入名词
DPO 的核心数学:三步消元
核心问题:RLHF 流程是 SFT → RM → PPO 三步,每步独立训,工程上要管理 4 个模型同时在 GPU 上 (policy + ref + RM + value)。Rafailov 2023 提出 DPO 把 RM 和 PPO 合成一个 binary cross-entropy loss。数学怎么推?
核心是三步消元:KL-constrained RLHF 闭式解 → 反解 reward 用 policy 表示 → 代入 Bradley-Terry 偏好概率,$Z(x)$ 自动消去。
Step 1: KL-constrained RLHF 的闭式解
RLHF 目标 (省去常数项):
$$\begin{equation} \max_\pi \mathbb{E}[r(x, y)] - \beta \cdot \mathrm{KL}(\pi(\cdot|x) \| \pi_{\text{ref}}(\cdot|x)) \label{eq:dpo-rlhf-objective} \end{equation}$$- $r(x, y)$: reward model 给的标量奖励
- $\beta$: KL 约束强度,防 policy 偏离 reference 太远
这有闭式最优解 (经典 RL 结论):
$$\begin{equation} \pi^*(y|x) = \frac{1}{Z(x)} \cdot \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{r(x, y)}{\beta}\right) \label{eq:dpo-closed-form} \end{equation}$$其中 $Z(x) = \sum_y \pi_{\text{ref}}(y|x) \cdot e^{r(x,y)/\beta}$ 是归一化项 (partition function)。
核心问题:$Z(x)$ 是对整个词表 $V^*$ 的所有可能序列求和,实际无法计算——这就是为什么 RLHF 需要 PPO 这种 RL 算法来近似优化,不能直接用闭式解。
Step 2:反解 reward,用 policy 表示
对公式 \ref{eq:dpo-closed-form} 取对数:
$$\begin{equation} r(x, y) = \beta \log \frac{\pi^*(y|x)}{\pi_{\text{ref}}(y|x)} + \beta \log Z(x) \label{eq:dpo-reward-reparam} \end{equation}$$这是 DPO 的核心 trick:reward 可以完全用 policy 表示。对参数化策略 $\pi_\theta$,定义隐式 reward:
$$\begin{equation} \hat{r}_\theta(x, y) = \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)} \label{eq:dpo-implicit-reward} \end{equation}$$模型自己充当 reward model——这就是论文标题"Your Language Model is Secretly a Reward Model"。
Step 3: $Z(x)$ 在 Bradley-Terry 偏好里自动消去
把 \ref{eq:dpo-reward-reparam} 代入 Bradley-Terry 偏好模型 $p(y_w \succ y_l | x) = \sigma(r(x, y_w) - r(x, y_l))$:
$$\begin{align} p(y_w \succ y_l) &= \sigma\left[\left(\beta \log \frac{\pi(y_w)}{\pi_{\text{ref}}(y_w)} + \beta \log Z\right) - \left(\beta \log \frac{\pi(y_l)}{\pi_{\text{ref}}(y_l)} + \beta \log Z\right)\right] \\ &= \sigma\left[\beta \log \frac{\pi(y_w)}{\pi_{\text{ref}}(y_w)} - \beta \log \frac{\pi(y_l)}{\pi_{\text{ref}}(y_l)}\right] \label{eq:dpo-z-cancels} \end{align}$$$Z(x)$ 出现两次,在差值中精确抵消——这是 DPO 整个推导的最美一步。$Z(x)$ 不再需要计算。
DPO loss:一个 sigmoid binary cross-entropy
直接最大化对数似然:
$$\begin{equation} \mathcal{L}_{\text{DPO}}(\theta) = -\mathbb{E}_{(x, y_w, y_l)}\left[\log \sigma\left(\beta \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right)\right] \label{eq:dpo-loss} \end{equation}$$本质是对隐式 reward 差做 sigmoid 二元分类:
- 输入:$(x, y_w, y_l)$ 偏好对
- 模型:一个 policy $\pi_\theta$ + 一个固定 reference $\pi_{\text{ref}}$ (SFT model)
- Loss:让 $\hat{r}_\theta(y_w) > \hat{r}_\theta(y_l)$
DPO 等价于 RLHF 吗?
Rafailov 2023 Theorem 1:在 Bradley-Terry 偏好模型下,DPO 的最优解 $\pi^*$ 与 RLHF + 最优 RM 的最优解相同。
等价性成立的条件:
- Offline 数据 (固定偏好数据集)
- 无噪声标注假设
- Bradley-Terry 模型成立
实际上RLHF 在 on-policy 数据 + 噪声场景下仍略优 (Tajwar 2024,后文展开),但 offline DPO 在工程上已经远胜 RLHF。
梯度结构:自适应难样本加权
DPO loss 对 $\theta$ 求梯度:
$$\begin{equation} \nabla_\theta \mathcal{L}_{\text{DPO}} = -\beta \cdot \mathbb{E}\left[\sigma(\hat{r}_l - \hat{r}_w) \cdot \left(\nabla_\theta \log \pi_\theta(y_w|x) - \nabla_\theta \log \pi_\theta(y_l|x)\right)\right] \label{eq:dpo-grad} \end{equation}$$权重 $\sigma(\hat{r}_l - \hat{r}_w)$ 实现自适应:
- 当模型已经分对 (rejected score 低 chosen score 高),权重小,梯度小
- 当模型仍判错 (rejected score 高),权重大,梯度强
模型自动把训练精力集中在难样本上,无需手动加权。
DPO 工程优势:4 个模型变 2 个
| 方法 | 训练时同时在 GPU 的模型数 |
|---|---|
| PPO (RLHF) | 4 个:policy + ref + reward model + value head |
| DPO | 2 个:policy + ref |
@tbl-dpo-memory DPO vs PPO 显存对比
显存约省 50%,训练时间约省 60-70% (PPO 还需要 sample-and-train 迭代)。
Llama 3 DPO 实际配置
Llama 3 tech report §4[1] 用 DPO:
- $\beta = 0.1$
- Learning rate $1 \times 10^{-5}$
- 在 IFEval 等指令跟随任务上优于 PPO
- 多轮迭代 DPO (每轮用上一轮 model 生成数据再训)
DPO 之后的变体
核心问题:DPO 已经把 RLHF 工程简化,但仍有改进空间——比如还需要 reference model 占显存,仍需要 chosen/rejected pair 数据等。2024 年涌现多个变体,各自解决一个具体痛点。
KTO 解掉"成对偏好"的强假设;ORPO 把 SFT + 偏好合一;SimPO 去掉 reference model——四个变体的设计哲学不同,业界仍在演化。
KTO:单边偏好就够
Ethayarajh et al. ICML 2024[2] 基于 Kahneman-Tversky 前景理论 (prospect theory):
- 不需要 (chosen, rejected) pair
- 每条数据只需 (response, desirable/undesirable) 单边标签
- 在不平衡数据下 (减少 90% desirable 样本) 仍超过 DPO
优势:真实生产里收集"单边好坏" 标签比"两两对比" 容易得多。例如点赞 / 点踩,不需要让标注员对比两个回答。
1B-30B 全规模实证匹配或优于 DPO。
ORPO: SFT 和偏好合一阶段
Hong et al. 2024[3] 提出 ORPO (Odds Ratio Preference Optimization):
- SFT + 偏好对齐单阶段,不用先 SFT 再 DPO
- 无 reference model——只需 1 个模型 (DPO 需 2, PPO 需 4)
- 显存省约 50% (vs DPO)
实证:
- AlpacaEval 2 LC win rate: 12.20%
- MT-Bench: 7.32
- 7B 规模超过 13B 基线
思路:SFT loss 和 odds ratio penalty 加在一起,让模型同时学"生成回答的格式" + "偏好排序"。
SimPO:移除 reference model + length normalized
Meng et al. NeurIPS 2024[4] 提出 SimPO:
- 移除 reference model
- 用 length-normalized log probability 作隐式 reward: $\hat{r}_\theta = \frac{1}{|y|} \log \pi_\theta(y|x)$
- 加入 硬 margin $\gamma$ 让 chosen 与 rejected 之间有固定差距
Length normalization 的动机:DPO 隐式 reward $\beta \log(\pi_\theta / \pi_{\text{ref}})$ 是 token 级别 log p 之和,长回答天然 reward 低。SimPO 除以长度抵消这个偏差。
实证:
- AlpacaEval 2 比 DPO +6.4 points
- Arena-Hard +7.5 points
- Gemma-2-9B-it 版本 72.4% LC win rate, 10B 以下 Chatbot Arena 第一
IPO: squared loss 替代 sigmoid
Azar et al. 2023[5] 提出 IPO (Identity Preference Optimization):
- 用 squared loss 替代 DPO 的 logistic loss
- 把 reward margin 固定为 $1/(2\beta)$,解决 DPO 在偏好概率确定时 margin 无界增大导致的过拟合
- 可训练至收敛无需 early stopping
实际工业应用不广,但理论分析清晰。
四变体对比
| 方法 | 需要 chosen/rejected pair | 需要 reference model | 阶段数 | 业界采用 |
|---|---|---|---|---|
| DPO | 是 | 是 | 2 (SFT + DPO) | Llama 3 / Qwen / Mistral |
| KTO | 否 (单边标签) | 是 | 2 (SFT + KTO) | 实验性 |
| ORPO | 是 | 否 | 1 (合一) | 实验性 |
| SimPO | 是 | 否 | 2 (SFT + SimPO) | 实验性,在 Gemma-2 上成功 |
| IPO | 是 | 是 | 2 | 学术为主 |
@tbl-dpo-variants DPO 系四变体对比
业界对齐方法现状 (2025-2026)
核心问题:业界各家用什么对齐方法?RLHF (PPO) 是不是已经被 DPO 取代?
Llama 3 / Qwen / Mistral / DeepSeek 全转 DPO 系,OpenAI / Anthropic 仍走 PPO 路线;reasoning 模型 (o1 / R1) 又把 RL 拉回中心。
业界路线表
| 模型 | 对齐方法 |
|---|---|
| Llama 3 | SFT + Rejection Sampling + DPO (多轮迭代,§4 tech report) |
| Qwen 2 | DPO |
| Qwen 2.5 | 多阶段 RL (含 DPO 系) |
| DeepSeek-V3 | SFT + GRPO (Group Relative Policy Optimization,无 critic 省显存) |
| DeepSeek-R1 (reasoning) | 大规模 RL with GRPO |
| Mistral | SFT + DPO ($\beta = 0.01$) |
| OpenAI (GPT-4 / GPT-4o) | RLHF (PPO 系) |
| Anthropic (Claude) | RLHF (含 Constitutional AI) |
| OpenAI o1 / DeepSeek-R1 | 大规模 RL for reasoning (与传统 alignment RL 目标不同) |
@tbl-dpo-industry 2025-2026 业界对齐方法
RLHF vs DPO 实证:on-policy 优于 off-policy
Tajwar et al. ICML 2024[6] 系统对比:
- On-policy 数据是关键:用当前 policy 生成数据 + RL 训练在 reasoning 任务上明显优于 DPO offline
- DPO offline 在 safety / instruction-following 上工程优势显著,主导业界
- 推理任务 (math / code) RL (GRPO / PPO) 占优
这解释了为什么 reasoning 模型 (o1 / R1) 重新引入 RL:不是回归 InstructGPT 时代,是为了 reasoning 这种 on-policy 数据特别重要的任务。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| DPO 核心 trick | 反解 reward 用 policy 表示,$Z(x)$ 在 Bradley-Terry 差值中消去 |
| 隐式 reward | $\hat{r}_\theta = \beta \log(\pi_\theta / \pi_{\text{ref}})$ |
| DPO loss | sigmoid binary cross-entropy on 隐式 reward 差 |
| 等价性 | offline + 无噪声 + Bradley-Terry 下与 RLHF 最优解相同 |
| 工程优势 | 显存 4 个模型变 2 个,省 ~50% |
| Llama 3 DPO | $\beta = 0.1$, lr 1e-5,多轮迭代,优于 PPO |
| KTO | 单边偏好 (不需 pair),不平衡数据更鲁棒 |
| ORPO | SFT + 偏好合一,无 reference model |
| SimPO | 去 reference + length-normalized, AlpacaEval 2 +6.4 vs DPO |
| 业界状态 | Llama 3 / Qwen / Mistral DPO 系;OpenAI / Anthropic PPO 系;reasoning 模型大规模 RL |
| RLHF vs DPO | offline DPO 工程胜出主导;on-policy RL 在 reasoning 上仍优 |
开放问题
- DPO 是否最终被 ORPO / SimPO 取代:ORPO 单阶段省显存,SimPO AlpacaEval +6.4,但 Llama 4 / Qwen 4 是否会换还待观察
- Reasoning RL (GRPO) 是否会扩到 alignment:o1 / R1 证明 RL 在 reasoning 上不可替代,是否 alignment 也会回归 RL
- on-policy vs offline 的最优混合:Llama 3 用多轮 iterative DPO (近似 on-policy),是否有更系统的方法
- DPO 在 multi-turn / agentic 场景:当前主要在 single-turn 对话验证,多轮 + tool use 场景需要新设计
- KL 系数 $\beta$ 的最优: Llama 3 用 0.1, Mistral 用 0.01,差 10×,没有统一最优值
本章结束:微调与对齐走完一遍
走完 07 章 (02-04 三篇 + 总览),读者拿到 LLM "从 base model 到 aligned model" 的完整流程:
- SFT 教听指令 (02): instruction tuning + chat template + loss masking
- RLHF 经典三步 (03): SFT → RM → PPO + Anthropic Constitutional AI
- DPO 工程简化 (04):一个 loss 替代 RM + PPO,当前业界主流
后续章节:
- 08-推理:拿 aligned model 跑生成 (prefill / decode / KV cache / 采样 / 量化)
延伸阅读
- 上一篇:RLHF → 7.3 RLHF
- 下一章:推理 → 08-推理
- Rafailov 2024 DPO vs PPO 对比 → https://arxiv.org/abs/2404.10719
- HuggingFace TRL DPOTrainer → https://huggingface.co/docs/trl/dpo_trainer
- Tajwar 2024 on-policy preference fine-tuning → https://arxiv.org/abs/2404.14367
参考资料
- Meta AI. The Llama 3 Herd of Models. 2024. https://arxiv.org/abs/2407.21783 §4
- Ethayarajh et al. KTO: Model Alignment as Prospect Theoretic Optimization. ICML 2024. https://arxiv.org/abs/2402.01306
- Hong et al. ORPO: Monolithic Preference Optimization without Reference Model. 2024. https://arxiv.org/abs/2403.07691
- Meng et al. SimPO: Simple Preference Optimization with a Reference-Free Reward. NeurIPS 2024. https://arxiv.org/abs/2405.14734
- Azar et al. A General Theoretical Paradigm to Understand Learning from Human Preferences. 2023. https://arxiv.org/abs/2310.12036
- Tajwar et al. Preference Fine-Tuning of LLMs Should Leverage Suboptimal, On-Policy Data. ICML 2024. https://arxiv.org/abs/2404.14367