0%

从 PPO 到 DPO、GRPO:LLM 对齐训练的两种常用变体

在大语言模型的 RLHF(Reinforcement Learning from Human Feedback) 体系中,
PPO(Proximal Policy Optimization) 一直是事实标准。

但随着模型规模增大、工程复杂度提升,PPO 的一些问题也逐渐暴露出来:

  • 训练流程复杂(Reward Model + PPO Loop)
  • 超参数敏感(KL、clip range、value loss)
  • 训练不稳定、成本高

因此,近两年社区开始大量使用 PPO 的简化或替代方案,其中最常见的就是:

  • DPO(Direct Preference Optimization)
  • GRPO(Group Relative Policy Optimization)

本文从 PPO 出发,介绍这两种常用变体的核心思想、公式直觉和适用场景。


一、PPO 在 LLM 对齐中的基本范式

在 RLHF 中,PPO 的目标可以概括为:

在不偏离参考模型太多的前提下,
最大化模型生成内容的期望 reward

其核心目标函数通常写作:

[
\mathcal{L}{\text{PPO}} =
\mathbb{E}\Big[
\min(r_t(\theta) A_t,\;
\text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t)
\Big]
\- \beta \,\mathrm{KL}(\pi
\theta || \pi_{\text{ref}})
]

其中:

  • Reward 由 Reward Model 给出
  • KL 用于约束策略不偏离 reference model

PPO 的现实问题

在 LLM 微调中,PPO 常见痛点包括:

  • 需要额外训练一个 reward model
  • PPO loop 本身实现复杂
  • KL / value loss 权重极其敏感
  • 容易出现 reward hacking 或模式坍塌

这直接催生了 “不用 PPO 的 PPO” —— DPO 和 GRPO。


二、DPO:把 PPO 变成一个“分类问题”

1️⃣ 核心思想

DPO(Direct Preference Optimization) 的出发点非常简单:

如果人类更喜欢 A 而不是 B,
那模型就应该给 A 更高的概率

DPO 完全绕过了 reward model 和 PPO loop
只使用 成对偏好数据(chosen / rejected)


2️⃣ DPO 的目标函数

DPO 的优化目标为:

[
\mathcal{L}{\text{DPO}} =
\- \log \sigma\Big(
\beta \big[
(\log \pi
\theta(y^+|x) - \log \pi\theta(y^-|x))
\-
(\log \pi
{\text{ref}}(y^+|x) - \log \pi_{\text{ref}}(y^-|x))
\big]
\Big)
]

直觉解释:

  • 模型不仅要更偏向 chosen
  • 而且要 比 reference model 更偏向 chosen

可以理解为一种 “相对于 reference 的偏好分类”


3️⃣ DPO 的优点与局限

优点:

  • 不需要 reward model
  • 训练稳定、实现简单
  • 类似 SFT 的训练流程(cross-entropy 风格)
  • 非常适合中小规模对齐任务

局限:

  • 只能利用 pairwise preference
  • 对数据质量高度敏感
  • 无法自然表达强度不同的 reward

4️⃣ 适用场景

  • Chat / Instruction 对齐
  • 安全对齐(harmlessness)
  • 偏好排序类任务
  • PPO 训练不稳定或成本过高时

三、GRPO:介于 PPO 与 DPO 之间的折中方案

1️⃣ 核心思想

GRPO(Group Relative Policy Optimization) 的关键假设是:

不需要一个绝对 reward,
只需要知道 同一组输出中谁更好

它通过 组内相对优势(relative advantage)
避免了 value function 和复杂的 PPO clip。


2️⃣ GRPO 的基本形式

给定同一个 prompt 下的多个采样结果:

[
{y_1, y_2, \dots, y_n}
]

使用 reward(或打分函数)计算组内标准化优势:

[
A_i = \frac{r_i - \mu(r)}{\sigma(r)}
]

然后直接优化:

[
\mathcal{L}{\text{GRPO}}
= - \mathbb{E}\big[ \log \pi
\theta(yi|x) \cdot A_i \big]
\- \beta \,\mathrm{KL}(\pi
\theta || \pi_{\text{ref}})
]


3️⃣ GRPO 的特点

  • 不需要 value model
  • Advantage 来自组内对比
  • 保留了 PPO 的 policy gradient 直觉
  • 比 DPO 更“RL”,比 PPO 更简单

4️⃣ GRPO vs DPO

维度 DPO GRPO
数据形式 成对偏好 同 prompt 多采样
Reward 隐式(偏好) 显式或打分
是否 RL 更像分类 更像 policy gradient
稳定性 非常高
表达能力

四、如何选择:PPO / DPO / GRPO?

一个实用的经验法则:

  • DPO
    👉 数据是偏好对,追求稳定、简单、快速对齐
  • GRPO
    👉 有打分函数或多样本对比,希望保留 RL 表达能力
  • PPO
    👉 需要精细控制 reward、做复杂行为塑形

在很多实际项目中:
DPO / GRPO 已经可以替代 80% 的 PPO 使用场景


五、总结

  • PPO 是 RLHF 的理论起点,但工程成本高
  • DPO 用“偏好分类”绕过 PPO
  • GRPO 用“组内相对优势”简化 PPO
  • 三者并非对立,而是 复杂度与表达能力的权衡

LLM 对齐训练,正在从“重 RL”走向“轻 RL”。


如果你正在做 LLM 微调,不妨问自己一句:
“我真的需要 PPO 吗?”