12. ORPO、KTO、GRPO 等新对齐方法与 DPO 有什么区别?

整理 ORPO、KTO、GRPO 等对齐方法与 DPO 的区别。

简单回答

ORPO 把 SFT 和偏好优化合并成一步,省掉了单独的 SFT 阶段。KTO 不需要 pair-wise 偏好对,只需要知道每条数据"好"还是"不好"(point-wise 信号)。GRPO 是 DeepSeek 提出的 RL 方法,用 group scoring 代替 PPO 的 value model,更适合 reasoning model 的训练。这些方法各自解决了 DPO 的某个痛点,但 DPO 仍然是最通用的 baseline。

详细解释

DPO 的痛点回顾

DPO 虽然比 RLHF 简单很多,但仍有几个限制:需要先做 SFT 再做 DPO(两阶段);需要 pair-wise 偏好数据(chosen + rejected 配对);off-policy 问题可能影响效果;在复杂推理任务上 RL 方法效果更好。后续方法基本围绕这些痛点展开。

ORPO(Odds Ratio Preference Optimization)

ORPO 的核心创新是把 SFT 和偏好优化合成了一步训练。具体做法是在标准的 SFT loss(对 chosen response 做 next token prediction)基础上,加一个基于 odds ratio 的偏好 loss:

其中 odds ratio loss 比较 chosen 和 rejected 的生成概率的 odds ratio,让 chosen 的 odds 远高于 rejected。

好处是省掉了单独的 SFT 阶段,训练流程更简洁。而且不需要 reference model(DPO 需要一个冻结的 SFT 模型做 reference),显存进一步节省。缺点是 SFT 和偏好优化的学习动态耦合在一起,有时候不如分开做来得可控。

KTO(Kahneman-Tversky Optimization)

KTO 的最大卖点是不需要 pair-wise 偏好数据。传统的 DPO 要求"对于同一个 prompt,标注 A 比 B 好"——这在数据标注时成本较高,需要让标注员看多个回答做比较。KTO 只需要 point-wise 信号:每条数据标注"这个回答好"或"这个回答不好"就行了。

KTO 的名字来自行为经济学中的前景理论(Kahneman-Tversky),核心思想是人类对"损失"的感知强于"收益"。KTO 的 loss 设计体现了这种不对称性——对 rejected 数据施加更大的惩罚权重。

KTO 的实际意义在于大幅降低了偏好数据的标注成本。你可以直接利用用户反馈(点赞/点踩)来训练,不需要复杂的 pair-wise 标注。

GRPO(Group Relative Policy Optimization)

GRPO 是 DeepSeek 在训练 DeepSeek-R1 时提出的方法。它属于 RL 方法而非 DPO 系列,但比 PPO 简单。核心改动是去掉了 PPO 中的 value model(critic network)。

具体做法:对每个 prompt 采样一组回答(group),用 reward model 或规则打分,然后把这组回答的分数做归一化(减均值除标准差),用归一化后的分数作为 advantage 来更新 policy。相当于用组内的相对排名代替了 value model 对 baseline 的估计。

好处是省掉了 value model,减少了一个大模型的显存开销,训练也更稳定。GRPO 在 reasoning 任务上效果特别好,因为 reasoning 任务可以用规则验证答案正确性(比如数学题可以直接验证最终答案),reward 信号很清晰。DeepSeek-R1 的成功在很大程度上得益于 GRPO 的简洁高效。

IPO(Identity Preference Optimization)

顺便提一下 IPO,它修正了 DPO 的一个理论问题:DPO 假设偏好数据完美符合 Bradley-Terry 模型,但实际标注是有噪声的。IPO 把 loss 中的 sigmoid 换成了一个更鲁棒的形式,对噪声标注更容忍。

如何选择?

DPO 是最通用的 baseline,大部分场景都适用。如果标注预算有限、只有 point-wise 信号,用 KTO。如果想简化训练流程省掉 SFT 阶段,用 ORPO。如果在做 reasoning model 的训练,GRPO 是目前最好的选择。如果追求极致效果且有资源,PPO/GRPO 这类 RL 方法的上限通常比 DPO 更高。

面试时可以这样答

DPO 之后出了一批改进方法,各自解决 DPO 的不同痛点。

ORPO 把 SFT 和偏好优化合成一步,不需要单独做 SFT,也不需要 reference model,训练流程更简洁。KTO 把数据需求从 pair-wise 降到了 point-wise,只要"好/不好"的标注就行,可以直接用用户的点赞点踩数据。GRPO 是 DeepSeek 做 R1 时提出的 RL 方法,核心是去掉 PPO 的 value model,用组内相对排名做 advantage 估计,更简洁更稳定。

选择上,DPO 还是最通用的 baseline。如果标注预算有限用 KTO,想简化流程用 ORPO,做 reasoning model 训练用 GRPO。RL 类方法在有明确 reward 信号的任务上上限更高,比如数学、代码这些可以规则验证的场景。

常见追问

  1. GRPO 的 group size 一般设多大?对效果影响大吗?
  2. ORPO 的 SFT loss 和偏好 loss 的权重怎么平衡?
  3. 这些方法能不能和 LoRA 结合使用?