在大语言模型的 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 吗?”