偏好对齐路线选型:DPO、GRPO、RLHF 与一步对齐

SFT 让模型学会格式与任务偏好对齐(preference alignment)让输出更符合人类期望——更安全、更有帮助、推理链更可靠。对齐方法近年快速演进:从 RLHF 三阶段到 DPO 一步优化,再到 GRPO 服务推理模型。本篇从工程选型角度对比主流路线,损失推导见 Math-05/20 RLHF 与 KL

段末注释:RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)用偏好数据训练奖励模型再以 RL 微调策略;DPO(Direct Preference Optimization,直接偏好优化)将 RL+KL 目标改写为偏好对的分类损失,无需在线采样。

系列索引:微调技术路线导读


一、对齐在流水线中的位置

1
2
3
4
5
6
7
8
SFT checkpoint(π_ref 参考策略)

├─ 有足够偏好对 (chosen/rejected) ──→ DPO / ORPO / IPO
├─ 只有好/坏标签、无配对 ──────────→ KTO
├─ 有可验证 reward(单元测试、答案校验)→ GRPO
└─ 需 RM + 在线 RL、有成熟 infra ──→ RLHF (RM + PPO)

└─ 评估 → [评估指标系列](./04-评估指标-00-系列导读.md)

前提:对齐几乎总在 SFT 之后。Reference model (\pi_{\mathrm{ref}}) 通常冻结为 SFT 权重;对齐 loss 中的 KL 项防止策略偏离过远导致灾难性遗忘


二、方法对比总表

方法 数据形态 是否需要 RM 是否需要在线采样 工程复杂度 TRL Trainer
RLHF 偏好对 → 训 RM;prompt → 生成 → PPO RewardTrainer + PPO
DPO (prompt, chosen, rejected) DPOTrainer
ORPO SFT 样本 + 偏好对(可合并) ORPOTrainer
KTO (prompt, completion, label) 好/坏 KTOTrainer
IPO / cDPO 同 DPO DPO 变体参数
GRPO prompt + 可验证 reward 函数 是(组内采样) GRPOTrainer

三、各路线详解

3.1 经典 RLHF(RM + PPO)

三阶段(见 Math-05/20):

  1. SFT:监督微调得 (\pi_{\mathrm{ref}})
  2. RM:偏好对 ((x, y_w, y_l)) 训练奖励模型 (r(x,y))
  3. PPO:最大化 (r(x,y) - \beta D_{\mathrm{KL}}(\pi_\theta | \pi_{\mathrm{ref}}))
优点 缺点
工业界验证最久(InstructGPT 路径) 三套模型/流程,调试成本高
RM 可复用于多种 policy PPO 超参敏感、训练不稳定
适合复杂多维偏好 算力与工程门槛高

何时仍考虑:已有 RM 资产、需在线探索、偏好维度复杂且 DPO 效果 plateau。PPO 算法细节见 RL-03-11 PPO


3.2 DPO(首选,大多数团队)

对偏好 (y_w \succ y_l)(在 prompt (x) 下),DPO 损失:

$$
\mathcal{L}{\mathrm{DPO}} = -\mathbb{E}\left[\log \sigma\left(\beta \log \frac{\pi\theta(y_w|x)}{\pi_{\mathrm{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\mathrm{ref}}(y_l|x)}\right)\right]
$$

优点 缺点
无需 RM、无需 PPO 采样循环 需要成对偏好数据
训练稳定,TRL 原生支持 (\beta) 需调;数据噪声敏感
与 SFT 共用 LoRA 栈 对「可验证」任务不如 GRPO 直接

数据格式(TRL):

1
2
3
4
5
{
"prompt": [{"role": "user", "content": "..."}],
"chosen": [{"role": "assistant", "content": "好回答..."}],
"rejected": [{"role": "assistant", "content": "差回答..."}],
}

关键超参:(\beta)(通常 0.1–0.5)控制偏离 (\pi_{\mathrm{ref}}) 的惩罚强度;过大则接近 SFT,过小则易遗忘通用能力。

适用:对话质量、安全性、风格、有帮助性——有明确 chosen/rejected 的场景。详见 06-01 DPOTrainer 详解


3.3 ORPO(SFT + 对齐一步)

Odds Ratio Preference Optimization 在单次训练中同时优化 SFT loss 与偏好 odds ratio,适合尚未单独做 SFT 或希望减少训练阶段的团队。

优点 缺点
省一次完整 SFT 训练 对数据配比更敏感
小团队友好 极端复杂任务可能不如 SFT→DPO 两阶段

适用:资源有限、数据同时含标准答案与偏好对。


3.4 KTO(无配对偏好)

只需 (prompt, completion, label),label 表示好/坏,不需要每条 prompt 同时有 chosen 和 rejected。

优点 缺点
数据收集门槛低 样本效率通常低于 DPO
适合隐式反馈(点赞/点踩) 超参与权重平衡需经验

适用:只有单边反馈、难以构造完整偏好对。


3.5 GRPO(推理 / 代码 / 数学)

Group Relative Policy Optimization(组相对策略优化)对同一 prompt 采样一组输出,用组内相对 reward 更新策略,无需 critic 网络。DeepSeek-R1 等推理模型训练路径的代表方法之一。

优点 缺点
reward 可自动验证(单测、答案匹配) 需要可靠 reward 函数
适合 chain-of-thought、代码 采样开销大
不依赖人类偏好标注 错误 reward 设计会强化幻觉

数据形态prompt + reward 函数(如 pass@1、数学 \boxed{} 校验)。

适用:代码生成、数学推理、格式可校验的结构化输出。评估指标见 pass@k


四、选型决策树

1
2
3
4
5
6
7
8
已有 SFT checkpoint?
├─ 否 → 先 SFT(或 ORPO 一步)
└─ 是 → 对齐目标是什么?
├─ 对话/helpfulness/安全 → 有偏好对?
│ ├─ 是 → DPO(默认首选)
│ └─ 否(仅好/坏)→ KTO
├─ 推理/代码/数学 → GRPO + 可验证 reward
└─ 已有 RM + RL infra → RLHF (PPO)

五、与 SFTTrainer 的衔接

SFTTrainer 第九章对比了 TRL 各 Trainer:

阶段 Trainer 输出
1 SFTTrainer SFT adapter / 全量 ckpt → 作 (\pi_{\mathrm{ref}})
2a DPOTrainer 对齐 adapter(LoRA 可续训)
2b GRPOTrainer 推理增强 adapter
2c RewardTrainer RM(RLHF 中间产物)

LoRA 对齐实践:SFT 与 DPO 可共用同一 LoraConfig 结构;DPO 阶段加载 SFT adapter 作为初始 policy,(\pi_{\mathrm{ref}}) 冻结为 SFT 权重副本。


六、评估对齐效果

方法 训练监控 任务验收
DPO lossrewards/accuracies 偏好 win rate、人工抽检、下游 EM/F1
GRPO group reward mean pass@k、推理准确率
RLHF RM score、KL、PPO clip 同上 + RM 校准

注意:对齐可能提升「主观质量」但略降某些客观 benchmark;务必保留 SFT checkpoint 以便回滚。共性局限见 评估指标导读 §五


七、常见踩坑

现象 原因 对策
DPO 后模型变「复读/短答」 (\beta) 过大或 chosen 偏短 调低 (\beta);检查偏好数据长度分布
对齐后通用能力下降 KL 约束不足或过度优化偏好 增大 (\beta);SFT 数据 mix;LoRA 而非全参
GRPO reward 恒为 0 reward 函数过严或 parse 失败 先验证 reward 在样本上的分布
chosen/rejected 差异太小 标注噪声 过滤近似对;提高标注指南区分度
ref model 与 policy 不一致 DPO 未正确加载 SFT ckpt 显式 ref_model= 指向 SFT 权重

八、小结

场景 推荐
通用对话对齐、有偏好对 DPO
省阶段、数据混合 ORPO
仅单边反馈 KTO
代码/数学/可验证推理 GRPO
成熟 RM + RL 平台 RLHF (PPO)

SFT 解决「会不会做任务」;对齐解决「做得好不好、是否符合偏好」。默认路径:LoRA SFT → DPO;可验证任务再考虑 GRPO

下一步:DPO 见 06-01;GRPO 见 06-02

-------------本文结束感谢您的阅读-------------