直接偏好优化及其变体
对齐流水线里有这样一个反复出现的场景:一支团队有一份静态的偏好样本对文件,每个提示词配一个胜出回复与一个被拒回复,并希望用它训练出一个对齐好的模型。传统做法是 RLHF,而 RLHF 成本高。直接偏好这一条线追问这份成本是否必要,并把整套机制化约为一个分类损失;随后,一组变体在这个损失之上展开。受控比较给出的结果是:没有哪个变体能可靠地胜过它们共同继承的基础 DPO 损失。
一份静态的偏好文件
RLHF(见 第 19 章)分三阶段对齐一个模型:监督微调、拟合人类偏好的奖励模型,然后用 近端策略优化(PPO) 做一次策略梯度训练 (Schulman et al. 2017),在对参考模型的Kullback-Leibler 散度(KL)约束下针对该奖励优化策略。这套机制成本高。PPO 要同时驻留四个模型:策略、一个冻结的参考、奖励模型与评论家;结果又对奖励模型质量以及少数几个脆弱超参数都很敏感。对一份静态偏好样本对而言,问题在于:这整套机制是否必要,偏好信号能不能被直接优化。
关键化简:语言模型隐式地就是一个奖励模型
这一化简依赖关于 RLHF 目标的一个事实。在对参考策略的 KL 惩罚下最大化奖励,
这里 是要优化的策略, 是奖励,第一项让策略偏向高奖励回复,KL 项则把它拉回参考策略 附近, 调节约束强度。这个目标的设计直觉是:奖励会拉着模型改变行为,但 KL 约束防止它为了奖励跑到语言模型分布之外。它存在一个闭式最优策略(也就是说,这个目标所隐含的那个唯一最优策略可以直接写成一个公式,而不必靠搜索去找):它是被指数化奖励重新加权的参考策略,。Rafailov 等把这个关系反转了过来 (Rafailov et al. 2023):用最优策略反解奖励, 就写成了一个对数比值,于是任一策略所隐含的奖励为
这里 是冻结参考策略, 是 KL 约束强度, 是配分项,也就是对模型可能产生的每一个回复求和、把重新加权后的参考策略归一化回一个概率分布的那个量;它只依赖提示词,却难以处理,因为这个和要遍历所有可能的序列,数量太大,根本算不出来。把这个隐式奖励代入成对偏好的 Bradley-Terry 模型, 会在胜出回复 与被拒回复 之间相消。剩下的,是偏好样本对上的一个监督损失,
这个式子只比较胜出回复与被拒回复各自相对参考策略的对数比值,因此不再需要单独训练奖励模型。
奖励模型与 RL 回路都没了。策略被训练为给被偏好的回复赋予更高的隐式奖励,而隐式奖励就是策略相对于一个冻结参考模型的对数比值,也就是微调后的模型把这个回答变得比冻结的初始模型更可能多少。论文的标题道出了这一点:语言模型隐式地就是一个奖励模型。图 20.2 展示了这次代入所删去的那套机制。
对一个损失的四处改动
有了这个损失之后,后来的每个方法都是对它的一次改动。每个变体都移除原始 DPO 损失中的一个假设,或删掉其中一块机制。图 20.3 列出了每个变体改动了哪一部分。
恒等偏好优化(IPO)用平方目标让奖励差距有界。 Azar 等瞄准推导中的一个弱点 (Azar et al. 2023):Bradley-Terry 代入假定偏好能被很好地建模为一个确定性排序,而在有限、近乎确定的数据下,log-sigmoid 损失会驱使策略把隐式奖励差距推向无穷,从而对偏好集过拟合。IPO 用一个有界的平方目标替换 log-sigmoid,把隐式奖励差距回归到一个固定目标,于是即便偏好很干净,最优解也保持有限。图 20.4 对照了这两种损失的形状。
在每种损失下对单个奖励差距跑几步梯度,看着 直接偏好优化(DPO) 的差距无界上升,而 IPO 的差距稳定在它的目标上。
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(z): return 1.0 / (1.0 + np.exp(-z))
beta, lr, target, steps = 1.0, 0.5, 5.0, 60
gd, gi = [0.0], [0.0]
for t in range(steps):
# DPO 在差距上的梯度永不归零,于是差距持续增大
gd.append(gd[-1] + lr * beta * sigmoid(-beta * gd[-1]))
# IPO 把差距回归到一个固定目标,于是它在那里稳定下来
gi.append(gi[-1] - lr * 2.0 * beta * (beta * gi[-1] - target))
print(f"{steps} 步后的 DPO 差距: {gd[-1]:.2f},仍在上升")
print(f"IPO 差距收敛到目标: {gi[-1]:.2f}")
plt.plot(gd, label="DPO log-sigmoid"); plt.plot(gi, label="IPO 有界")
plt.axhline(target, ls="--", c="gray"); plt.xlabel("步数"); plt.ylabel("隐式奖励差距")
plt.legend(); plt.show()
Kahneman-Tversky 优化(KTO)改从好/坏标签学习,去掉成对数据要求。 DPO 需要同一个提示词下的一个胜出回复与一个被拒回复;KTO 则从非成对的二元好/坏标签中学习,用一个前景理论效用把每条回复对照一个参考点打分 (Ethayarajh et al. 2024),正是 Kahneman 与 Tversky 所用的那种「人对收益与损失的价值」形态。这是拿一个效用模型换下成对数据约束,其要紧之处在于:点赞与点踩的日志,远比精选样本对丰富。
优势比偏好优化(ORPO)用优势比惩罚把对齐折叠进 SFT。 它不设带参考模型的单独对齐阶段,而是由 Hong 等给 SFT 交叉熵加上一个优势比惩罚 (Hong et al. 2024)(SFT 阶段本身见 第 17 章),于是一次训练既教会格式,又压低被拒回复的权重。它完全不携带参考模型。
简单偏好优化(SimPO)移除参考,并把奖励按长度归一化。 Meng 等从隐式奖励中去掉参考策略 (Meng et al. 2024),用一条序列的平均对数概率作为奖励,并加上胜出与被拒之间的一个目标边际。长度归一化是其刻意之处:DPO 的对数比值奖励与序列长度相关,这让策略能靠变得更啰嗦来抬高分数,而除以长度便移除了这一路径。图 20.5 展示了两种奖励下,奖励随回复长度的变化。
受控比较
表面上,这四处改动像一架不断改进的阶梯,每个变体都修补了上一个所遗漏的。一项受控比较瓦解了这种读法。
这些变体通常被呈现为一架不断改进的阶梯,但一项受控的多尺度研究(arXiv:2603.19335)发现,一旦校正了混杂因素,没有任何一个变体能可靠地胜过基础 DPO。当调参预算、数据与模型被持平时,各方法之间的差距缩进了噪声之中,而表观排名会随模型尺度发生反转:在某一尺寸领先的变体,到另一尺寸却落后。务实的读法是,一个新目标所报告的胜出,往往反映的是一次调得更好的基线对变体比较,而非该损失的某种属性;这些方法之间该选哪个,应由流水线与数据约束来定,而不是由所声称的精度优势来定。
如果精度无法把这些变体区分开,就要看别的因素;真正起决定作用的,通常是流水线与数据的形状。
真正决定取舍的是什么
精度优势既已消失,真正起作用的,就是这些变体据以彼此权衡的那些工程维度。其中四条反复出现。
- 有参考模型与无参考模型。 保留冻结参考(DPO、IPO)会锚定策略,并让 KL 约束有意义,代价是多一个常驻模型与一次前向传播。去掉它(ORPO、SimPO)把对齐阶段的内存减半并简化流水线,但移除了那个限制偏离起始策略的显式锚点。
- 成对数据与非成对数据。 DPO、IPO、ORPO 与 SimPO 都需要每个提示词一个胜出回复与一个被拒回复。KTO 接受非成对的二元信号,这契合生产环境的反馈日志,却以一个效用模型替换了其余方法所优化的成对比较。
- 有界目标与无界目标。 IPO 的有界回归抵抗 DPO 的 log-sigmoid 在干净、近乎确定的偏好上所招致的过拟合。代价是损失不再精确匹配 Bradley-Terry,且要设定一个目标边际。
- 两阶段与单阶段。 ORPO 把对齐并入 SFT,省下一个阶段与一个参考模型,代价是把格式学习与偏好学习纠缠在一起,使它们再也无法被分别调参或审计。
这四条轴线中的第一条,不只是一个建模选择,它是被自下而上地强加的。
第 10 章 的内存预算会向上影响损失设计。DPO 与 IPO 让一个冻结参考模型与策略一同常驻,并在每一步对它多付一次前向传播。在大模型尺寸下,这翻倍的占用正是 ORPO(无参考)与 SimPO(无参考)要消除的成本。无参考设计首先并不是一个精度主张,而是对「持有两个模型」这一系统成本的回应。
运行起来
DPO 是这个家族里运行起来最小的:一个损失、一份作为参考的冻结 SFT 模型副本,以及一个静态的偏好三元组文件。其核心是 log-sigmoid 内部的对数比值之差,由策略与参考下胜出与被拒回复的逐词元对数概率算出;损失的推导参见 DPO loss, Rafailov et al. (arXiv:2305.18290), Sec. 4 (Rafailov et al. 2023)。由于参考从不更新,参考前向传播可以一次性预先计算,这是标准的内存优化。
整个家族中唯一要紧的超参数是 ,即同时缩放隐式奖励的那个 KL 约束强度。太小则策略偏离参考并退化;太大则它几乎不动。由于基础 DPO 是离策略(off-policy)的,是在一份固定数据上训练、而非用来自实时策略的样本,它的上限就是那份固定数据,常见的补救是迭代或在线 DPO,在各轮之间用当前模型重新生成样本对。那个同策略变体,以及它所逼近的更广义的 RLHF 机制,都留到 第 19 章 再谈。
延伸阅读
- Rafailov et al., “Direct Preference Optimization: Your Language Model is Secretly a Reward Model” (DPO), 2023. arXiv:2305.18290DPO 用简单的二元交叉熵损失替代基于人类反馈的强化学习(RLHF)中的显式奖励模型与强化学习循环,直接从人类偏好数据中提取最优策略。
- Azar et al., “A General Theoretical Paradigm to Understand Learning from Human Preferences” (IPO), 2023. arXiv:2310.12036本文提出 ΨPO 通用偏好优化目标,将 RLHF 与 DPO 统一为特例,并推导出 IPO 以绕过 Bradley-Terry 假设从而避免过拟合。
- Ethayarajh et al., “KTO: 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 的可靠性,并具备更优的样本复杂度。
评论
登录后评论