本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

从 DPO 到 GRPO:直接偏好优化

从 DPO 到 GRPO:直接偏好优化

更新于 2026-04-05

RLHF 的痛点

上一篇我们完整介绍了 RLHF 的三阶段 pipeline。虽然它成功推动了 ChatGPT 的诞生,但也暴露了几个核心痛点:

  1. 训练复杂度高:需要同时运行 4 个模型(policy, reference, RM, critic),PPO 训练不稳定
  2. Reward Model 是瓶颈:RM 质量直接限制对齐效果天花板,且容易被 exploit
  3. 超参数敏感:PPO 的 clip epsilon、learning rate、KL penalty β 等参数需要精心调优

能不能跳过 RM 和 PPO,直接从偏好数据优化策略?这就是 DPO 的核心动机。

RLHF vs DPO 架构对比RLHF(4 模型)RLHF 架构Policyπ_θReferenceπ_refRewardModelCriticV(s;w)训练资源对比RLHF4 个模型同时在 GPUDPO2 个模型同时在 GPUDPO 核心洞察最优策略和 reward 有 closed-form关系 → 可以把 RM 消掉RLHF 训练流程Prompt → Policy 生成 → RM 评分 → Critic 估计 V(s) → 计算 Advantage → PPO 更新需要 4 个模型同时运行,训练复杂度高,超参数敏感

DPO 核心推导

DPO 的关键洞察是:在 RLHF 框架中,最优策略和 reward function 之间存在 closed-form 关系

从 RLHF 的 KL 约束优化目标出发:

maxπE[r(x,y)]βKL(ππref)\max_\pi \mathbb{E}[r(x,y)] - \beta \cdot KL(\pi \| \pi_{ref})

可以推导出最优策略为:

π(yx)=1Z(x)πref(yx)exp(1βr(x,y))\pi^*(y|x) = \frac{1}{Z(x)} \pi_{ref}(y|x) \exp\left(\frac{1}{\beta} r(x,y)\right)

反过来,reward 可以用策略表示:

r(x,y)=βlogπ(yx)πref(yx)+βlogZ(x)r(x,y) = \beta \log \frac{\pi^*(y|x)}{\pi_{ref}(y|x)} + \beta \log Z(x)

将这个关系代入 Bradley-Terry 模型后,Z(x)Z(x) 项消除,得到 DPO Loss

LDPO(θ)=E[logσ(β(logπθ(ywx)πref(ywx)logπθ(ylx)πref(ylx)))]\mathcal{L}_{DPO}(\theta) = -\mathbb{E}\left[\log \sigma\left(\beta \left(\log \frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)\right)\right]

DPO Loss 函数可视化β = 0.100.050.10.20.50preferred 概率 < rejectedpreferred 概率 > rejected梯度 → 推高 preferredmargin = log(π/π_ref)(y_w) - log(π/π_ref)(y_l)LossL_DPO = -log σ(β · margin)β 越大 → loss 曲线越陡 → 对偏好差异更敏感 | β 越小 → 更平缓 → 容忍更大偏差

DPO 的优势与问题

优势:

  • 去掉了 Reward Model 和 PPO,只需要 2 个模型(policy + reference)
  • 训练过程和 SFT 一样简单(前向传播 + 反向传播)
  • 不需要在线采样,直接在离线偏好数据上训练

问题:

  • Offline 数据分布偏移:训练数据来自旧策略,随着模型更新,数据和当前策略不匹配
  • 对数据质量敏感:偏好对中的噪音会直接影响优化方向
  • 容易过拟合:在小数据集上特别明显

IPO 与 KTO

为了解决 DPO 的问题,研究者提出了多种变体:

IPO (Identity Preference Optimization):加入正则项防止过拟合,让模型不需要将偏好对的 margin 推到无穷大。

KTO (Kahneman-Tversky Optimization):最大的创新是不需要配对偏好数据——只需要知道每个回答是”好”还是”坏”,大大降低了数据标注成本。

GRPO:DeepSeek 的方案

GRPO (Group Relative Policy Optimization) 来自 DeepSeek,核心创新是去掉 Critic 网络

  1. 对同一个 prompt,采样一组(G 个)回答
  2. 用 reward function(可以是规则或 RM)给每个回答打分
  3. 用组内相对排序计算 Advantage:Ai=rimean(r)std(r)A_i = \frac{r_i - \text{mean}(r)}{\text{std}(r)}
  4. 用 PPO-style 的 clipped objective 更新策略
GRPO 组采样机制同一 Prompt → 采样 G 个回答 → 组内相对排序 → 计算 AdvantageG = 8G=4G=8G=16G=32同一个 Prompt → 采样 8 个回答6.9A=+1.296.7A=+1.126.5A=+0.995.8A=+0.464.5A=-0.634.0A=-0.973.9A=-1.053.7A=-1.21mean=5.26score 排序 | 绿色=比平均好(A>0) | 红色=比平均差(A<0)A_i = (r_i - mean(r)) / std(r)G 越大 → Advantage 估计越准(方差越小)→ 但计算成本线性增长 | 实践中 G=8~64

GRPO 的优势是不需要 Critic 网络(省一个大模型的 GPU 内存),而且在线采样避免了分布偏移。DeepSeek-R1 用 GRPO + 规则 reward 训练出了涌现 thinking 能力的模型。

DPO (Offline)
DPO: Offline — 固定数据集固定偏好数据集DPO 训练一次性对齐模型特点:✓ 训练简单 ✓ 不需要在线生成 ✗ 数据分布偏移 ✗ 容易过拟合数据在训练前收集好,模型看不到自己新策略产生的回答

方法选型

方法演进图谱点击节点查看"解决了什么 / 引入了什么问题"RLHFDPOIPOKTOGRPO← 点击节点查看详情 →每种方法都在解决前一种的问题,同时引入新的挑战没有完美方案 — 选择取决于训练资源、数据质量和性能需求

没有完美的对齐方法。选择取决于你的约束条件:

维度RLHFDPOGRPO
训练复杂度高(4 模型)低(2 模型)中(2 模型 + 在线生成)
数据需求偏好对 + prompts偏好对Prompts + reward rule
训练稳定性PPO 不稳定稳定如 SFT较稳定
性能天花板高(在线优化)中(offline 限制)高(在线 + 涌现)
适用场景追求最佳对齐快速迭代、资源有限数学/推理任务
训练资源需求对比RLHF vs DPO vs GRPO — GPU、模型数、训练时间同时运行模型数422GPU 内存需求100%40%60%训练时间100%30%60%RLHFDPOGRPOHover 柱状图查看各方法详情DPO 最轻量(无 RM/Critic)| GRPO 中等(无 Critic 但需在线生成)| RLHF 最重

总结

  1. DPO 用 closed-form 关系消除了 RM 和 PPO,让对齐训练简单如 SFT
  2. IPO 加正则防过拟合,KTO 去除配对数据依赖
  3. GRPO 去掉 Critic 用组采样计算 Advantage,兼顾效率和在线优化
  4. 选择方法需权衡:训练资源 / 数据质量 / 性能需求
  5. DeepSeek-R1 展示了 GRPO 在 reasoning 任务上的巨大潜力

下一篇我们将深入 Reward 设计:ORM vs PRM、reward hacking 的深层原因、以及 reward model 如何进化为 verifier。