直接偏好优化及其变体
假设团队已经收集了一批提示,每条提示都有两个候选回答,并记录了哪一个更好。经典 RLHF 会先拟合显式奖励模型,再生成新的回答,并针对这项奖励优化策略。直接偏好优化(直接偏好优化(DPO))走的是一条更短的路径。DPO 不显式训练奖励模型,而是直接拟合偏好分类器。在一组明确的偏好建模假设下,这个损失会直接训练语言模型 (Rafailov et al. 2023)。
这项简化很重要。DPO 把奖励建模与策略优化归结为静态数据集上的分类损失,但并没有把对齐变成普通的监督微调,也没有让 RLHF 背后的假设消失。它仍然需要成对判断、冻结的参考策略、关于偏好如何产生的建模假设,以及训练样本对之外的评测。
DPO 去掉了什么,又保留了什么
设偏好数据集为
其中, 是提示, 是标注者选中的回答, 是被拒回答, 是比较总数。DPO 通常从经过指令微调的模型开始,训练策略 ,并将它与冻结的参考策略 比较。参考策略一般就是起始模型的一份副本。
与 第 19 章 中基于 PPO 的 RLHF 相比,DPO 从训练回路中去掉了三个组成部分:
- 不再单独训练标量奖励模型;
- 偏好训练阶段不再从持续变化的策略采样回答;
- 不再需要评论家或策略梯度优化器。
但保留下来的部分同样重要。参考策略定义了怎样的变化才算偏移,数据只覆盖采集时出现过的候选回答,成对损失则规定一次观测到的比较应如何约束策略。只有在下面推导出的严格意义上,语言模型才构成隐式奖励模型。它不能脱离参考模型单独充当通用评判者。
推导过程及其假设
推导从带 KL 正则项的奖励目标开始。对一个提示 ,考虑所有可能回答上的概率分布 :
其中, 是标量奖励, 是 KL 系数, 是参考策略。如果奖励为有限值、归一化常数存在,而且策略只在参考策略的支持集上分配概率,最优分布为
其中的归一化常数是
这个闭式解针对的是概率分布,而不是神经网络参数。有限容量的语言模型 未必能精确表示 ,梯度下降也未必能找到全局最优点。这个公式只给出了理想 KL 正则化解的形式,并没有直接解出 。
重新排列最优策略的公式,可以得到
最后一项依赖提示,却不依赖回答。更一般地说,奖励只能确定到一个仅依赖提示的常数:对于同一个提示,在每个回答的奖励上加上任意 ,既不会改变成对奖励差,也不会改变归一化后的最优策略。因此,策略与参考策略的对数比只是这一等价类中的一种表示,并不是唯一恢复出来的人类效用。
DPO 接着假设偏好服从 Bradley-Terry 模型:
这里, 表示 比 更受偏好。Bradley-Terry 假设用一个标量表示每个回答,再通过 Sigmoid 函数把分数差变成选择概率。它不能直接表示平局、循环偏好、不同标注者群体,也无法表示依赖于未记录情境的判断。
把隐式奖励代入 Bradley-Terry 模型。仅依赖提示的常数会在 与 之间相消,得到 DPO 损失:
其中,
表示选中回答相对参考模型的变化,减去被拒回答相对参考模型的变化。要精确等价于理想化 RLHF 解,必须满足偏好模型设定正确、数据覆盖充分、参考策略与行为策略的支持集兼容,而且优化成功。DPO 在这些假设下去掉显式奖励模型与 PPO 回路,但并不对任意神经网络、设定错误的偏好模型或有限的支持集外数据严格等价。
如何理解相对变化
间隔公式很容易被误读。DPO 并不只是要求选中回答的概率高于被拒回答,而是要求训练使选中回答相对参考模型的上升幅度,大于被拒回答相对参考模型的上升幅度。这里的关键是,正的 DPO 间隔并不能保证 。如果某个回答在参考模型下原本就很不可能,它可以在相对比较中胜出,却仍然拥有很低的绝对概率。
单个样本的梯度可以更清楚地说明更新方式:
这里,间隔为负或较小时,样本对获得的权重最大。间隔变大后,Sigmoid 函数趋于饱和,这个样本对的贡献也会减小。两个序列共享同一组模型参数,因此这种对比更新不能保证选中回答的对数概率在每个检查点都单调上升。应当直接记录这项指标,而不是从训练损失推断它。
序列对数概率是各词元对数概率之和:
其中, 是回答的词元数, 是第 个词元之前的前缀。因此,DPO 间隔会累加回答中所有词元相对参考模型的变化。如果数据中的回答长度存在系统性差异,长度可能混入间隔,但每个词元的对数比既可能为正,也可能为负。DPO 奖励并不在数学上保证随回答长度增长。
的作用也分为两层。在 KL 正则化目标中,更大的 意味着理论上对参考策略施加更强的正则约束。在实际 DPO 损失中, 同时决定对数几率的温度,并缩放梯度。有限步训练不能保证 与测得的策略偏移之间呈单调关系。调参之后,应报告实际达到的策略与参考模型偏差以及任务质量,而不能把配置值当成已经实现的约束。
四种变体解决的是不同约束
IPO、KTO、ORPO 与 SimPO 经常被排成一串逐步升级的方法,但这种说法掩盖了各自的用途。它们改变的是不同问题:损失形状、标签格式、是否加入 SFT 项,或如何定义回答分数。所需的数据与训练资源也不同。它们是针对不同数据和流水线约束的替代方案,不是同一种算法依次升级后的版本。
IPO:保留样本对与参考模型,改变损失形状
身份偏好优化(恒等偏好优化(IPO))从 DPO 的 Bradley-Terry 化简所带来的一个理论问题出发。如果观测到的偏好是确定或近乎确定的,负 log-sigmoid 损失会在偏好间隔不断增大时继续逼近下界。损失本身的下界是零,趋向无穷的是可分样本上的最优间隔 (Gheshlaghi Azar et al. 2024)。
IPO 绕过逐点 Bradley-Terry 奖励假设,转而把策略与参考模型的对数比间隔回归到一个有限目标。定义
其中, 是选中回答与被拒回答之间的策略/参考模型对数比间隔。采样形式的 IPO 目标为
这里用 表示原论文中记作 的正 KL 正则化参数。因此,目标由理论固定为 ,并不是独立选择的超参数。IPO 仍然需要成对回答与冻结参考模型。原论文主要用示意性的多臂老虎机问题展示这种行为,不能据此断言 IPO 在语言模型任务上普遍更好。
下面的可运行示例只优化一个标量间隔,而不是语言模型。它展示的是损失几何形状,并不能预测模型质量。
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(z):
return 1.0 / (1.0 + np.exp(-z))
beta = 0.2
learning_rate = 0.1
steps = 100
ipo_target = 1.0 / (2.0 * beta)
dpo_gap = [0.0]
ipo_gap = [0.0]
for _ in range(steps):
# d[-log sigmoid(beta*h)]/dh = -beta*sigmoid(-beta*h)
dpo_gradient = -beta * sigmoid(-beta * dpo_gap[-1])
dpo_gap.append(dpo_gap[-1] - learning_rate * dpo_gradient)
# d[(h - 1/(2*beta))**2]/dh = 2*(h - target)
ipo_gradient = 2.0 * (ipo_gap[-1] - ipo_target)
ipo_gap.append(ipo_gap[-1] - learning_rate * ipo_gradient)
print(f"IPO 目标:{ipo_target:.2f}")
print(f"DPO 间隔(100 步后):{dpo_gap[-1]:.2f}")
print(f"IPO 间隔(100 步后):{ipo_gap[-1]:.2f}")
plt.plot(dpo_gap, label="DPO 间隔")
plt.plot(ipo_gap, label="IPO 间隔")
plt.axhline(ipo_target, color="gray", linestyle="--", label="IPO 目标")
plt.xlabel("梯度步")
plt.ylabel("策略/参考模型对数比间隔")
plt.legend()
plt.show()
KTO:用合意与不合意样本取代成对比较
Kahneman-Tversky 优化(KTO)改从好/坏标签学习,去掉成对数据要求。 Kahneman-Tversky 优化改变了数据要求。每个样本是三元组 ,其中 表示回答 是合意还是不合意。同一提示不必同时提供一个正例和一个负例 (Ethayarajh et al. 2024)。因此,KTO 可以使用由赞成、拒绝或经过阈值化的评分构成的日志,但这些标签的含义与校准方式仍然重要。
KTO 保留参考模型,并定义
其中, 是回答的策略/参考模型对数比, 是 KL 参考点。KTO 再根据回答相对这个参考点的位置计算效用:
损失为 ,其中 与 分别控制合意类和不合意类的权重。精确计算 很昂贵,原论文使用由错配提示与回答构造出的停止梯度且有偏的微批次估计。因此,类别不平衡既会影响类别权重,也会影响基线估计的质量。
前景理论的联系提供了一种归纳偏置:相对于参考点衡量收益与损失,并使用会饱和的价值函数。但这并不能证明这个公式忠实刻画了人们如何评价文本。KTO 更直接也更实际的优势是,它可以从独立标注的回答学习,而不必假装这些标签构成同一提示下的样本对。
ORPO:把选中回答的 SFT 与偏好惩罚合并
优势比偏好优化(优势比偏好优化(ORPO))移除冻结参考模型,也不再设置单独的偏好训练阶段。它仍然使用成对数据,以选中回答作为 SFT 目标,再加入一项拉开选中与被拒序列分数的损失 (Hong et al. 2024)。对于包含 个词元的回答,ORPO 首先定义词元概率的几何平均:
其中, 是各词元概率的几何平均。对应的优势为 。完整目标是
其中, 是选中回答的负对数似然, 控制优势比项的权重。优势比项定义为
最小化 ,会提高选中回答相对于被拒回答的优势。这里的 在示范学习与偏好分离之间取舍。ORPO 属于单阶段训练,但单阶段并不等于只把数据训练一遍。它省去了参考模型推理或缓存参考分数的工作,却通过 把 SFT 与偏好学习耦合起来,无法像分阶段的 SFT 后接 DPO 那样独立调节和审计这两种信号。
SimPO:使用平均对数概率与目标间隔
简单偏好优化(简单偏好优化(SimPO))同样移除参考模型,但保留纯粹的成对目标。它用策略的平均词元对数概率为回答评分:
其中, 是回答长度, 缩放平均对数概率。训练损失为
其中, 缩放分数差, 是目标间隔 (Meng et al. 2024)。SimPO 没有参考策略 KL 项,所以 在这里不是 KL 系数。
对词元取平均,可以在回答长度与数据偏好相关时降低回答长度带来的敏感性,但并不能消除所有长度偏差。SimPO 论文也指出,DPO 中的策略/参考模型比本身可能抵消一部分长度效应。原始实验还发现, 过大可能降低生成质量。无参考模型并不等于没有正则约束,初始化、学习率、数据覆盖与早停仍然会限制策略偏移。
现有比较能说明什么
几篇原始论文都在各自的实验设置中报告了改进:KTO 使用非成对标签得到有竞争力的结果,ORPO 展示了联合目标的收益,SimPO 则在对话评测中超过其 DPO 基线。但这些实验使用的起始模型、数据集、超参数搜索与评测器都不相同,并不构成一场采用统一条件的竞赛。
一篇 2026 年预印本在 1.5B 参数模型与合成 GSM8K 偏好数据上测试了 20 种 DPO 变体。经过 Bonferroni 校正后,没有任何变体能可靠地超过基础损失 (Li 2026)。在这项实验中,SimPO 是唯一达到统计显著差异的方法,但表现更差。不过,同一论文在更广的规模实验中又发现 SimPO 在 7B 规模上领先 DPO。该论文的变体扫描只采用一个模型家族和一个主要训练领域,沿用公开默认参数,而没有为每种方法提供相同的调参预算;最初还出现过随机种子传播错误,作者后来只在部分方法上重新检查。
这些结果并不能证明 DPO 在所有场景下都最好。它说明,目标函数层面的胜负取决于模型规模、数据、初始化、调参和评测。其他更广泛的实证比较同样发现,方法排名会随实验设置变化 (Spangher et al. 2025; Saeidi et al. 2025)。
稳妥的结论不是所有损失都可以互换,而是目前没有得到公认的普适胜者。比较时应固定起始检查点、数据、优化预算、解码设置与外部评测器。如果这个选择关系重大,还应报告不同随机种子下的不确定性。
根据数据与流水线约束选择
数据与流水线条件往往会在比较基准分数之前缩小选择范围:
| 方法 | 反馈格式 | 训练时使用冻结参考模型 | 选中回答的 SFT 项 | 回答分数 | 主要额外控制项 |
|---|---|---|---|---|---|
| DPO | 成对比较 | 是 | 否 | 策略/参考模型对数比之和 | |
| IPO | 成对比较 | 是 | 否 | 策略/参考模型对数比间隔 | 与有限目标 |
| KTO | 合意/不合意 | 是 | 否 | 相对 KL 基线的对数比 | |
| ORPO | 成对比较 | 否 | 是 | 词元概率几何平均的优势 | |
| SimPO | 成对比较 | 否 | 否 | 策略平均对数概率 |
把这张表当作筛选条件,而不是排行榜:
- 如果已有同一提示下的成对回答和合适的参考模型,可以先从 DPO 开始。它是最清楚的基线,也能把 SFT 与偏好学习分开。
- 如果可分样本使间隔持续上升,同时又希望保留参考模型锚点,可以考虑 IPO。但应在实际模型环境中验证理论给出的目标。
- 如果反馈确实是逐条标注的,可以考虑 KTO。与成对方法比较质量之前,应审计标签语义、类别平衡与微批次 KL 估计。
- 如果在一个阶段内完成 SFT 与偏好学习有明显的运维价值,可以考虑 ORPO。应测量 所表示的权重如何平衡选中回答的模仿学习与拒绝学习,而不能假设两者一定相互促进。
- 如果流水线适合省去参考模型推理,并使用逐词元平均分数,可以考虑 SimPO。由于没有显式参考锚点,这里需要同时调节 与 ,并直接测量策略偏移。
无参考方法省去的是参考模型推理与存储开销,并不一定让峰值内存减半。实际节省取决于优化器状态、激活值、分片、卸载,以及参考分数是否预先计算。DPO 与 IPO 可以在训练前计算冻结参考模型对每个样本对的两个标量分数,以磁盘空间和预处理时间换取更低的训练期内存与算力开销。
第 10 章 中的系统设计会直接影响目标函数的选择。如果能预先计算参考分数,DPO 训练时就不必让额外模型常驻内存。重新生成样本对后,缓存分数会过期,参考模型推理也会重新进入回路。在把「无参考」作为系统优势之前,应先决定数据刷新周期、存储格式、分片方案与精度策略。
一次实际的 DPO 训练
可靠的第一次训练应当尽量朴素。它先验证偏好数据是否含有有效信号,再考虑加入其他变体。
- 固定起点。 这里把 SFT 或指令微调检查点保存为 ,并用同一组权重初始化 。记录分词器、对话模板、截断规则与序列结束符处理方式。
- 验证每个三元组。 每条数据必须包含一个提示、一个选中回答和一个被拒回答。移除完全重复的数据、标签互相矛盾的重复数据、空回答,以及被截断后变得完全相同的样本对。按提示或来源组划分数据,避免近重复内容泄漏到留出集。
- 检查偏好信号。 测量回答长度、标签来源、主题分布、可用的标注者一致率,以及起始模型给出的间隔。如果选中回答几乎总是更长,模型可能只学会把长度当作偏好捷径。
- 正确计算序列分数。 屏蔽提示词元和填充词元,只对回答词元求和。策略模型与参考模型必须使用相同的分词与截断方式。只有在这些选择固定后,才能预先计算参考分数。
- 进行小规模参数扫描。 改变学习率、 与训练轮数。学习率和停止时间可能与具体采用哪种目标函数同样重要。比较不同方法时,保持数据顺序与评测流程不变。
- 评测每个检查点,而不只看最后一步。 训练集偏好准确率可能在留出任务质量达到峰值之后继续上升。应使用扫描前就定义好的外部评测来选择检查点。
一个批次所需的最小计算为
这里, 与 都只对回答词元求和。分别记录这两个诊断量,可以暴露只看一条损失曲线时会被掩盖的多种问题。
失效方式与检查项
偏好优化是离线过程,只会约束静态比较中出现过的回答。随着策略改变,它可能进入标签几乎没有覆盖的区域。任何损失变体都无法从缺失的数据中推断未被记录的行为要求。
至少要在留出数据和模型新生成的回答上记录以下指标:
- 留出集偏好准确率与间隔。 两者能说明损失是否泛化到未见过的样本对,却不能单独衡量开放式生成质量。
- 选中回答与被拒回答的对数概率。 相对间隔扩大时,两种回答的似然仍可能同时下降。这未必不可接受,但应被直接观测,而不是假定不会发生。
- 策略与参考模型的偏差。 在新生成的回答上估计词元级 KL 或策略/参考模型对数比。配置中的 不是实际偏移的测量结果。
- 回答长度与格式合规性。 比较完整分布,而不只比较均值。长度、拒绝率和格式都可能成为偏好标签的捷径。
- 留出任务质量。 使用人工评测、可核验任务,或局限性已经明确的评判协议。还应覆盖训练样本对没有涉及的安全与能力回退。
- 分组结果。 按提示来源、语言、难度、回答长度差与标签来源拆分。总体胜率可能掩盖某个群体上的严重回退。
如果训练准确率接近一,而外部质量却下降,应先缩短训练或降低学习率,再检查数据泄漏、矛盾标签、长度捷径与策略偏移。切换目标函数之前不先诊断这些原因,只会把同一种失效搬到另一个损失上。
静态偏好优化的价值恰恰来自简单,它的局限也来自同一个地方:模型在发生变化时从不请求新的比较。迭代式或在线方法会用当前策略刷新候选回答,再收集或生成新的判断,从而改善覆盖范围,代价是重新把采样与反馈基础设施带回训练回路。这也正是 第 19 章 讨论在线 RLHF 系统时面对的取舍。
延伸阅读
- Rafailov et al., “Direct Preference Optimization: Your Language Model is Secretly a Reward Model” (DPO), 2023. arXiv:2305.18290DPO 用简单的二元交叉熵损失替代基于人类反馈的强化学习(RLHF)中的显式奖励模型与强化学习循环,直接从人类偏好数据中提取最优策略。
- Gheshlaghi Azar et al., “A General Theoretical Paradigm to Understand Learning from Human Preferences” (IPO), 2024. arXiv:2310.12036本文提出 ΨPO 通用偏好优化目标,将 RLHF 与 DPO 统一为特例,并推导出 IPO 以绕过 Bradley-Terry 假设从而避免过拟合。
- Ethayarajh et al., “Model Alignment as Prospect Theoretic Optimization,” 2024. arXiv:2402.01306KTO 基于 Kahneman-Tversky 前景理论提出对齐目标,仅需二元可取性信号而非偏好对,在 1B 到 30B 参数规模上与 DPO 持平或更优。
- Hong et al., “ORPO: Monolithic Preference Optimization without Reference Model,” 2024. arXiv:2403.07691ORPO 是一种单体偏好对齐算法,通过在监督微调(SFT)损失中附加优势比惩罚项,将 SFT 与偏好优化合并为单步训练,无需参考模型。
- Meng et al., “SimPO: Simple Preference Optimization with a Reference-Free Reward,” 2024. arXiv:2405.14734SimPO 用长度归一化的平均对数概率替代 DPO 的参考模型奖励,并引入目标奖励间隔,无需参考模型,在 Arena-Hard 上比 DPO 最多提升 7.5 个百分点。
- Schulman et al., “Proximal Policy Optimization Algorithms” (PPO;在强化学习与奖励建模章节中引入,并在推理训练中复用), 2017. arXiv:1707.06347PPO 提出裁剪代理目标函数,使策略梯度强化学习在仅用一阶优化的条件下达到 TRPO 的可靠性,并具备更优的样本复杂度。
评论
登录后评论