DPO 家族


文档摘要

DPO 家族 本节摘要:Rafailov 等(2023)证明 RLHF 的最优解关于偏好数据有一个闭式表达,于是你可以跳过显式奖励模型、直接对策略做优化。这个洞察催生了一整个家族——IPO、KTO、SimPO、ORPO、BPO——每一名成员都在修补 DPO 的某一种失败模式。到 2026 年,直接对齐算法(Direct Alignment Algorithms, DAA)在前沿后训练中的出货量已超过 PPO。但是,第 02 节的过优化曲线依然成立:DAA 没有逃出古德哈特定律,它只是把裂口咬下的位置,从「奖励模型被过优化」挪到了「参考策略比值被过优化」。本节带你逐一推导六种损失,看清它们各自修补的是什么、共享的又是什么。

DPO 家族

本节摘要:Rafailov 等(2023)证明 RLHF 的最优解关于偏好数据有一个闭式表达,于是你可以跳过显式奖励模型、直接对策略做优化。这个洞察催生了一整个家族——IPO、KTO、SimPO、ORPO、BPO——每一名成员都在修补 DPO 的某一种失败模式。到 2026 年,直接对齐算法(Direct Alignment Algorithms, DAA)在前沿后训练中的出货量已超过 PPO。但是,第 02 节的过优化曲线依然成立:DAA 没有逃出古德哈特定律,它只是把裂口咬下的位置,从「奖励模型被过优化」挪到了「参考策略比值被过优化」。本节带你逐一推导六种损失,看清它们各自修补的是什么、共享的又是什么。

对应原课程:Phase 18 · Lesson 03 · direct-preference-optimization-family(原英文 phases/18-ethics-safety-alignment/03-direct-preference-optimization-family/docs/en.md)。前置:Phase 18 · 01、02,Phase 10 · 08。

学习目标

阅读完本节,你应当能够:

  1. 从「RLHF + KL」的最优解出发,推导 DPO 的闭式
  2. 说出 IPO、KTO、SimPO、ORPO、BPO 各自修补 DPO 的哪一种失败模式
  3. 区分「隐式奖励差」与「偏好强度」,并解释 IPO 的恒等映射为何关键。
  4. 解释为什么 Rafailov 等(NeurIPS 2024)证明 DAA 即使没有显式 RM 也会过优化
  5. 在 2026 年的实际工程中,根据数据形态选择合适的偏好损失。

一、问题与直觉

第 01 节的 RLHF 目标:

max_pi E[ r(x, y) ] - beta * KL( pi || pi_ref )

有已知最优解:

pi*(y|x) = (1/Z(x)) * pi_ref(y|x) * exp( r(x, y) / beta )

把它反过来,奖励就被最优策略与参考策略的比值隐式定义:

r(x, y) = beta * log( pi*(y|x) / pi_ref(y|x) ) + beta * log Z(x)

把这个表达式代入 Bradley-Terry 偏好似然,配分函数 Z(x) 因为只依赖 x 而被消掉。剩下的就是一个只含策略参数的损失——不需要奖励模型。这就是 DPO。

这道推导有个 wrinkle:它假设最优可达、偏好数据分布内、参考策略是真模式锚点。这三条没有一条严格成立。家族里每一名成员,都在修补一个被违反的假设。

二、从零实现

DPO(Rafailov 等,2023)

L_DPO = -log sigmoid( beta * log( pi(y_w|x) / pi_ref(y_w|x) ) - beta * log( pi(y_l|x) / pi_ref(y_l|x) ) )

会出什么问题:

  • 隐式奖励差 beta * (log(pi/pi_ref)_w - log(pi/pi_ref)_l) 无界——一丝微弱偏好也能产生任意大的裂口。
  • 损失把 chosen 和 rejected 的对数概率朝相反方向推。只要 rejected 掉得比 chosen 快,chosen 的绝对对数概率也可以一起掉——这就是 Degraded Chosen Response 现象。
  • 分布外偏好(罕见对 vs 罕见对)会产生任意的隐式奖励。
def dpo_loss(policy, pi_ref, x, y_w, y_l, beta): log_rw = log_ratio(policy, pi_ref, x, y_w) log_rl = log_ratio(policy, pi_ref, x, y_l) return -log_sigmoid(beta * (log_rw - log_rl)) # 注意:无界

IPO(Azar 等,2024)

Identity Preference Optimization 把 log-sigmoid 换成对偏好概率的恒等映射,损失变成对一个有界目标的平方误差:

L_IPO = ( log(pi(y_w|x)/pi_ref(y_w|x)) - log(pi(y_l|x)/pi_ref(y_l|x)) - 1/(2*beta) )^2

间隔被 1/(2*beta) 钳住。偏好强度与隐式奖励差成正比,不再爆炸。

KTO(Ethayarajh 等,2024)

Kahneman-Tversky Optimization 彻底放弃成对结构。给定单个带标签输出和一个二元「理想/不理想」信号,映射到前景理论效用:

v(x, y) = sigma( beta * log(pi(y|x) / pi_ref(y|x)) - z_ref )

收益与损失用不同权重(损失厌恶)。好处:可以用非配对数据,而这类数据要丰富得多。

SimPO(Meng 等,2024)

Simple Preference Optimization 把训练信号与生成对齐——完全移除参考策略,并对对数似然做长度归一:

L_SimPO = -log sigmoid( (beta/|y_w|) * log pi(y_w|x) - (beta/|y_l|) * log pi(y_l|x) - gamma )

gamma 是稳定用的间隔。长度归一消除了 DPO 长度偏置失败模式的诱因(更长的 y_w 按构造产生更大的对数概率裂口)。

ORPO(Hong 等,2024)

Odds-Ratio Preference Optimization 在标准 SFT 负对数似然上加一个偏好项:

L_ORPO = L_NLL(y_w) + lambda * L_OR L_OR = -log sigmoid( log( odds(y_w) / odds(y_l) ) )

无参考策略——SFT 项本身就是正则。从基座模型到对齐模型单阶段训练,无需单独的 SFT 检查点。

BPO(ICLR 2026 投稿,OpenReview b97EwMUWu7)

针对 Degraded Chosen Responses 问题:DPO 保持了 y_w > y_l 的排序,但 y_w 的绝对对数概率可能掉。BPO 加了一行修正,惩罚 chosen 响应的下行。在 Llama-3.1-8B-Instruct 上,数学推理比 DPO 高 +10.1% 准确率。

普遍结论:DAA 仍然过优化

Rafailov 等《Scaling Laws for Reward Model Overoptimization in Direct Alignment Algorithms》(NeurIPS 2024)在多个数据集、多个 KL 预算下用 DPO、IPO、SLiC 训练策略。真金奖励-KL 曲线呈现和 Gao 等一模一样的峰后塌。隐式奖励在训练中查询分布外样本,KL 正则无法稳定这件事。

⚠️ DAA 没有逃出古德哈特。它把裂口咬下的表面从「奖励模型被过优化」换成了「参考策略比值被过优化」。通用解药——更好的数据、集成、早停——对两者都适用。

三、框架对比:2026 年如何选择

数据/目标 推荐损失 保护的失败模式
大量成对偏好数据 DPO(保守 beta);若长度偏置明显则 SimPO DPO 无界裂口;SimPO 长度偏置
非配对二元反馈 KTO 放弃成对结构,用前景理论
想从基座单阶段到对齐 ORPO 免去 SFT 检查点
DPO 日志里 chosen 对数概率在掉 BPO Degraded Chosen Response
偏好强度差异大、DPO 饱和 IPO 隐式奖励差无界

设计要点:每个实验室都在一组基准上跑全部五种、按任务挑赢家。没有理由认为数学推理和安全对齐的最优点是同一个。不要在安全任务上沿用数学任务调好的 DPO 超参

四、可复用产物

本节产出 outputs/skill-preference-loss-selector.md:给它数据集统计(成对 vs 非配对、偏好强度均匀 vs 变异、长度分布)和目标(单阶段 or SFT-then-preference),它推荐一种偏好损失并报告其保护的失败模式。

code/main.py 是六损失比较器,在 500 对玩具偏好上跑同一份样本,绘制各方法的最终胜率、chosen-对数概率漂移、隐式奖励分布。把它接到真实数据上,比较逻辑无需改动。

五、练习

  1. Easy:运行 code/main.py,报告 DPO 和 BPO 的最终 chosen 对数概率下降。BPO 应保留更高的 chosen 绝对概率——验证这一点。

  2. Medium:把偏好数据改成所有成对强度相等。六种里哪种最鲁棒?哪种退化?解释 IPO 在此处的优势。

  3. Medium:让 rejected 平均比 chosen 长 2 倍,其余不变。用数字展示 DPO 的长度利用,以及 SimPO 的修复。

  4. Hard:Rafailov 等(NeurIPS 2024)主张 DAA 过优化。复现一个单点版本:画出 chosen 减 rejected 的 KL 散度,观察 DPO 在大 beta 下的过优化。

  5. Hard:读 BPO 摘要(OpenReview b97EwMUWu7),写下 BPO 给 DPO 加的那一行修正,对照 code/main.py 实现。

本节要点回顾

  1. DPO 从 RLHF+KL 最优解的闭式反解奖励,代入 Bradley-Terry 后配分函数消掉,得到只含策略参数的损失,无需显式 RM。
  2. DPO 的三种失败:隐式奖励差无界、Degraded Chosen(chosen 绝对对数概率随 rejected 一起掉)、分布外偏好产生任意隐式奖励。
  3. IPO 用恒等映射把裂口钳在 1/(2*beta);KTO 放弃成对结构用前景理论吃非配对数据;SimPO 去参考 + 长度归一;ORPO 单阶段无 SFT 检查点;BPO 加一行保护 chosen。
  4. DAA 仍过优化:Rafailov 等(2024)证明 DPO/IPO/SLiC 的真金-KL 曲线和 Gao 等同形,隐式奖励在训练中查询 OOD,KL 救不了。
  5. 古德哈特的咬点搬家了:从「RM 过优化」到「参考策略比值过优化」,通用解药(数据、集成、早停)对两者都适用。
  6. 2026 选型:成对用 DPO/SimPO、非配对用 KTO、单阶段用 ORPO、chosen 在掉用 BPO、偏好强度变异大用 IPO——但每个任务都要单独跑基准挑赢家。

下一节,我们直击第 02 节四种表现里最阴险的一种——谄媚:为什么 RLHF 会把人类标注员「偏好附和」的微弱倾向,放大成模型肯定错误前提的系统性行为。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U