Skip to content

偏好优化方法全景(DPO 及其变体)

RLHF 之后,「怎么用偏好数据对齐模型」演化出一大家族方法:DPO、IPO、KTO、ORPO、SimPO……面试常被追问「DPO 和这些变体的区别」。本文把这条线索理清,给出选型直觉。RLHF/PPO/DPO 推导见 RLHF / DPO 对齐,RL 基础见 强化学习基础

一、从 RLHF 到 DPO:为什么要简化?

经典 RLHF 用 PPO,要训奖励模型 + 在线采样 + 维护 4 个模型,复杂、贵、不稳定。DPO 的突破:用数学推导证明「偏好优化」可以绕过奖励模型和 RL,直接在偏好数据对 $(y_w, y_l)$ 上做监督式优化:

$$L_{DPO} = -\log\sigma\Big(\beta\big[\log\tfrac{\pi(y_w)}{\pi_{ref}(y_w)} - \log\tfrac{\pi(y_l)}{\pi_{ref}(y_l)}\big]\Big)$$

让模型相对参考模型更偏好优答、更不偏好劣答。简单、稳定、离线——成为开源对齐的主流。

二、DPO 的痛点与变体动机

DPO 虽好,但有几个被反复改进的点:

痛点对应变体
需要参考模型(多一份显存)ORPO、SimPO(去掉参考模型)
需要成对偏好数据(贵、难收集)KTO(只需「好/坏」单点标注)
容易过拟合偏好、答案变长IPO、SimPO(正则/长度归一)
要先 SFT 再 DPO 两阶段ORPO(SFT 和对齐一步到位)

三、主流变体速览

方法一句话关键特点
DPO偏好数据直接优化,基准方法需参考模型 + 成对数据
IPO给 DPO 加正则,缓解过拟合防止偏好差被无限拉大
KTO用「前景理论」,只需单点好坏标签不需要成对数据,标注成本低
ORPOSFT 阶段直接加偏好惩罚项单阶段、无参考模型
SimPO用平均对数概率做隐式奖励,加长度归一无参考模型,缓解长度偏置

重点理解几个

  • KTO:现实中「成对偏好」数据难收集,但「这条回答好不好」的二元反馈到处都是(点赞/点踩)。KTO 借鉴行为经济学的前景理论,只用单条样本的好/坏标签就能对齐,大幅降低数据门槛。
  • ORPO:把对齐塞进 SFT——在 SFT 损失上加一个「降低劣答相对优势」的惩罚项,一步完成 SFT + 对齐,且不需要参考模型,省事省显存。
  • SimPO:去掉参考模型,用「答案的平均对数概率」当隐式奖励(DPO 是求和,长答案吃亏/占便宜),天然做了长度归一,缓解了 DPO「越对齐答案越长」的毛病。

四、在线 vs 离线偏好优化

  • 离线(DPO 系):用固定的偏好数据集,简单稳定,但模型只能从「别人采的样本」里学,探索受限、易分布偏移。
  • 在线/迭代(Online DPO、迭代 DPO):用当前模型采样新回答、即时打标、再优化,逼近 RLHF 的探索能力,效果更好但更复杂。
  • 趋势:迭代式偏好优化(采样→打标→DPO→再采样)成为高质量对齐的常见配方,介于纯离线 DPO 和完整 PPO 之间。

五、和 RLHF(PPO/GRPO)怎么选?

DPO 系(偏好优化)PPO / GRPO(在线 RL)
复杂度低(监督式)高(采样 + RL)
数据偏好对/单点标签prompt + 奖励信号
探索能力弱(离线)/中(迭代)
适合通用对齐、资源有限可验证奖励(数学/代码)、追求上限

经验:通用对齐优先 DPO 系(简单稳定);可验证奖励任务(数学/代码)用 GRPO 等 RL(上限高),详见 DeepSeek 专题 的 GRPO。

高频追问

Q:DPO 为什么能不用奖励模型? DPO 的推导利用了「RLHF 最优策略与奖励函数之间存在解析关系」,把奖励函数用策略本身表示出来,代入 Bradley-Terry 偏好模型后,奖励模型被消掉,问题变成对策略的直接监督优化。本质是把两阶段(训 RM + RL)合成一个闭式损失。

Q:KTO 相比 DPO 的最大优势? 数据。DPO 要成对偏好数据(同一问题的优答+劣答),收集贵;KTO 只要单条样本的「好/坏」二元标签(如线上点赞/点踩),数据易得得多。它用前景理论建模,适合「有大量单点反馈、难凑成对」的现实场景。

Q:ORPO 和 SimPO 都说「不要参考模型」,怎么做到的? ORPO 把偏好惩罚直接加进 SFT 损失,对齐发生在 SFT 阶段,没有「相对参考模型」这一步;SimPO 用「答案平均对数概率」当隐式奖励、配合一个目标 margin,不需要参考模型算相对量。去掉参考模型省一份显存、简化流程。

Q:DPO 训练后答案越来越长是什么原因? DPO 用序列对数概率(各 token 求和),长答案的概率项更多,优化时存在「偏向更长答案」的隐性偏置,模型可能学到「答得长 = 更优」。SimPO 的长度归一(用平均而非求和)正是为了缓解这个问题。

Q:什么时候该用 PPO/GRPO 而不是 DPO? 当任务有可验证的奖励信号(数学答案对错、代码能否通过测试)、且追求能力上限时,在线 RL 的探索能力优势明显(模型能采样出新解法并被强化),优于只能从固定数据学的离线 DPO。通用对话对齐则 DPO 系性价比更高。

Q:迭代 DPO 是什么?为什么比普通 DPO 好? 普通 DPO 用一份固定偏好数据;迭代 DPO 是「用当前模型采样新回答 → 打偏好标签 → DPO 更新 → 再采样」的循环,让训练数据始终来自最新模型的分布,缓解离线 DPO 的分布偏移、补回部分探索能力,效果更接近 RLHF。

基于 MIT 许可发布