对应: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 学完本讲,你应该能够
- 从 KL 约束目标的解析解出发,三步推导出 DPO 损失;解释”隐式奖励”、参考模型的作用,以及为什么配分函数 会消掉。
- 说出 DPO 在数据无限、模型足够灵活时学到的是什么(数据背后的 BT 奖励对应的 ),以及它绕开了什么、没绕开什么。
- 推导 DPO 的梯度,解释权重 的含义。
- 说出离线 DPO 的几个问题:在数据之外的推广、似然位移、KL 不受训练过程直接约束、确定性偏好下的发散;以及在线 / 迭代 DPO 为什么能缓解。
- 说出 IPO、KTO、SimPO、ORPO 各改了 DPO 的哪个假设、带来什么代价。
- 解释”隐藏情境下的 BT / DPO 用 Borda 计数聚合”,以及成对比较为什么忽略偏好强度。
- 解释偏好不可传递时 BT 的问题,以及 Nash 偏好学习(最大彩票)的思路。
0.2 先修知识
| 知识点 | 用在哪里 | 最低要求 |
|---|---|---|
| 第 8 讲 | 全部 | KL 约束目标与解析解 、玩具语言模型、奖励过度优化 |
| 第 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 的目标有一个解析解 ,RL 只是到达它的方法。能不能绕开奖励模型和 RL,直接从偏好数据得到 ?
Rafailov 等(2023)的回答是可以,方法叫直接偏好优化(DPO)。它把 RLHF 的后两个阶段变成了一个分类损失——和训练奖励模型的损失几乎一样简单。DPO 很快成为开源模型后训练的标准工具(Zephyr、Tulu 2、Llama 3 等都用了它或它的变体)。
2. 推导:奖励可以用策略表示
第一步(第 8 讲第 4.2 节):KL 约束目标 的解是
第二步:反解出奖励。两边取对数、整理:
给定 和 ,奖励和最优策略一一对应(奖励只确定到一个只依赖于提示词 的常数)。 是对所有可能回答的求和,算不出来——但它马上就会消掉。
第三步:代进 BT 似然。偏好模型 只依赖奖励的差值, 正好抵消:
现在把 换成一个带参数的策略 ,在偏好数据上做最大似然(第 5 讲),就得到 DPO 损失:
记 ,叫隐式奖励。DPO 就是”以 为分数的 BT 最大似然”——和第 6 讲训练奖励模型的损失一模一样,只是分数不再由一个单独的打分头给出,而是由策略本身给出。论文的副标题说得很妙:“你的语言模型其实是一个奖励模型”。
代码 01_dpo_derivation.py 演示 1 在玩具世界里数值验证了第二步:对第 8 讲的线性奖励模型, 在全部 19531 个回答上都等于同一个常数( 时 −2.4575678989,就是 ),用 和用 算出的 BT 概率完全相同。
参考模型的作用。隐式奖励是”相对于 SFT 的变化”: 比 更喜欢某个回答,它的隐式奖励就是正的。参考模型充当”零点”,并把策略拴在 SFT 附近(第 6.3 节会看到去掉它的后果)。
多于两个回答。如果数据是 个回答的排序,把 BT 换成 Plackett–Luce(第 2、3 讲)即可, 同样会消掉(练习 2)。
3. DPO 学的是什么;梯度的直觉
3.1 它绕开了奖励模型,没绕开数据
DPO 在数据无限、策略足够灵活时,隐式奖励会等于数据背后的 BT 奖励,策略会等于那个奖励对应的 。在玩具世界里,众包标注员按 选择,所以数据背后的 BT 奖励是 标注员效用(含偏爱华丽、偏爱长回答的偏差)。
代码 01 演示 2(,梯度步数固定为约 2500 步):
| 偏好对数 | KL(π_DPO ‖ π*真实) | KL(π_DPO ‖ π*线性) | 真实质量 |
|---|---|---|---|
| 500 | 1.022 | 1.806 | +2.164 |
| 2000 | 0.131 | 0.676 | +2.008 |
| 8000 | 0.069 | 0.575 | +1.944 |
| 32000 | 0.065 | 0.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):
权重是”当前的隐式奖励认为被拒绝的回答更好”的概率:判错得越厉害,更新越大;已经判对的对,权重趋于 0。这和第 5 讲 BT 的梯度”实际 − 预期”是同一个结构。
代码 01 演示 3:训练前所有对的权重都是 0.5;训练 1、5、20、40 遍后,平均权重降到 0.317、0.257、0.217、0.212——大部分对已经判对了,剩下的梯度主要来自仍然判错的对(其中不少是标注噪声)。
如果去掉权重(直接最大化 ),目标就没有上界了:把被拒绝回答的概率压向 0,目标就能无限变大。它没有确定的终点,离 SFT 的 KL(训练 5 遍后 3.91)远大于 DPO(0.78),而且和 无关。在这个小玩具里它的真实质量没有崩溃(被压下去的主要是平均更差的”被拒绝”回答),但 DPO 论文报告,在真实的语言模型上这种朴素做法会让模型退化。σ 权重来自 BT 似然:DPO 是一个有上界的概率模型的最大似然,所以它有明确的目标 。
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 |
| KL | 0.121 | 0.167 | 0.219 | 0.252 | |
| 1.0 | 真实质量 | +1.338 | +1.910 | +1.769 | +2.043 |
| KL | 0.924 | 1.156 | 1.245 | 1.508 | |
| 0.3 | 真实质量 | +0.833 | +2.395 | +1.585 | +2.384 |
| KL | 4.309 | 5.426 | 3.641 | 6.120 | |
| 0.1 | 真实质量 | +0.107 | +2.400 | +1.339 | +2.400 |
| KL | 6.530 | 7.558 | 4.665 | 7.583 |
- 较大时,DPO 明显好于”RLHF 线性”,和”RLHF 灵活”相近:隐式奖励足够灵活。
- 较小时,“RLHF 灵活”继续变好(+2.4),DPO 却停在 +1.3~+1.6,KL 也远没到目标。有限的离线数据让 DPO 到不了它”应该”到达的地方。
4.2 DPO 把概率放到了哪里
演示 2():训练数据里出现过的不同回答只有 1485 个(全部的 7.6%)。
| 策略 | 在”出现过的”上的概率 | 出现过部分的真实质量 | 没出现过部分的真实质量 | 总的真实质量 |
|---|---|---|---|---|
| SFT | 0.751 | +0.759 | +0.464 | +0.685 |
| DPO | 0.430 | +1.745 | +1.032 | +1.339 |
| RLHF 灵活 | 0.032 | +2.401 | +2.400 | +2.400 |
两种方法都把大部分概率放在了”没出现过”的回答上——这本身不是问题,最好的回答不一定恰好被采样到过。问题在于 DPO 放到那里的是什么:概率最高的”没出现过”的回答是”华丽 华丽 华丽 华丽 华丽 华丽”(真实质量 −0.6),后面几个也堆满了华丽。
为什么? DPO 只在”被选中 vs 被拒绝”的那些对上约束了隐式奖励的差值。数据里华丽多的回答常常被选中(标注偏差),策略网络把”华丽越多越好”推广到了数据之外,没有任何数据告诉它”六个华丽”不好。 越小,同样的偏好差需要越大的对数概率比,策略被推得越远。
RLHF 的奖励模型也会外推(第 8 讲),但它是一个单独的、在所有回答上都有定义的函数,RL 阶段在策略新生成的回答上用它打分;DPO 的隐式奖励就是策略网络本身,在数据之外怎样推广取决于策略网络的结构。Xu 等(2024)在真实的大模型上做了系统比较:DPO 可能给分布外的回答分配很高的概率,仔细调过的 PPO 在多个任务上更好。Tajwar 等(2024)的结论类似:用策略自己生成的(on-policy)数据很重要。
4.3 似然位移
演示 3():训练数据上被选中回答的平均 ,训练前是 −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)。
只出现在损失里,决定的是”目标” 离 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.00 | 0.085 | +1.061 | 0.63 | 0.099 | +1.118 |
| 1.00 | 1.245 | +1.769 | 1.19 | 1.508 | +2.043 |
| 0.50 | 2.524 | +1.857 | 1.80 | 3.796 | +2.328 |
| 0.30 | 3.641 | +1.585 | 2.47 | 6.120 | +2.384 |
| 0.10 | 4.665 | +1.339 | 2.92 | 7.583 | +2.400 |
DPO 的真实质量在 1 附近最好,更小反而下降——形状像第 8 讲的过度优化曲线,原因却不同:目标本身在 很小时很好(+2.4),是有限的离线数据让 DPO 到不了那里,还在数据之外学到了”华丽越多越好”。DPO 原论文的实验里 取 0.10.5;和 RLHF 的 KL 系数一样,没有通用的最佳值。
5.2 确定性偏好:DPO 的 KL 停不下来
Azar 等(2023)指出了 DPO 的一个理论问题。如果数据里 总是赢 (偏好是确定性的),BT 似然要求 ,即对数概率比的差 ——无论 多大,最优解都在无穷远处, 的正则化作用消失了。而真实的偏好数据集里,大部分回答对只被标注过一次:从数据的角度看,每一对都是”确定性”的。
他们提出的 IPO 把 BT 似然换成平方损失,让对数概率比的差等于一个有限的目标:
演示 2(每格是”KL / 真实质量”):
| 5 遍 | 20 遍 | 60 遍 | 120 遍 | |
|---|---|---|---|---|
| DPO β=1,带噪声 | 0.78 / +1.48 | 1.24 / +1.77 | 1.41 / +1.79 | 1.64 / +1.84 |
| DPO β=1,确定性 | 1.31 / +1.65 | 2.82 / +2.03 | 5.14 / +2.15 | 5.86 / +2.27 |
| IPO τ=0.1,确定性 | 1.34 / +1.64 | 1.77 / +1.93 | 1.75 / +2.00 | 1.67 / +2.00 |
确定性偏好下 DPO 的 KL 一直在涨,IPO 很快稳定下来。注意两点:IPO 的 和 DPO 的 不是同一个尺度( 时目标间隔只有 0.5,几乎不动);这里的确定性偏好去掉了标注噪声,所以真实质量反而更好——“KL 停不下来”本身不一定有害,有害的是它不再受 控制。
5.3 在线 / 迭代 DPO
第 4.2 节的问题根源是”数据跟不上策略”。在线(迭代)DPO:每一轮用当前策略生成新回答、收集新偏好、加进数据重新训练。演示 3(,参考模型始终是 SFT;离线对照用同样多的数据,全部从 SFT 采样):
| 轮次 | 偏好对总数 | 在线:KL | 真实质量 | 离线:KL | 真实质量 |
|---|---|---|---|---|---|
| 0 | 2000 | 3.641 | +1.585 | 3.641 | +1.585 |
| 1 | 3000 | 4.751 | +2.198 | 3.915 | +1.873 |
| 2 | 4000 | 4.813 | +2.353 | 4.455 | +1.783 |
| 3 | 5000 | 4.978 | +2.369 | 4.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 似然 → 平方损失,目标间隔 | 确定性偏好下不发散 | 不再是一个概率模型的最大似然; 要重新调 |
| KTO(Ethayarajh 等 2024) | 不要配对,只要”好 / 不好”的标签,和参考点 (KL 的估计)比;受前景理论启发 | “点赞 / 点踩”数据更容易得到 | 丢掉了”谁和谁比”的信息 |
| SimPO(Meng 等 2024) | 去掉参考模型;奖励 = 按长度平均的 ;加间隔 | 省显存和计算;初衷是减少长度偏差 | 没有参考模型拴住策略 |
| 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.004 | 1.496 | −0.632 |
| B | +0.178 | 1.677 | −0.331 |
| C | −0.230 | 1.272 | −1.106 |
| D | +0.055 | 1.555 | +1.552 |
BT 排序 B > D > A > C,和 Borda 计数(每个候选赢其他候选的概率之和)的排序完全一样;“平均效用”(功利主义)的排序是 D > B > A > C。随机生成 2000 个这样的例子,BT 排序和 Borda 排序全部一致。
为什么? 这就是第 5 讲的矩匹配:最大似然处,每个候选的预期胜场 = 实际胜场。所有对都被等量比较时,“实际胜场”正是 Borda 得分,“预期胜场” 随 单调递增——所以排序必然相同(练习 6)。Siththaranjan、Laidlaw、Hadfield-Menell(2024)把这叫做”隐藏情境下的偏好学习隐式地用 Borda 计数聚合”。DPO 的隐式奖励就是这个 BT 分数,所以用 DPO 训练混合人群的数据,你已经(不知不觉地)选择了 Borda 计数。
7.2 只看”多少人”,不看”有多强烈”
演示 2:60% 的用户稍微更喜欢 A(效用差 3),40% 的用户极其喜欢 B(效用差 30)。,BT / DPO 偏向 A;平均效用差 −10.2,功利主义偏向 B。
成对比较只记录”谁赢了”,σ 把再强烈的偏好也压到 1 以内。这和投票一样:一人一票,不论多在乎。哪种聚合是”对的”,是一个价值选择而不是技术问题(第 16、17 讲)。想体现强度,需要别的数据(打分、愿意付出的代价,第 2 讲),或者显式地对不同人群建模(第 4 讲的个性化、“分布式偏好学习”)。
7.3 偏好成环:Nash 偏好学习
混合人群的偏好可以不可传递(第 1 讲的孔多塞悖论)。演示 3:、、。
BT 必须给每个回答一个数,于是把环”摊平”:A +0.417、B −0.417、C 0。DPO 会把概率往 A 推。可是 A 对 C 只有 40% 的胜率。
| 策略 | 选 A / B / C 的概率 | 对 A | 对 B | 对 C | 最差情况 |
|---|---|---|---|---|---|
| 只选 A(BT 的冠军) | 1 / 0 / 0 | 0.500 | 0.900 | 0.400 | 0.400 |
| BT 的 softmax(β = 1) | 0.48 / 0.21 / 0.31 | 0.448 | 0.660 | 0.473 | 0.448 |
| BT 的 softmax(β = 0.2) | 0.88 / 0.01 / 0.11 | 0.505 | 0.840 | 0.414 | 0.414 |
| Nash 混合策略 | 0.17 / 0.17 / 0.67 | 0.500 | 0.500 | 0.500 | 0.500 |
把”偏好”看成一个两人零和博弈:两个策略各出一个回答,赢的得分。这个博弈的 Nash 均衡(社会选择里叫”最大彩票”,Fishburn 1984)是一个混合策略,对任何回答(和任何混合策略)的胜率都至少是一半——没有谁能在平均意义上打败它。三个候选成环时有封闭解:,(练习 7)。
Nash 偏好学习(Munos 等 2024)、自博弈偏好优化(SPPO,Wu 等 2024;Swamy 等 2024)就是用这个思想训练语言模型:不假设 BT(不假设偏好能用一个分数表示),直接找”不会被任何别的策略打败”的策略。偏好可传递时,它退化成”选孔多塞赢家”;不可传递时,它给出一个有原则的混合。
8. 小结
- 推导: ⇒ ⇒ 代进 BT, 消掉 ⇒ DPO 损失 = 以隐式奖励 为分数的 BT 最大似然。
- 它学到什么:数据无限、模型灵活时,是数据背后的 BT 奖励对应的 ——绕开了奖励模型的设定错误,没绕开标注偏差。
- 梯度:权重 = 判错的程度。去掉权重,目标没有上界。
- 离线 DPO 的问题:数据之外的推广(玩具里学到”华丽越多越好”);似然位移(被选中回答的概率也下降);KL 不受训练过程直接约束(训练多久要选);确定性偏好下最优解在无穷远处(IPO 修正)。
- 在线 / 迭代 DPO:让数据跟上策略,玩具里三轮就接近目标。和 RLHF 的界限因此模糊。
- 变体:IPO(有限目标)、KTO(不要配对)、SimPO(不要参考模型、长度归一化)、ORPO(和 SFT 合并)。合适的参数下差别不大;去掉参考模型就少了”橡皮筋”。
- 社会选择:隐藏情境下 BT / DPO 的排序 = Borda 计数(矩匹配);成对比较忽略强度;偏好成环时 BT 的冠军会被打败,Nash 混合策略不会。
9. 与测验、口试和项目的关系
- 测验与口试可能会问:推导 DPO 损失(为什么 消掉);隐式奖励是什么;参考模型的作用;DPO 梯度的权重含义;DPO 和 RLHF 各自的优缺点;什么是似然位移;为什么确定性偏好下 DPO 的 KL 停不下来、IPO 怎样修正;在线 DPO 为什么有用;SimPO 去掉参考模型的代价;BT 和 Borda 计数的关系;偏好成环时该怎么办。
- 期末项目:如果用 DPO,报告”训练多久”和 是怎样选的(留出数据 / 人工评估);检查被选中回答的概率是否在下降(似然位移);如果数据来自多类人群,想清楚 Borda 式的聚合是不是你想要的。
10. 练习
练习 1(推导)。从 出发,推导 DPO 损失。指出 在哪一步消掉,以及为什么 BT 模型对这一步至关重要。
参考答案
见第 2 节。;BT 概率只依赖 , 抵消。关键是 BT(以及 Plackett–Luce)只依赖奖励的差值;如果偏好模型依赖奖励的绝对值(例如”回答好不好”的打分模型), 就不会消掉——这正是 KTO 需要一个参考点 的原因。
练习 2(Plackett–Luce 版本)。数据是 个回答的完整排序 。写出 DPO 的 Plackett–Luce 版本的损失,说明 为什么也会消掉。
参考答案
PL 模型:。代入 ,每个因子的分子分母都乘以 (即 ),抵消。损失 ,。
练习 3(梯度)。推导 DPO 损失对 的梯度,并解释权重。
参考答案
令 。。( 不依赖 )。所以 。 是隐式奖励判错的概率(第 5 讲练习 8 已经预告过)。
练习 4(确定性偏好)。只有一对回答 ,数据里 赢了 次、 赢了 0 次。 (a) DPO 损失的最优解满足什么?KL 会怎样? (b) 如果 赢 次、 赢 次(都大于 0)呢? (c) IPO 的最优解是什么?
参考答案
(a) 损失 ,。它随 单调下降,最优在 : 或 。KL 可以无限增大, 不起作用。 (b) 最大似然:,,有限。 越大, 越小。 (c) IPO: 最小 ⇒ ,无论数据怎样都有限。
练习 5(似然位移)。只有三个回答 、、,,数据只有一对 。构造一个 DPO 损失比 更低、但 的策略。这说明了什么?
参考答案
例如 :,,,损失比 (差值为 0)更低;可是 从 0.4 降到了 0.3,多出来的概率给了数据里从没出现过的 。DPO 只约束差值,不约束概率去哪里——这就是似然位移,也是”数据之外的推广”问题的最小例子。
练习 6(BT 与 Borda)。所有对 都被等量比较, 是 胜 的总体比例。证明 BT 最大似然的分数 和 Borda 得分 的排序相同。
参考答案
最大似然的一阶条件(第 5 讲矩匹配):。若 ,比较两边:对 ,;而 对 的那一项 。所以 。反之亦然,排序相同。注意前提”所有对等量比较”:比较设计不均衡时(例如某些对比得多),结论不一定成立。
练习 7(最大彩票)。三个候选,,、、,都大于 0(成环)。 (a) 验证 满足 。 (b) 说明这个 对任何纯策略的期望净优势都是 0,因此是对称零和博弈的 Nash 均衡。 (c) 用代码 05 演示 3 的数字算出 。
参考答案
(a) ,。 (b) 反对称,: 对每个纯策略的净优势都是 0,即胜率恰好一半;对手怎么混合也打不败它。 (c) ,,,。
练习 8(讨论)。你要为一个客服助手做偏好对齐,有 5 万对离线的人工偏好,预算允许再标注 1 万对。你会选 RLHF、离线 DPO 还是在线 DPO?怎样安排那 1 万对标注?
参考答案(思路)
一个合理的方案:先用 5 万对做离线 DPO(或训练奖励模型)作为起点;然后分几轮,每轮用当前策略生成回答、标注 2000~3000 对(在线 DPO),重点放在策略新生成的、和离线数据分布不同的回答上(第 7 讲的主动选择可以帮助挑最有信息量的对)。每轮用留出的人工评估选 和训练遍数,监控回答长度、被选中回答的概率(似然位移)。如果标注员来自不同人群(例如不同地区的客户),考虑按人群分开建模或至少分开评估(第 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 的数据收集方式及其取舍。