能不能不训奖励模型,直接用偏好数据训策略?
本课一问:上一课的 RLHF 要先训奖励模型,再让策略在线采样、用 PPO 追分,显存里 4 个模型。偏好数据就在手里——能不能跳过奖励模型和采样,直接拿「A 比 C 好」去训策略?
这一课先不碰:去掉 value 模型的在线方法(第 4 课);奖励从哪来(第 5 课)。这一课的数据和上一课完全一样:教学世界的 6 个回答、同样的偏好对。
从已有出发
还是那个提问、那 6 个回答。上一课走的路是:偏好对 → 训奖励模型 → PPO 在线采样追分(4 个模型)。这一课走一条短得多的路,先看它在演进里的位置:
- 解决了闭式解把 RLHF 折成分类损失,第一步 loss 恰为 ln 2 = 0.6931;不采样、不训 RM。卡在只看成对之差:教学世界里 A 在 3 对偏好里是被选中的一方,概率却从 0.30 掉到0.002(第 3 课浏览器实算)。
先自己设计:为什么不能直接把偏好当 SFT 数据?
最朴素的想法:偏好对里 chosen 是好的,那就对 chosen 做 SFT、对 rejected 做「反向 SFT」(压低它的概率)。问题是这样做没有任何东西拴住模型:把 rejected 的概率一路压向 0,是一个没有下限的目标——log 概率可以降到负无穷,模型会把概率挤到任何没见过的回答上。RLHF 里拴住模型的是 KL 约束;直接拿偏好当标签,等于把 KL 扔了。我们想要的是:保留 RLHF 的目标(奖励高、离参考模型不远),只是不训奖励模型、不在线采样。
- ① 朴素方案
- ② 它在哪失败
- ③ 改进方案
教学世界:候选回答、初始概率、偏好对是手写的教学数据(不是任何模型的输出或真实标注);token 数来自 Qwen3.8 真 tokenizer;其余数字由浏览器按真算法现算。
上一课的做法:先把 9 对偏好拟合成奖励模型,下一步还要拿它做 PPO。
教学世界:候选回答、初始概率、偏好对是手写的教学数据(不是任何模型的输出或真实标注);token 数来自 Qwen3.8 真 tokenizer;其余数字由浏览器按真算法现算。
改进:KL 约束下的最优策略有闭式解
RLHF 的目标是:在奖励 r 高的同时,不要离参考模型太远:
maxπ Ey∼π[r(y)] − β·KL(π ‖ πref)
这个目标的最优解可以直接写出来:π*(y) = πref(y)·exp(r(y)/β) / Z,Z 是让概率和为 1 的归一化常数 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条带 KL 正则的奖励最大化等价于最小化 KL(π ‖ π*),π* 就是 Gibbs 分布。推导只用到 KL 的定义。 出处DPO 原文 §4 式 (4)(本地 PDF) ↗ 。两边取对数、移项,奖励就能用策略自己表示:
r(y) = β·log(π*(y)/πref(y)) + β·log Z
关键在最后那一项:β·log Z 对同一个问题下的所有回答都是同一个常数。Bradley-Terry 只看分差——两个回答的奖励一相减,常数就约掉了。于是「先训 RM、再做 RL」可以换成「直接训策略,让它的对数比之差去拟合人类偏好」。下面用第 2 课训出的奖励模型实际算一次闭式解:
教学世界:候选回答、初始概率、偏好对是手写的教学数据(不是任何模型的输出或真实标注);token 数来自 Qwen3.8 真 tokenizer;其余数字由浏览器按真算法现算。
试三件事:① 看表格最后一列「差 = −β·log Z」:6 个回答完全相同——这就是 DPO 能约掉 Z 的原因;② 把 β 拖到最小(0.01),π* 几乎全压在奖励最高的 E 上;拖到最大(10),π* 几乎贴着 π_ref——β 是「奖励」和「别离参考模型太远」之间的汇率;③ 把奖励换成「严格验证器」:A 和 B 的奖励都是 1,π* 按 π_ref 的比例 3 : 1 分给它们,其余回答被压下去。
把「对数比之差」放进 Bradley-Terry,就是 DPO 的损失:
第一步的 loss 恰好是 ln 2。 训练开始时 πθ = πref,两个对数比都是 0,括号里是 0,σ(0) = 0.5,−ln 0.5 = ln 2 = 0.6931。这个数不依赖数据、不依赖模型大小——你自己跑 DPO 时,第一步的 loss 不是 0.6931,说明参考模型没加载对。回到上面「改进方案」那一侧的 DPO 组件,第 0 步列式里的每一项都是这样现算出来的。之后 loss 怎么降,只取决于 β·margin:
| β × (对数比之差) | 0 | 0.5 | 1 | 2 | 5 |
|---|---|---|---|---|---|
| −log σ(·) | 0.6931 | 0.4741 | 0.3133 | 0.1269 | 0.0067 |
新的失败:只看成对之差
DPO 只要求每一对的对数比之差变大,不管单个回答的绝对概率。回到 DPO 组件(β = 0.1,把步数拖到 200):A 在 8 对偏好里有 3 对是被选中的一方(A ≻ C、A ≻ D、A ≻ F),只在「B ≻ A」这一对里被拒。第 10 步 A 的概率从 0.30 升到 0.4287,之后一路下降,第 200 步只剩 0.0021,隐式奖励变成负的;B 独占了几乎全部概率。
更根本的问题是,这组偏好是确定的(每一对都一边倒):loss 要降到 0,就得把每一对的差推到无穷,策略最后塌到一个回答上,和 β 取多大无关——这正是 IPO(Azar et al. 2023)指出的问题 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条在确定性偏好下,DPO 的最优解是确定性策略,KL 正则强度 β 不起作用;IPO 把目标换成有界的平方损失来避免。 出处IPO(Azar et al. 2023)§4.2 ↗需联网 。第二个问题是离线:DPO 只能在给定的偏好对上学,数据里没有的回答,它只能被动地跟着归一化变;策略学歪了也没有新数据来纠正。
常见误解一:「DPO 会提高被选中回答的概率。」 它只保证 chosen 与 rejected 的相对差拉大。A 当了 3 次 chosen、只当了 1 次 rejected,绝对概率照样可以一路掉到 0.002。实际训练里「chosen 的对数概率也在下降」是常见现象,要盯着看。
常见误解二:「DPO 不需要参考模型。」 πref 仍然在对数比里,它就是 KL 锚点;省掉的是奖励模型、value 模型和在线采样。
常见误解三:「DPO 是 Anthropic 的方法。」 DPO 出自 Stanford(Rafailov、Sharma、Mitchell、Ermon、Manning、Finn,NeurIPS 2023)。
现代做法:DPO 用在哪,不用在哪
DPO 因为简单、稳定,成了开源社区偏好对齐的默认选择,变体很多(IPO、KTO、ORPO、SimPO)。但它的位置越来越明确:
- Llama 3 的后训练是拒绝采样 + SFT + DPO。
- Tülu 3(Ai2,2024-11)的偏好阶段用长度归一化的 DPO;他们也拿同样的数据试了 PPO,平均分相近、略低,而 PPO 一次要两个节点跑约 28 小时,所以「决定主要把 PPO 留给 RLVR」 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条作者说明这是未调参设置下的对比,更多算力或调参可能让 PPO 更好。 出处Tülu 3 §5.4.1 ↗需联网 ——RLVR 是第 5 课的主角。
- 在线方法在推理这类任务上更强:Ahmadian et al. 2024 发现 REINFORCE 式的在线方法优于 PPO 和 DPO 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条在他们的模型与任务上;这也是下一课组内基线的思想来源之一。 出处Ahmadian et al. 2024(RLOO) ↗需联网 。2025–2026 年的推理模型基本都走在线 RL(第 4、5 课)。
证据三问
| 问 | 本课的回答 |
|---|---|
| ① 它解决什么问题? | RLHF 两阶段、4 个模型、在线采样、超参敏感 |
| ② 数学上为什么可能有效? | KL 约束下的最优策略有闭式解,奖励可以用对数比表示,β·log Z 在成对差里约掉 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条等价性在「偏好服从 Bradley-Terry」「最优策略可达」的前提下成立。 出处DPO §4(本地 PDF) ↗ |
| ③ 实验上为什么选了它? | 原文在情感控制、摘要、单轮对话上与 PPO 相当或更好;开源社区大量采用;但推理任务上在线 RL 更强 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条DPO 原文、Tülu 3、Ahmadian 2024 的结论都只在各自的设置下成立,方向并不完全一致。 出处待补 |
一句话
DPO 把「先训奖励、再做 RL」折成一个分类损失:只看好回答和差回答的对数比之差;代价是只能在给定的偏好对上学。
先停在这里:记住「第一步 loss = ln 2;只看对数比之差;π_ref 还在;离线」。
再深一层:在闭式解组件里对比 RM 与严格验证器两种奖励下的 π*,再去读 IPO 的 §4.2。
下一个缺口
DPO 学不到偏好数据之外的东西;想让模型自己探索,还得回到在线采样。可在线的 PPO 又要一个和策略一样大的 value 模型(Qwen3.8 规模下 444.5 GB),而且只有最后一个 token 有奖励,逐 token 的价值很难估。value model 能不能也省掉? → 第 4 课:GRPO
你可能会问
- 「β 取多少?」 DPO 论文与开源实践常用 0.1 附近。β 小 → 允许离参考模型更远(学得多,也更容易跑偏);β 大 → 贴着参考模型。第 2 课 BradleyTerryDemo 的下半部分就是 β 的作用。
- 「DPO 的偏好数据从哪来?」 人工标注,或者用奖励模型 / 更强的模型给当前策略的采样排序(on-policy 偏好数据)。后者让 DPO 也带上一点「在线」的味道,是很多开源配方的做法。
- 「KTO、SimPO 又是什么?」 KTO 不要成对数据,只要「好 / 不好」的单条标签;SimPO 去掉参考模型、用长度归一化的对数概率当隐式奖励。它们都在改 DPO 损失的某一项,思路相同。