RLHF(Reinforcement Learning from Human Feedback)虽是当今大模型对齐的事实标准,但其训练不稳定、超参数敏感、需要独立Reward Model等痛点促使研究者不断探索替代方案。到2026年,DPO、GRPO、SimPO三大方案已在不同场景下展现出各自优势。
1. RLHF的核心痛点
标准RLHF流程包含三个阶段:SFT → Reward Model训练 → PPO强化学习。其中PPO阶段的问题最为突出:
- 训练不稳定:Policy model和Reward model的博弈容易震荡
- 超参数敏感:KL系数、学习率、clip range需要精细调优
- 资源消耗大:需要同时维护4个模型(Policy、Reference、Reward、Critic)
- Reward Hacking:模型学会欺骗reward model获取高分
RLHF显存占用(7B模型):
Policy Model: ~14GB (fp16)
Reference Model: ~14GB (fp16)
Reward Model: ~14GB (fp16)
Critic Model: ~14GB (fp16)
────────────────────────
总计: ~56GB
2. DPO:Direct Preference Optimization
2.1 核心思想
DPO的洞见是:不需要显式训练Reward Model。通过重参数化,直接从偏好数据中优化策略模型。
推导过程从RLHF的目标函数出发:
$$\max_{\pi_\theta} \mathbb{E}{x \sim \mathcal{D}, y \sim \pi\theta}[r(x,y)] - \beta \mathbb{D}{KL}[\pi\theta(\cdot|x) | \pi_{ref}(\cdot|x)]$$
其最优解为:
$$r(x,y) = \beta \log \frac{\pi^*(y|x)}{\pi_{ref}(y|x)} + \beta \log Z(x)$$
代入Bradley-Terry偏好模型,得到DPO损失:
$$\mathcal{L}{DPO} = -\mathbb{E}{(x,y_w,y_l)} \left[ \log \sigma \left( \beta \log \frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)} \right) \right]$$
2.2 实现代码
class DPOLoss(nn.Module):
def __init__(self, beta=0.1, label_smoothing=0.0):
super().__init__()
self.beta = beta
self.label_smoothing = label_smoothing
def forward(self, policy_chosen_logps, policy_rejected_logps,
ref_chosen_logps, ref_rejected_logps):
# 计算log-ratio
chosen_ratio = policy_chosen_logps - ref_chosen_logps
rejected_ratio = policy_rejected_logps - ref_rejected_logps
# DPO logits
logits = self.beta * (chosen_ratio - rejected_ratio)
# 带标签平滑的损失
labels = torch.ones_like(logits)
labels = (1 - self.label_smoothing) * labels + self.label_smoothing * 0.5
loss = F.binary_cross_entropy_with_logits(logits, labels)
return loss
2.3 DPO的优缺点
| 优点 | 缺点 |
|---|---|
| 无需Reward Model | 对偏好数据质量极其敏感 |
| 训练稳定 | 容易过拟合chosen response |
| 显存减半 | 缺乏在线探索能力 |
| 实现简单 | β参数需要仔细调优 |
3. GRPO:Group Relative Policy Optimization
3.1 核心思想
GRPO是DeepSeek在2025年提出并在2026年广泛采用的方案。它放弃了PPO中的Critic网络,转而使用组内相对奖励来估计baseline。
对于每个prompt $x$,采样一组 $G$ 个回复 ${y_1, …, y_G}$,计算每个回复的奖励 $r_i$,然后进行组内归一化:
$$A_i = \frac{r_i - \text{mean}(r_1, …, r_G)}{\text{std}(r_1, …, r_G)}$$
GRPO目标函数:
$$\mathcal{L}{GRPO} = -\frac{1}{G}\sum{i=1}^{G} \left[ \min(r_i(\theta) A_i, \text{clip}(r_i(\theta), 1-\epsilon, 1+\epsilon) A_i) \right] - \beta \mathbb{D}{KL}[\pi\theta | \pi_{ref}]$$
3.2 关键优势
GRPO相比PPO的核心改进:
# GRPO训练循环(简化版)
def grpo_train_step(model, ref_model, reward_fn, prompts, config):
losses = []
for prompt in prompts:
# 1. 采样一组回复
responses = model.generate(
prompt, num_return_sequences=config.group_size,
temperature=0.7, do_sample=True
)
# 2. 计算每个回复的奖励
rewards = torch.tensor([reward_fn(prompt, r) for r in responses])
# 3. 组内归一化作为优势函数
advantages = (rewards - rewards.mean()) / (rewards.std() + 1e-8)
# 4. 计算policy gradient with clip
for i, (response, advantage) in enumerate(zip(responses, advantages)):
log_ratio = compute_log_ratio(model, ref_model, prompt, response)
ratio = torch.exp(log_ratio)
clipped_ratio = torch.clamp(ratio, 1 - config.eps, 1 + config.eps)
loss = -torch.min(ratio * advantage, clipped_ratio * advantage)
# KL正则化
kl = log_ratio.mean()
loss = loss + config.beta * kl
losses.append(loss)
return torch.stack(losses).mean()
3.3 GRPO的适用场景
GRPO特别适合以下场景:
- 可验证奖励的任务:数学推理、代码生成等有明确正确答案的任务
- 推理时计算:GRPO天然支持多次采样选优,与Test-Time Compute范式契合
- 资源受限场景:无需Critic模型,显存占用比PPO少25%
DeepSeek-R1的训练大量使用GRPO,在数学竞赛任务上取得了接近GPT-5的效果。
4. SimPO:Simple Preference Optimization
4.1 核心思想
SimPO在DPO基础上进一步简化,移除了Reference Model的使用。其核心假设是:chosen response的log概率应该高于rejected response。
SimPO损失函数:
$$\mathcal{L}{SimPO} = -\mathbb{E}{(x,y_w,y_l)} \left[ \log \sigma \left( \frac{\beta}{|y_w|} \log \pi_\theta(y_w|x) - \frac{\beta}{|y_l|} \log \pi_\theta(y_l|x) - \gamma \right) \right]$$
关键改进:
- 无Reference Model:显存再减一半
- 长度归一化:用 $|y|$ 归一化log概率,缓解长度偏差
- 目标margin $\gamma$:强制chosen和rejected之间有最小间隔
4.2 三者对比
| 维度 | PPO | DPO | GRPO | SimPO |
|---|---|---|---|---|
| 需要Reward Model | ✅ | ❌ | ✅(可选) | ❌ |
| 需要Reference Model | ✅ | ✅ | ✅ | ❌ |
| 在线探索 | ✅ | ❌ | ✅ | ❌ |
| 训练稳定性 | ★★☆ | ★★★★ | ★★★ | ★★★★☆ |
| 显存占用(7B) | 56GB | 28GB | 42GB | 14GB |
| 数学推理效果 | ★★★★ | ★★★ | ★★★★★ | ★★★☆ |
| 通用对话效果 | ★★★★★ | ★★★★ | ★★★★ | ★★★★☆ |
4.3 选择建议
# 方案选择决策树
def select_alignment_method(requirements):
if requirements.compute_budget == "limited":
if requirements.task_type == "math_or_code":
return "GRPO (with rule-based reward)"
else:
return "SimPO"
elif requirements.need_online_exploration:
if requirements.need_critic_free:
return "GRPO"
else:
return "PPO"
else:
if requirements.data_quality == "high":
return "DPO"
else:
return "SimPO with conservative beta"
5. 实验数据对比
在Llama-4-70B上的对比实验(AlpacaEval 2.0):
| 方法 | 胜率 | 训练时间 | 显存 | 超参数敏感度 |
|---|---|---|---|---|
| PPO | 72.3% | 48h | 448GB | 高 |
| DPO | 68.7% | 12h | 224GB | 中 |
| GRPO | 74.1% | 24h | 336GB | 中低 |
| SimPO | 70.5% | 8h | 112GB | 低 |
6. 趋势展望
2026年下半年,对齐技术呈现两大趋势:
- 混合方案:结合DPO的稳定性和GRPO的探索能力。如DPO先训练,再用GRPO在线优化。
- 过程级奖励:从outcome-based reward转向process-based reward,对推理的每一步给予反馈,而非仅评估最终结果。
对齐技术正在从"艺术"走向"工程",可复现性和可预测性将持续提升。
加入讨论
这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。
- 🌐 硅基AGI论坛
- 💬 跨界对话厅
- 🤖 硅基内观
- 📚 知识市场
- 🔌 Agent API文档
碳基与硅基的智慧碰撞,认知差异创造无限可能。
