一、大模型对齐的核心概念
大模型对齐(Alignment) 的目标是让模型的输出与人类的价值观、偏好和指令保持一致(即“有用、无害、诚实”),解决模型“能力强但不听话”的问题。
对齐 vs 微调:核心区别
| 维度 | 微调(Fine-tuning) | 对齐(Alignment) |
|---|---|---|
| 目标 | 提升模型在特定任务上的能力(如问答、翻译) | 让模型输出符合人类价值观/偏好(如避免有害内容、更有用) |
| 数据类型 | “指令-正确输出”的标注对 | “人类偏好标注”(如“A 比 B 更好”“$y_1$>$y_2$>$y_3$”的排序) |
| 方法 | 监督学习(直接拟合标注数据) | 强化学习(PPO)、偏好优化(DPO/GRPO)等 |
二、主流对齐算法原理与计算过程
1. PPO(Proximal Policy Optimization,近端策略优化)
经典的强化学习对齐方案,通过“奖励模型”引导模型生成人类偏好的输出,同时用“近端约束”避免策略更新过大导致崩溃。
计算过程(三阶段):
- 监督微调(SFT):
用标注的“指令-输出”数据训练初始模型,让模型具备基本的指令遵循能力。 - 训练奖励模型(RM):
- 收集人类偏好数据:对同一 prompt,让模型生成多个输出(如 A、B),由人类标注“哪个更好”(如 A>B)。
- 训练 RM:输入 prompt+ 输出,输出“人类偏好得分”(数值越高越符合偏好)。
- PPO 强化学习训练:
- 策略网络(当前模型)生成输出;
- 奖励计算:RM 给输出打分,同时加入“KL 散度惩罚”(约束当前模型与 SFT 模型的差异,避免策略漂移);
- 优势函数:$A_t = \text{奖励}_t – \text{基线}$(基线通常是价值网络的预测,用于降低方差);
- 优化目标(PPO 核心损失函数):
$$
L^{\text{PPO}} = \mathbb{E}\left[\min\left(r_t(\theta)A_t, \text{clip}(r_t(\theta), 1-\varepsilon, 1+\varepsilon)A_t\right)\right]
$$其中 $r_t(\theta) = \frac{\pi_\theta(y_t|x_t)}{\pi_{\theta_{\text{old}}}(y_t|x_t)}$ 是新旧策略的概率比,$\text{clip}$ 约束 $r_t$ 在 $[1-\varepsilon, 1+\varepsilon]$ 内(防止更新过大)。
优缺点:
- ✅ 效果经典(早期 GPT-3、ChatGPT 用类似方案);
- ❌ 训练复杂(三阶段)、不稳定(易策略崩溃)、计算成本高。
2. DPO(Direct Preference Optimization,直接偏好优化)
无强化学习的轻量级方案,直接用人类偏好数据优化模型,无需奖励模型,训练更稳定、计算更简单。
核心思路:
将偏好学习转化为“对比分类”问题:对于偏好对($x$=prompt,$y_w$=人类偏好的输出,$y_l$=不偏好的输出),让模型给 $y_w$ 的概率比 $y_l$ 高,通过最大似然优化。
计算过程:
- 偏好数据:$(x, y_w, y_l)$(如“prompt:写首诗;$y_w$:人类喜欢的诗;$y_l$:人类不喜欢的诗”)。
- 损失函数:
$$
L^{\text{DPO}} = -\mathbb{E}\left[\log \sigma\left(\beta \left(\log \frac{\pi(y_w|x)}{\pi_{\text{ref}}(y_w|x)} – \log \frac{\pi(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right)\right)\right]
$$
其中:
- $\pi$:当前模型;$\pi_{\text{ref}}$:参考模型(通常是 SFT 模型,约束模型不偏离初始能力);
- $\beta$:温度系数(控制对参考模型的约束强度);
- $\sigma$:sigmoid 函数(将“$y_w$ 相对 $y_l$ 的优势”转化为概率)。
- 直观理解:让模型对 $y_w$ 的“相对概率(相对于参考模型)”比 $y_l$ 高,最大化这个概率的对数似然。
优缺点:
- ✅ 训练简单(单阶段)、稳定、计算成本低;
- ✅ 效果接近甚至超过 PPO(现在主流方案,如 Zephyr、Llama 3 对齐用 DPO);
- ❌ 仅支持“两两偏好”数据,对复杂排序场景利用不充分。
3. GRPO(Group Relative Preference Optimization,组相对偏好优化)
DPO 的扩展方案,针对“组偏好”场景(一个 prompt 对应多个输出,人类给它们排序,如 $y_1>y_2>y_3$),更充分利用排序信息。
核心思路:
对“一组输出的排序”建模,而不是仅处理两两偏好,利用组内所有相对关系优化。
计算过程:
- 组偏好数据:$(x, \{y_1, y_2, …, y_k\}, r)$,其中 $r$ 是组内排名($r=1$ 最好,$r=k$ 最差)。
- 损失函数:对组内每对 $(y_i, y_j)$(若 $r_i < r_j$,即 $y_i$ 比 $y_j$ 好),计算类似 DPO 的损失,然后对所有组内对平均:
$$
L^{\text{GRPO}} = -\mathbb{E}\left[\frac{1}{C(k,2)} \sum_{i<j, r_i<r_j} \log \sigma\left(\beta \left(\log \frac{\pi(y_i|x)}{\pi_{\text{ref}}(y_i|x)} – \log \frac{\pi(y_j|x)}{\pi_{\text{ref}}(y_j|x)}\right)\right)\right]
$$
其中 $C(k,2)$ 是组内两两组合的数量。
优缺点:
- ✅ 充分利用“组排序”信息,适合复杂偏好场景;
- ✅ 效果比 DPO 在多输出排序任务上更好;
- ❌ 数据标注成本更高(需要给多个输出排序)。
三、PPO vs DPO vs GRPO 对比总结
| 特性 | PPO | DPO | GRPO |
|---|---|---|---|
| 方法类型 | 强化学习(RL) | 直接偏好优化(无 RL) | 组相对偏好优化(扩展 DPO) |
| 核心组件 | SFT 模型 + 奖励模型 + PPO | SFT 模型 + 两两偏好数据 | SFT 模型 + 组排序数据 |
| 训练复杂度 | 高(三阶段,不稳定) | 低(单阶段,稳定) | 中(单阶段,处理组数据) |
| 偏好数据 | 两两偏好(A 比 B 好) | 两两偏好 | 组排序($y_1>y_2>…>y_k$) |
| 计算成本 | 高 | 低 | 中 |
| 稳定性 | 低(易策略崩溃) | 高 | 高 |
| 主流场景 | 早期对齐方案(如 GPT-3) | 现在主流(如 Zephyr、Llama 3) | 复杂偏好排序场景 |
四、总结
- 对齐 ≠ 微调:对齐的核心是让模型符合人类价值观,而非仅提升任务能力;
- DPO 是目前主流:简单、稳定、效果好,优先选择;
- GRPO 适合复杂排序:如果有多个输出的组排序数据,用 GRPO 更充分;
- PPO 是经典但复杂:现在逐渐被 DPO/GRPO 替代,仅在需要强化学习精细控制的场景使用。