第 9 讲:直接偏好优化(DPO)

Machine Learning from Human Preferences · Lecture 09。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应:Stanford CS329H Fall 2026 Lecture 9(10/21 Direct preference optimization)。依据教材第 1 章 1.2 节、第 2 章 2.9.3 节、第 5 章 5.3 节及相应幻灯片;DPO 依据 Rafailov 等(2023);变体依据 Azar 等(2023,IPO)、Ethayarajh 等(2024,KTO)、Meng 等(2024,SimPO)、Hong 等(2024,ORPO);社会选择的视角依据 Siththaranjan 等(2024)和 Munos 等(2024)。 配套代码:code/lecture09/(numpy + PyTorch,CPU 即可;复用第 8 讲的玩具语言模型) 预计阅读时间:3~4 小时(含运行代码)


0. 本讲导航

0.1 学完本讲,你应该能够

  1. 从 KL 约束目标的解析解出发,三步推导出 DPO 损失;解释”隐式奖励”、参考模型的作用,以及为什么配分函数 ZZ 会消掉。
  2. 说出 DPO 在数据无限、模型足够灵活时学到的是什么(数据背后的 BT 奖励对应的 π∗\pi^*),以及它绕开了什么、没绕开什么。
  3. 推导 DPO 的梯度,解释权重 σ(r^l−r^w)\sigma(\hat r_l - \hat r_w) 的含义。
  4. 说出离线 DPO 的几个问题:在数据之外的推广、似然位移、KL 不受训练过程直接约束、确定性偏好下的发散;以及在线 / 迭代 DPO 为什么能缓解。
  5. 说出 IPO、KTO、SimPO、ORPO 各改了 DPO 的哪个假设、带来什么代价。
  6. 解释”隐藏情境下的 BT / DPO 用 Borda 计数聚合”,以及成对比较为什么忽略偏好强度。
  7. 解释偏好不可传递时 BT 的问题,以及 Nash 偏好学习(最大彩票)的思路。

0.2 先修知识

知识点用在哪里最低要求
第 8 讲全部KL 约束目标与解析解 π∗∝πrefer/β\pi^* \propto \pi_{\text{ref}}e^{r/\beta}、玩具语言模型、奖励过度优化
第 5 讲第 3、7 节BT 最大似然、梯度 = 实际胜场 − 预期胜场
第 1、3 讲第 7 节孔多塞悖论、Plackett–Luce

0.3 本讲地图

第1节  动机:RLHF 太复杂了
第2节  推导:奖励可以用策略表示                         ← 代码 01 演示 1
第3节  DPO 学的是什么;梯度的直觉                        ← 代码 01 演示 2、3
第4节  DPO vs RLHF:数据之外、似然位移、KL               ← 代码 02
第5节  β、确定性偏好与 IPO;在线 / 迭代 DPO              ← 代码 03
第6节  变体:IPO、KTO、SimPO、ORPO                       ← 代码 04
第7节  社会选择的视角:Borda 计数与 Nash 偏好学习         ← 代码 05
第8–12节 小结、与考核的关系、练习、延伸阅读、下一讲预告

0.4 关于数字

本讲的代码复用第 8 讲的玩具语言模型(code/lecture08/toy_lm.py):6 个词、最多 6 个内容词、全部 19531 个回答可以穷举;真实质量有”边际递减”,众包标注员偏爱”华丽”和长回答。所有 KL、真实质量都是精确值。偏好数据和第 8 讲代码 02 是同一批 2000 对,所以 DPO 和 RLHF 可以直接比较。真实论文里的结论单独标出。


1. 动机:RLHF 太复杂了

第 8 讲的 RLHF 有三个阶段、四个模型:

  • 策略(要训练的语言模型);
  • 参考模型(SFT 模型,算 KL 用);
  • 奖励模型(单独训练);
  • 价值网络(PPO 的评论家,和策略差不多大)。

RL 阶段要在线采样(生成很慢)、四个大模型同时放在显存里,超参数很多,训练不稳定。

可是第 8 讲也发现:RLHF 的目标有一个解析解 π∗∝πrefexp⁡(r/β)\pi^* \propto \pi_{\text{ref}}\exp(r/\beta),RL 只是到达它的方法。能不能绕开奖励模型和 RL,直接从偏好数据得到 π∗\pi^*?

Rafailov 等(2023)的回答是可以,方法叫直接偏好优化(DPO)。它把 RLHF 的后两个阶段变成了一个分类损失——和训练奖励模型的损失几乎一样简单。DPO 很快成为开源模型后训练的标准工具(Zephyr、Tulu 2、Llama 3 等都用了它或它的变体)。


2. 推导:奖励可以用策略表示

第一步(第 8 讲第 4.2 节):KL 约束目标 max⁡πEπ[r]−β KL(π ∥ πref)\max_\pi E_\pi[r] - \beta\,\mathrm{KL}(\pi\,\|\,\pi_{\text{ref}}) 的解是

π∗(y∣x)=1Z(x)πref(y∣x)exp⁡(r(x,y)/β)\pi^*(y \mid x) = \frac{1}{Z(x)}\pi_{\text{ref}}(y \mid x)\exp\big(r(x, y)/\beta\big)

第二步:反解出奖励。两边取对数、整理:

r(x,y)=βlog⁡π∗(y∣x)πref(y∣x)+βlog⁡Z(x)r(x, y) = \beta\log\frac{\pi^*(y \mid x)}{\pi_{\text{ref}}(y \mid x)} + \beta\log Z(x)

给定 πref\pi_{\text{ref}} 和 β\beta,奖励和最优策略一一对应(奖励只确定到一个只依赖于提示词 xx 的常数)。Z(x)Z(x) 是对所有可能回答的求和,算不出来——但它马上就会消掉。

第三步:代进 BT 似然。偏好模型 P(yw≻yl∣x)=σ(r(x,yw)−r(x,yl))P(y_w \succ y_l \mid x) = \sigma(r(x, y_w) - r(x, y_l)) 只依赖奖励的差值,βlog⁡Z(x)\beta\log Z(x) 正好抵消:

P(yw≻yl∣x)=σ(βlog⁡π∗(yw∣x)πref(yw∣x)−βlog⁡π∗(yl∣x)πref(yl∣x))P(y_w \succ y_l \mid x) = \sigma\Big(\beta\log\frac{\pi^*(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta\log\frac{\pi^*(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}\Big)

现在把 π∗\pi^* 换成一个带参数的策略 πθ\pi_\theta,在偏好数据上做最大似然(第 5 讲),就得到 DPO 损失:

LDPO(θ)=−E(x,yw,yl)[log⁡σ(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x))]\mathcal{L}_{\text{DPO}}(\theta) = -E_{(x, y_w, y_l)}\Big[\log\sigma\Big(\beta\log\frac{\pi_\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta\log\frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}\Big)\Big]

记 r^θ(x,y)=βlog⁡πθ(y∣x)πref(y∣x)\hat r_\theta(x, y) = \beta\log\frac{\pi_\theta(y \mid x)}{\pi_{\text{ref}}(y \mid x)},叫隐式奖励。DPO 就是”以 r^θ\hat r_\theta 为分数的 BT 最大似然”——和第 6 讲训练奖励模型的损失一模一样,只是分数不再由一个单独的打分头给出,而是由策略本身给出。论文的副标题说得很妙:“你的语言模型其实是一个奖励模型”。

代码 01_dpo_derivation.py 演示 1 在玩具世界里数值验证了第二步:对第 8 讲的线性奖励模型,βlog⁡(π∗/πref)−r\beta\log(\pi^*/\pi_{\text{ref}}) - r 在全部 19531 个回答上都等于同一个常数(β=1\beta = 1 时 −2.4575678989,就是 −βlog⁡Z-\beta\log Z),用 rr 和用 π∗\pi^* 算出的 BT 概率完全相同。

参考模型的作用。隐式奖励是”相对于 SFT 的变化”:πθ\pi_\theta 比 πref\pi_{\text{ref}} 更喜欢某个回答,它的隐式奖励就是正的。参考模型充当”零点”,并把策略拴在 SFT 附近(第 6.3 节会看到去掉它的后果)。

多于两个回答。如果数据是 KK 个回答的排序,把 BT 换成 Plackett–Luce(第 2、3 讲)即可,ZZ 同样会消掉(练习 2)。


3. DPO 学的是什么;梯度的直觉

3.1 它绕开了奖励模型,没绕开数据

DPO 在数据无限、策略足够灵活时,隐式奖励会等于数据背后的 BT 奖励,策略会等于那个奖励对应的 π∗\pi^*。在玩具世界里,众包标注员按 P(a≻b)=σ(2(ua−ub))P(a \succ b) = \sigma(2(u_a - u_b)) 选择,所以数据背后的 BT 奖励是 2×2 \times 标注员效用(含偏爱华丽、偏爱长回答的偏差)。

代码 01 演示 2(β=1\beta = 1,梯度步数固定为约 2500 步):

偏好对数KL(π_DPO ‖ π*真实)KL(π_DPO ‖ π*线性)真实质量
5001.0221.806+2.164
20000.1310.676+2.008
80000.0690.575+1.944
320000.0650.524+1.919

(π真实:KL 1.508、真实质量 +2.043;π线性:第 8 讲 RLHF 用的线性奖励模型对应的最优策略,KL 0.924、真实质量 +1.338。)

  • 数据越多,DPO 越接近 π*(真实 BT 奖励),离 π*(线性奖励模型) 一直很远。
  • DPO 的隐式奖励由策略网络表示,在这个玩具世界里可以表示”各种词个数”的任意函数,比线性奖励模型灵活得多,没有”学不出边际递减”的问题。所以它的真实质量比第 8 讲线性 RLHF 的最好值(+1.34)高。
  • 但它学到的是数据背后的奖励,包括标注员的偏差。DPO 绕开的是奖励模型,不是偏好数据本身的问题。

3.2 梯度:判错得越厉害,更新越大

对 DPO 损失求梯度(练习 3):

∇θLDPO=−β E[σ(r^θ(yl)−r^θ(yw))⏟权重(∇log⁡πθ(yw)⏟提高被选中的−∇log⁡πθ(yl)⏟压低被拒绝的)]\nabla_\theta\mathcal{L}_{\text{DPO}} = -\beta\,E\Big[\underbrace{\sigma\big(\hat r_\theta(y_l) - \hat r_\theta(y_w)\big)}_{\text{权重}}\big(\underbrace{\nabla\log\pi_\theta(y_w)}_{\text{提高被选中的}} - \underbrace{\nabla\log\pi_\theta(y_l)}_{\text{压低被拒绝的}}\big)\Big]

权重是”当前的隐式奖励认为被拒绝的回答更好”的概率:判错得越厉害,更新越大;已经判对的对,权重趋于 0。这和第 5 讲 BT 的梯度”实际 − 预期”是同一个结构。

代码 01 演示 3:训练前所有对的权重都是 0.5;训练 1、5、20、40 遍后,平均权重降到 0.317、0.257、0.217、0.212——大部分对已经判对了,剩下的梯度主要来自仍然判错的对(其中不少是标注噪声)。

如果去掉权重(直接最大化 log⁡π(yw)−log⁡π(yl)\log\pi(y_w) - \log\pi(y_l)),目标就没有上界了:把被拒绝回答的概率压向 0,目标就能无限变大。它没有确定的终点,离 SFT 的 KL(训练 5 遍后 3.91)远大于 DPO(0.78),而且和 β\beta 无关。在这个小玩具里它的真实质量没有崩溃(被压下去的主要是平均更差的”被拒绝”回答),但 DPO 论文报告,在真实的语言模型上这种朴素做法会让模型退化。σ 权重来自 BT 似然:DPO 是一个有上界的概率模型的最大似然,所以它有明确的目标 π∗\pi^*。


4. DPO vs RLHF

4.1 同一批数据,两条路线

代码 02_dpo_vs_rlhf.py 演示 1:第 8 讲的同一批 2000 对偏好。RLHF 用解析最优解(第 8 讲验证过 RL 会收敛到它);DPO 训练 20 遍。

βRLHF 线性RLHF 灵活DPO目标 π*(真实 BT 奖励)
3.0真实质量+1.033+1.226+1.255+1.353
KL0.1210.1670.2190.252
1.0真实质量+1.338+1.910+1.769+2.043
KL0.9241.1561.2451.508
0.3真实质量+0.833+2.395+1.585+2.384
KL4.3095.4263.6416.120
0.1真实质量+0.107+2.400+1.339+2.400
KL6.5307.5584.6657.583
  • β\beta 较大时,DPO 明显好于”RLHF 线性”,和”RLHF 灵活”相近:隐式奖励足够灵活。
  • β\beta 较小时,“RLHF 灵活”继续变好(+2.4),DPO 却停在 +1.3~+1.6,KL 也远没到目标。有限的离线数据让 DPO 到不了它”应该”到达的地方。

4.2 DPO 把概率放到了哪里

演示 2(β=0.1\beta = 0.1):训练数据里出现过的不同回答只有 1485 个(全部的 7.6%)。

策略在”出现过的”上的概率出现过部分的真实质量没出现过部分的真实质量总的真实质量
SFT0.751+0.759+0.464+0.685
DPO0.430+1.745+1.032+1.339
RLHF 灵活0.032+2.401+2.400+2.400

两种方法都把大部分概率放在了”没出现过”的回答上——这本身不是问题,最好的回答不一定恰好被采样到过。问题在于 DPO 放到那里的是什么:概率最高的”没出现过”的回答是”华丽 华丽 华丽 华丽 华丽 华丽”(真实质量 −0.6),后面几个也堆满了华丽。

为什么? DPO 只在”被选中 vs 被拒绝”的那些对上约束了隐式奖励的差值。数据里华丽多的回答常常被选中(标注偏差),策略网络把”华丽越多越好”推广到了数据之外,没有任何数据告诉它”六个华丽”不好。β\beta 越小,同样的偏好差需要越大的对数概率比,策略被推得越远。

RLHF 的奖励模型也会外推(第 8 讲),但它是一个单独的、在所有回答上都有定义的函数,RL 阶段在策略新生成的回答上用它打分;DPO 的隐式奖励就是策略网络本身,在数据之外怎样推广取决于策略网络的结构。Xu 等(2024)在真实的大模型上做了系统比较:DPO 可能给分布外的回答分配很高的概率,仔细调过的 PPO 在多个任务上更好。Tajwar 等(2024)的结论类似:用策略自己生成的(on-policy)数据很重要。

4.3 似然位移

演示 3(β=1\beta = 1):训练数据上被选中回答的平均 log⁡π\log\pi,训练前是 −7.310,训练 1、5、20、80 遍后是 −7.347、−7.535、−7.911、−8.045——被选中回答的概率在下降。被拒绝回答的降得更多(−6.769 → −9.920)。

DPO 只要求两者的差变大,两个都下降、但被拒绝的降得更多,也满足要求。被挪走的概率去了别的回答——包括数据里没有的回答(第 4.2 节)。Razin 等(2024)把这叫似然位移,它可能把概率挪到意想不到、甚至有害的地方。一些变体(DPO-Positive、在损失里加上被选中回答的 SFT 损失,例如 RPO)试图阻止被选中回答的概率下降。

4.4 KL 不受训练过程直接约束

同一个演示里,KL 随训练遍数从 0.440(1 遍)一路增大到 1.432(80 遍);训练集准确率一直上升(0.779 → 0.843),留出准确率很快就不怎么变了(0.771 → 0.829)。

β\beta 只出现在损失里,决定的是”目标” π∗\pi^* 离 SFT 多远;训练过程本身并不像 RLHF 那样每一步都扣 KL。所以训练多久也是一个需要用留出数据或人工评估来选的超参数。

4.5 怎样选

RLHF(PPO / GRPO / RLOO)DPO
训练奖励模型 + 在线 RL,贵,超参数多一个分类损失,便宜,稳定
数据策略在训练中不断生成新回答,奖励模型给它们打分只用固定的偏好数据(离线)
奖励模型显式的,可以复用、检查、集成(第 6 讲)隐式的,是策略本身
主要风险奖励过度优化(第 8 讲)数据之外的推广、似然位移、确定性偏好下发散

实践中两者的界限越来越模糊:在线 / 迭代 DPO(第 5.3 节)每一轮用当前策略生成新回答、收集新偏好,已经很像 RLHF。


5. β、确定性偏好与 IPO;在线 / 迭代 DPO

5.1 β 扫描

代码 03_beta_offline_online.py 演示 1(同一批 2000 对,训练 20 遍):

βDPO:KL真实质量华丽目标:KL目标:真实质量
5.000.085+1.0610.630.099+1.118
1.001.245+1.7691.191.508+2.043
0.502.524+1.8571.803.796+2.328
0.303.641+1.5852.476.120+2.384
0.104.665+1.3392.927.583+2.400

DPO 的真实质量在 β≈0.5\beta \approx 0.51 附近最好,更小反而下降——形状像第 8 讲的过度优化曲线,原因却不同:目标本身在 β\beta 很小时很好(+2.4),是有限的离线数据让 DPO 到不了那里,还在数据之外学到了”华丽越多越好”。DPO 原论文的实验里 β\beta 取 0.10.5;和 RLHF 的 KL 系数一样,没有通用的最佳值。

5.2 确定性偏好:DPO 的 KL 停不下来

Azar 等(2023)指出了 DPO 的一个理论问题。如果数据里 ywy_w 总是赢 yly_l(偏好是确定性的),BT 似然要求 σ(r^(yw)−r^(yl))→1\sigma(\hat r(y_w) - \hat r(y_l)) \to 1,即对数概率比的差 →∞\to \infty——无论 β\beta 多大,最优解都在无穷远处,β\beta 的正则化作用消失了。而真实的偏好数据集里,大部分回答对只被标注过一次:从数据的角度看,每一对都是”确定性”的。

他们提出的 IPO 把 BT 似然换成平方损失,让对数概率比的差等于一个有限的目标:

LIPO=E[(log⁡πθ(yw)πref(yw)−log⁡πθ(yl)πref(yl)−12τ)2]\mathcal{L}_{\text{IPO}} = E\Big[\Big(\log\frac{\pi_\theta(y_w)}{\pi_{\text{ref}}(y_w)} - \log\frac{\pi_\theta(y_l)}{\pi_{\text{ref}}(y_l)} - \frac{1}{2\tau}\Big)^2\Big]

演示 2(每格是”KL / 真实质量”):

5 遍20 遍60 遍120 遍
DPO β=1,带噪声0.78 / +1.481.24 / +1.771.41 / +1.791.64 / +1.84
DPO β=1,确定性1.31 / +1.652.82 / +2.035.14 / +2.155.86 / +2.27
IPO τ=0.1,确定性1.34 / +1.641.77 / +1.931.75 / +2.001.67 / +2.00

确定性偏好下 DPO 的 KL 一直在涨,IPO 很快稳定下来。注意两点:IPO 的 τ\tau 和 DPO 的 β\beta 不是同一个尺度(τ=1\tau = 1 时目标间隔只有 0.5,几乎不动);这里的确定性偏好去掉了标注噪声,所以真实质量反而更好——“KL 停不下来”本身不一定有害,有害的是它不再受 β\beta 控制。

5.3 在线 / 迭代 DPO

第 4.2 节的问题根源是”数据跟不上策略”。在线(迭代)DPO:每一轮用当前策略生成新回答、收集新偏好、加进数据重新训练。演示 3(β=0.3\beta = 0.3,参考模型始终是 SFT;离线对照用同样多的数据,全部从 SFT 采样):

轮次偏好对总数在线:KL真实质量离线:KL真实质量
020003.641+1.5853.641+1.585
130004.751+2.1983.915+1.873
240004.813+2.3534.455+1.783
350004.978+2.3694.279+2.024

(目标 π*(真实 BT 奖励):KL 6.120,真实质量 +2.384。)在线 DPO 三轮之后几乎到达目标:上一轮学歪了(堆华丽)的地方,这一轮就会有数据告诉它”六个华丽并不好”。离线 DPO 增加同样多的数据,改进有限。

这和第 8 讲”迭代地更新奖励模型”是同一个思想:让数据跟上策略。代价是每一轮都要标注新数据,或者用一个评委模型代替人(“在线 AI 反馈”,Guo 等 2024;“自我奖励”,Yuan 等 2024)。很多现代模型的后训练是多轮迭代的。


6. 变体:IPO、KTO、SimPO、ORPO

DPO 之后出现了大量变体,大多是对 DPO 的某个假设”动手术”:

方法改了什么好处代价
IPO(Azar 等 2023)BT 似然 → 平方损失,目标间隔 1/(2τ)1/(2\tau)确定性偏好下不发散不再是一个概率模型的最大似然;τ\tau 要重新调
KTO(Ethayarajh 等 2024)不要配对,只要”好 / 不好”的标签,和参考点 z0z_0(KL 的估计)比;受前景理论启发“点赞 / 点踩”数据更容易得到丢掉了”谁和谁比”的信息
SimPO(Meng 等 2024)去掉参考模型;奖励 = 按长度平均的 log⁡π\log\pi;加间隔 γ\gamma省显存和计算;初衷是减少长度偏差没有参考模型拴住策略
ORPO(Hong 等 2024)在 SFT 损失上加一项”被选中回答的几率比被拒绝的高”;不用参考模型SFT 和偏好对齐一步完成靠 SFT 损失拴住策略,权衡要调

代码 04_variants.py 演示 1(同一批 2000 对;每格是”KL / 真实质量(平均长度,平均华丽个数)”):

损失5 遍20 遍60 遍
DPO(β = 1)0.78 / +1.48 (4.3, 1.1)1.24 / +1.77 (4.6, 1.2)1.41 / +1.79 (4.6, 1.3)
IPO(τ = 0.1)1.13 / +1.55 (4.5, 1.2)1.51 / +1.85 (4.7, 1.3)1.59 / +1.87 (4.7, 1.4)
KTO(β = 1)0.85 / +1.59 (4.2, 0.8)0.89 / +1.70 (4.3, 0.8)0.91 / +1.72 (4.2, 0.8)
SimPO(β = 2, γ = 0.5)2.72 / +1.36 (5.5, 2.0)4.54 / +1.76 (5.7, 2.7)6.34 / +1.68 (5.9, 3.3)

(SFT:KL 0 / +0.69(3.4, 0.5)。)

  • DPO、IPO、KTO 的结果相近。参数选得合适时,“哪种损失”远没有”什么数据”重要——它们学的都是同一批偏好,都学到了一些标注偏差。
  • KTO 只用了单个的”好 / 不好”标签,效果并不差。
  • SimPO 没有参考模型:KL 最大、随训练一直增长,回答更长、华丽更多。演示 2:训练 10、40、80、120 遍,DPO 的 KL 是 0.96、1.34、1.43、1.64,SimPO 是 2.80、6.16、6.25、6.39。DPO 的隐式奖励是相对于 SFT 的变化,参考模型像一根橡皮筋;SimPO 的”满意”可以在离 SFT 任意远的地方实现。它的长度归一化本意是减少长度偏差,但这里标注员本身偏爱长回答,没有橡皮筋,偏差反而被放大了。

【边界】每种方法只试了一组参数,结论只适用于这个玩具世界。真实世界的比较依赖于数据、模型和调参,不同论文的结论并不一致。


7. 社会选择的视角

偏好数据来自很多人,人和人的偏好不一样(第 1、4 讲)。标注数据里通常不记录”这条是谁标的”——这叫隐藏的情境。用 BT / DPO 拟合这样的数据,学到的”奖励”是在用什么规则把不同人的偏好合起来?

7.1 BT / DPO 隐式地用 Borda 计数聚合

代码 05_social_choice.py 演示 1:两类用户、四个候选回答。第一类(57%)的效用 [0.4, 0.4, 0.7, −1.2](偏好都不强烈,最不喜欢 D),第二类(43%)的效用 [−2.0, −1.3, −3.5, 5.2](非常喜欢 D)。

候选BT 分数Borda 得分平均效用
A−0.0041.496−0.632
B+0.1781.677−0.331
C−0.2301.272−1.106
D+0.0551.555+1.552

BT 排序 B > D > A > C,和 Borda 计数(每个候选赢其他候选的概率之和)的排序完全一样;“平均效用”(功利主义)的排序是 D > B > A > C。随机生成 2000 个这样的例子,BT 排序和 Borda 排序全部一致。

为什么? 这就是第 5 讲的矩匹配:最大似然处,每个候选的预期胜场 = 实际胜场。所有对都被等量比较时,“实际胜场”正是 Borda 得分,“预期胜场” ∑jσ(si−sj)\sum_j\sigma(s_i - s_j) 随 sis_i 单调递增——所以排序必然相同(练习 6)。Siththaranjan、Laidlaw、Hadfield-Menell(2024)把这叫做”隐藏情境下的偏好学习隐式地用 Borda 计数聚合”。DPO 的隐式奖励就是这个 BT 分数,所以用 DPO 训练混合人群的数据,你已经(不知不觉地)选择了 Borda 计数。

7.2 只看”多少人”,不看”有多强烈”

演示 2:60% 的用户稍微更喜欢 A(效用差 3),40% 的用户极其喜欢 B(效用差 30)。P(A≻B)=0.6 σ(3)+0.4 σ(−30)=0.572P(A \succ B) = 0.6\,\sigma(3) + 0.4\,\sigma(-30) = 0.572,BT / DPO 偏向 A;平均效用差 −10.2,功利主义偏向 B。

成对比较只记录”谁赢了”,σ 把再强烈的偏好也压到 1 以内。这和投票一样:一人一票,不论多在乎。哪种聚合是”对的”,是一个价值选择而不是技术问题(第 16、17 讲)。想体现强度,需要别的数据(打分、愿意付出的代价,第 2 讲),或者显式地对不同人群建模(第 4 讲的个性化、“分布式偏好学习”)。

7.3 偏好成环:Nash 偏好学习

混合人群的偏好可以不可传递(第 1 讲的孔多塞悖论)。演示 3:P(A≻B)=0.9P(A \succ B) = 0.9、P(B≻C)=0.6P(B \succ C) = 0.6、P(C≻A)=0.6P(C \succ A) = 0.6。

BT 必须给每个回答一个数,于是把环”摊平”:A +0.417、B −0.417、C 0。DPO 会把概率往 A 推。可是 A 对 C 只有 40% 的胜率。

策略选 A / B / C 的概率对 A对 B对 C最差情况
只选 A(BT 的冠军)1 / 0 / 00.5000.9000.4000.400
BT 的 softmax(β = 1)0.48 / 0.21 / 0.310.4480.6600.4730.448
BT 的 softmax(β = 0.2)0.88 / 0.01 / 0.110.5050.8400.4140.414
Nash 混合策略0.17 / 0.17 / 0.670.5000.5000.5000.500

把”偏好”看成一个两人零和博弈:两个策略各出一个回答,赢的得分。这个博弈的 Nash 均衡(社会选择里叫”最大彩票”,Fishburn 1984)是一个混合策略,对任何回答(和任何混合策略)的胜率都至少是一半——没有谁能在平均意义上打败它。三个候选成环时有封闭解:p∝(MBC,MCA,MAB)p \propto (M_{BC}, M_{CA}, M_{AB}),M=P−P⊤M = P - P^\top(练习 7)。

Nash 偏好学习(Munos 等 2024)、自博弈偏好优化(SPPO,Wu 等 2024;Swamy 等 2024)就是用这个思想训练语言模型:不假设 BT(不假设偏好能用一个分数表示),直接找”不会被任何别的策略打败”的策略。偏好可传递时,它退化成”选孔多塞赢家”;不可传递时,它给出一个有原则的混合。


8. 小结

  1. 推导:π∗∝πrefer/β\pi^* \propto \pi_{\text{ref}}e^{r/\beta} ⇒ r=βlog⁡(π∗/πref)+βlog⁡Zr = \beta\log(\pi^*/\pi_{\text{ref}}) + \beta\log Z ⇒ 代进 BT,ZZ 消掉 ⇒ DPO 损失 = 以隐式奖励 βlog⁡(πθ/πref)\beta\log(\pi_\theta/\pi_{\text{ref}}) 为分数的 BT 最大似然。
  2. 它学到什么:数据无限、模型灵活时,是数据背后的 BT 奖励对应的 π∗\pi^*——绕开了奖励模型的设定错误,没绕开标注偏差。
  3. 梯度:权重 σ(r^l−r^w)\sigma(\hat r_l - \hat r_w) = 判错的程度。去掉权重,目标没有上界。
  4. 离线 DPO 的问题:数据之外的推广(玩具里学到”华丽越多越好”);似然位移(被选中回答的概率也下降);KL 不受训练过程直接约束(训练多久要选);确定性偏好下最优解在无穷远处(IPO 修正)。
  5. 在线 / 迭代 DPO:让数据跟上策略,玩具里三轮就接近目标。和 RLHF 的界限因此模糊。
  6. 变体:IPO(有限目标)、KTO(不要配对)、SimPO(不要参考模型、长度归一化)、ORPO(和 SFT 合并)。合适的参数下差别不大;去掉参考模型就少了”橡皮筋”。
  7. 社会选择:隐藏情境下 BT / DPO 的排序 = Borda 计数(矩匹配);成对比较忽略强度;偏好成环时 BT 的冠军会被打败,Nash 混合策略不会。

9. 与测验、口试和项目的关系

  • 测验与口试可能会问:推导 DPO 损失(为什么 ZZ 消掉);隐式奖励是什么;参考模型的作用;DPO 梯度的权重含义;DPO 和 RLHF 各自的优缺点;什么是似然位移;为什么确定性偏好下 DPO 的 KL 停不下来、IPO 怎样修正;在线 DPO 为什么有用;SimPO 去掉参考模型的代价;BT 和 Borda 计数的关系;偏好成环时该怎么办。
  • 期末项目:如果用 DPO,报告”训练多久”和 β\beta 是怎样选的(留出数据 / 人工评估);检查被选中回答的概率是否在下降(似然位移);如果数据来自多类人群,想清楚 Borda 式的聚合是不是你想要的。

10. 练习

练习 1(推导)。从 π∗(y)=πref(y)er(y)/β/Z\pi^*(y) = \pi_{\text{ref}}(y)e^{r(y)/\beta}/Z 出发,推导 DPO 损失。指出 ZZ 在哪一步消掉,以及为什么 BT 模型对这一步至关重要。

参考答案

见第 2 节。r(y)=βlog⁡π∗(y)πref(y)+βlog⁡Zr(y) = \beta\log\frac{\pi^*(y)}{\pi_{\text{ref}}(y)} + \beta\log Z;BT 概率只依赖 r(yw)−r(yl)r(y_w) - r(y_l),βlog⁡Z\beta\log Z 抵消。关键是 BT(以及 Plackett–Luce)只依赖奖励的差值;如果偏好模型依赖奖励的绝对值(例如”回答好不好”的打分模型),ZZ 就不会消掉——这正是 KTO 需要一个参考点 z0z_0 的原因。

练习 2(Plackett–Luce 版本)。数据是 KK 个回答的完整排序 y1≻y2≻⋯≻yKy_1 \succ y_2 \succ \cdots \succ y_K。写出 DPO 的 Plackett–Luce 版本的损失,说明 ZZ 为什么也会消掉。

参考答案

PL 模型:P(排序)=∏k=1Kexp⁡(r(yk))∑j≥kexp⁡(r(yj))P(\text{排序}) = \prod_{k=1}^{K}\frac{\exp(r(y_k))}{\sum_{j\ge k}\exp(r(y_j))}。代入 r=r^+βlog⁡Zr = \hat r + \beta\log Z,每个因子的分子分母都乘以 elog⁡Ze^{\log Z}(即 ZZ),抵消。损失 =−∑k[r^(yk)−log⁡∑j≥ker^(yj)]= -\sum_k\big[\hat r(y_k) - \log\sum_{j\ge k}e^{\hat r(y_j)}\big],r^=βlog⁡(πθ/πref)\hat r = \beta\log(\pi_\theta/\pi_{\text{ref}})。

练习 3(梯度)。推导 DPO 损失对 θ\theta 的梯度,并解释权重。

参考答案

令 m=r^θ(yw)−r^θ(yl)m = \hat r_\theta(y_w) - \hat r_\theta(y_l)。ddm[−log⁡σ(m)]=−(1−σ(m))=−σ(−m)\frac{d}{dm}[-\log\sigma(m)] = -(1 - \sigma(m)) = -\sigma(-m)。∇m=β[∇log⁡πθ(yw)−∇log⁡πθ(yl)]\nabla m = \beta[\nabla\log\pi_\theta(y_w) - \nabla\log\pi_\theta(y_l)](πref\pi_{\text{ref}} 不依赖 θ\theta)。所以 ∇L=−β σ(−m)[∇log⁡πθ(yw)−∇log⁡πθ(yl)]\nabla\mathcal{L} = -\beta\,\sigma(-m)[\nabla\log\pi_\theta(y_w) - \nabla\log\pi_\theta(y_l)]。σ(−m)=σ(r^(yl)−r^(yw))\sigma(-m) = \sigma(\hat r(y_l) - \hat r(y_w)) 是隐式奖励判错的概率(第 5 讲练习 8 已经预告过)。

练习 4(确定性偏好)。只有一对回答 (yw,yl)(y_w, y_l),数据里 ywy_w 赢了 nn 次、yly_l 赢了 0 次。 (a) DPO 损失的最优解满足什么?KL 会怎样? (b) 如果 ywy_w 赢 nwn_w 次、yly_l 赢 nln_l 次(都大于 0)呢? (c) IPO 的最优解是什么?

参考答案

(a) 损失 =−nlog⁡σ(βΔ)= -n\log\sigma(\beta\Delta),Δ=hw−hl\Delta = h_w - h_l。它随 Δ\Delta 单调下降,最优在 Δ→∞\Delta \to \infty:π(yl)/πref(yl)→0\pi(y_l)/\pi_{\text{ref}}(y_l) \to 0 或 π(yw)/πref(yw)→∞\pi(y_w)/\pi_{\text{ref}}(y_w) \to \infty。KL 可以无限增大,β\beta 不起作用。 (b) 最大似然:σ(βΔ)=nw/(nw+nl)\sigma(\beta\Delta) = n_w/(n_w + n_l),Δ=1βlog⁡nwnl\Delta = \frac{1}{\beta}\log\frac{n_w}{n_l},有限。β\beta 越大,Δ\Delta 越小。 (c) IPO:(Δ−12τ)2(\Delta - \frac{1}{2\tau})^2 最小 ⇒ Δ=12τ\Delta = \frac{1}{2\tau},无论数据怎样都有限。

练习 5(似然位移)。只有三个回答 ywy_w、yly_l、yoy_o,πref=(0.4,0.4,0.2)\pi_{\text{ref}} = (0.4, 0.4, 0.2),数据只有一对 yw≻yly_w \succ y_l。构造一个 DPO 损失比 πref\pi_{\text{ref}} 更低、但 π(yw)<0.4\pi(y_w) < 0.4 的策略。这说明了什么?

参考答案

例如 π=(0.3,0.05,0.65)\pi = (0.3, 0.05, 0.65):hw=log⁡(0.3/0.4)≈−0.29h_w = \log(0.3/0.4) \approx -0.29,hl=log⁡(0.05/0.4)≈−2.08h_l = \log(0.05/0.4) \approx -2.08,hw−hl≈1.79>0h_w - h_l \approx 1.79 > 0,损失比 πref\pi_{\text{ref}}(差值为 0)更低;可是 π(yw)\pi(y_w) 从 0.4 降到了 0.3,多出来的概率给了数据里从没出现过的 yoy_o。DPO 只约束差值,不约束概率去哪里——这就是似然位移,也是”数据之外的推广”问题的最小例子。

练习 6(BT 与 Borda)。所有对 (i,j)(i, j) 都被等量比较,PijP_{ij} 是 ii 胜 jj 的总体比例。证明 BT 最大似然的分数 s^\hat s 和 Borda 得分 bi=∑j≠iPijb_i = \sum_{j\ne i}P_{ij} 的排序相同。

参考答案

最大似然的一阶条件(第 5 讲矩匹配):∑j≠iσ(s^i−s^j)=∑j≠iPij=bi\sum_{j\ne i}\sigma(\hat s_i - \hat s_j) = \sum_{j\ne i}P_{ij} = b_i。若 s^i>s^k\hat s_i > \hat s_k,比较两边:对 j≠i,kj \ne i, k,σ(s^i−s^j)>σ(s^k−s^j)\sigma(\hat s_i - \hat s_j) > \sigma(\hat s_k - \hat s_j);而 ii 对 kk 的那一项 σ(s^i−s^k)>0.5>σ(s^k−s^i)\sigma(\hat s_i - \hat s_k) > 0.5 > \sigma(\hat s_k - \hat s_i)。所以 bi>bkb_i > b_k。反之亦然,排序相同。注意前提”所有对等量比较”:比较设计不均衡时(例如某些对比得多),结论不一定成立。

练习 7(最大彩票)。三个候选,M=P−P⊤M = P - P^\top,MAB=aM_{AB} = a、MBC=bM_{BC} = b、MCA=cM_{CA} = c,都大于 0(成环)。 (a) 验证 p∝(b,c,a)p \propto (b, c, a) 满足 Mp=0Mp = 0。 (b) 说明这个 pp 对任何纯策略的期望净优势都是 0,因此是对称零和博弈的 Nash 均衡。 (c) 用代码 05 演示 3 的数字算出 pp。

参考答案

(a) M=(0a−c−a0bc−b0)M = \begin{pmatrix}0 & a & -c\\ -a & 0 & b\\ c & -b & 0\end{pmatrix},M(b,c,a)⊤=(ac−ca, −ab+ba, cb−bc)=0M(b, c, a)^\top = (ac - ca,\ -ab + ba,\ cb - bc) = 0。 (b) MM 反对称,p⊤M=−(Mp)⊤=0p^\top M = -(Mp)^\top = 0:pp 对每个纯策略的净优势都是 0,即胜率恰好一半;对手怎么混合也打不败它。 (c) a=0.9−0.1=0.8a = 0.9 - 0.1 = 0.8,b=0.6−0.4=0.2b = 0.6 - 0.4 = 0.2,c=0.6−0.4=0.2c = 0.6 - 0.4 = 0.2,p∝(0.2,0.2,0.8)=(1/6,1/6,2/3)p \propto (0.2, 0.2, 0.8) = (1/6, 1/6, 2/3)。

练习 8(讨论)。你要为一个客服助手做偏好对齐,有 5 万对离线的人工偏好,预算允许再标注 1 万对。你会选 RLHF、离线 DPO 还是在线 DPO?怎样安排那 1 万对标注?

参考答案(思路)

一个合理的方案:先用 5 万对做离线 DPO(或训练奖励模型)作为起点;然后分几轮,每轮用当前策略生成回答、标注 2000~3000 对(在线 DPO),重点放在策略新生成的、和离线数据分布不同的回答上(第 7 讲的主动选择可以帮助挑最有信息量的对)。每轮用留出的人工评估选 β\beta 和训练遍数,监控回答长度、被选中回答的概率(似然位移)。如果标注员来自不同人群(例如不同地区的客户),考虑按人群分开建模或至少分开评估(第 7 节)。如果团队有 RL 基础设施、需要一个可复用的奖励模型(例如做 Best-of-n、监控),RLHF 也是好的选择。


11. 延伸阅读

课程教材

  • Truong, Haupt, Koyejo. Machine Learning from Human Preferences. 第 1 章 1.2 节、第 2 章 2.9.3 节、第 5 章 5.3 节。

DPO 与它的分析

  • Rafailov, Sharma, Mitchell, Ermon, Manning, Finn. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. NeurIPS 2023.
  • Azar et al. A General Theoretical Paradigm to Understand Learning from Human Preferences. AISTATS 2024.(ΨPO 与 IPO)
  • Xu et al. Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study. ICML 2024.
  • Tajwar et al. Preference Fine-Tuning of LLMs Should Leverage Suboptimal, On-Policy Data. ICML 2024.
  • Razin et al. Unintentional Unalignment: Likelihood Displacement in Direct Preference Optimization. 2024.
  • Pal et al. Smaug: Fixing Failure Modes of Preference Optimisation with DPO-Positive. 2024.

变体

  • Ethayarajh, Xu, Muennighoff, Jurafsky, Kiela. KTO: Model Alignment as Prospect Theoretic Optimization. 2024.
  • Meng, Xia, Chen. SimPO: Simple Preference Optimization with a Reference-Free Reward. NeurIPS 2024.
  • Hong, Lee, Thorne. ORPO: Monolithic Preference Optimization without Reference Model. 2024.

在线 / 迭代

  • Guo et al. Direct Language Model Alignment from Online AI Feedback. 2024.
  • Yuan et al. Self-Rewarding Language Models. 2024.

社会选择的视角

  • Siththaranjan, Laidlaw, Hadfield-Menell. Distributional Preference Learning: Understanding and Accounting for Hidden Context in RLHF. ICLR 2024.
  • Munos et al. Nash Learning from Human Feedback. ICML 2024.
  • Wu et al. Self-Play Preference Optimization for Language Model Alignment. 2024.
  • Swamy et al. A Minimaximalist Approach to Reinforcement Learning from Human Feedback. ICML 2024.
  • Fishburn. Probabilistic Social Choice Based on Simple Voting Comparisons. Review of Economic Studies 1984.

同目录其他课程

  • CS336 第 15 讲、CS224N 第 10 讲从训练的角度讲了 DPO;CS234 第 9 讲讲了 RLHF 与 DPO 的推导。

12. 下一讲预告

第二单元(第 5~9 讲)回答了”怎样从偏好里学习、怎样用学到的偏好训练模型”。一路上反复出现一个主题:数据决定了一切——奖励模型在数据之外不可靠(第 8 讲),DPO 在数据之外乱推广(本讲),在线收集新数据能解决很多问题(本讲第 5.3 节)。第 7 讲讲了”一般情况下该问什么问题”。

第三单元从第 10 讲开始,讲行动:学偏好是为了做决定,而收集偏好本身就是一种决定。

第 10 讲讲面向大语言模型的主动偏好获取与案例研究:

  • 奖励模型的不确定性从哪里来:集成、拉普拉斯近似、最后一层的贝叶斯(第 6 讲);信息增益。
  • 给大语言模型收集偏好时,该拿哪些提示词、哪些回答对去问人?主动 DPO 与在线 / 迭代的偏好收集。
  • 机器人的轨迹偏好:半空间与”体积移除”。
  • 案例:InstructGPT、Llama 2、Chatbot Arena 的数据收集方式及其取舍。
← 返回课程目录