从0训练LLM · 现代大模型体系 阅读 + 实验 ≈ 35 分钟 页内实验 ×3
C12 后训练:从续写到听话、推理、做事 第 3 课

能不能不训奖励模型,直接用偏好数据训策略?

DPO:不训奖励模型
KL 约束下的最优策略有闭式解:π* ∝ π_ref·exp(r/β)。反过来,奖励就能用策略自己表示成 β·log(π/π_ref) 加一个常数,常数在成对比较里约掉——RLHF 折成一个分类损失。第一步的 loss 恰为 ln 2。代价:只看成对之差、离线没有探索。
❓

本课一问:上一课的 RLHF 要先训奖励模型,再让策略在线采样、用 PPO 追分,显存里 4 个模型。偏好数据就在手里——能不能跳过奖励模型和采样,直接拿「A 比 C 好」去训策略?

这一课先不碰:去掉 value 模型的在线方法(第 4 课);奖励从哪来(第 5 课)。这一课的数据和上一课完全一样:教学世界的 6 个回答、同样的偏好对。

从已有出发

从已有出发 · 后训练流水线 点已学的站看数据、损失与模型数

还是那个提问、那 6 个回答。上一课走的路是:偏好对 → 训奖励模型 → PPO 在线采样追分(4 个模型)。这一课走一条短得多的路,先看它在演进里的位置:

演进图 · 每一代都是被上一代的失败逼出来的本课高亮
  1. 第一代 SFT:用示范教格式 FLAN 2021 · LIMA 2023
  2. 第二代 RLHF:奖励模型 + PPO Christiano 2017 → Ziegler 2019 → InstructGPT 2022
  3. 第三代 · 离线 DPO:不训奖励模型 Rafailov et al. 2023(Stanford) 你在这里
    解决了闭式解把 RLHF 折成分类损失,第一步 loss 恰为 ln 2 = 0.6931;不采样、不训 RM。
    卡在只看成对之差:教学世界里 A 在 3 对偏好里是被选中的一方,概率却从 0.30 掉到0.002(第 3 课浏览器实算)。
  4. 第三代 · 在线 GRPO 系:去掉 value model DeepSeekMath 2024-02 → DAPO / Dr. GRPO / GSPO 2025
  5. 奖励来源 RLVR:可验证的奖励 Tülu 3 2024-11 命名 · DeepSeek-R1 2025-01 规模化
  6. 岔路 RL 扩展了能力,还是重排? Yue 2025 vs ProRL 2025
  7. 第四代 思考模型:想更久,也能控 o1 2024-09 · R1 2025-01 · Qwen3 2025-05
  8. 第五代 蒸馏:小模型直接继承 Hinton 2015 → GKD 2023 → Qwen3 2025
  9. 第六代 Agentic RL:在环境里做事 SWE-RL 2025-02 · Kimi K2 · GLM-4.5 slime · DeepSeek-V3.2

先自己设计:为什么不能直接把偏好当 SFT 数据?

最朴素的想法:偏好对里 chosen 是好的,那就对 chosen 做 SFT、对 rejected 做「反向 SFT」(压低它的概率)。问题是这样做没有任何东西拴住模型:把 rejected 的概率一路压向 0,是一个没有下限的目标——log 概率可以降到负无穷,模型会把概率挤到任何没见过的回答上。RLHF 里拴住模型的是 KL 约束;直接拿偏好当标签,等于把 KL 扔了。我们想要的是:保留 RLHF 的目标(奖励高、离参考模型不远),只是不训奖励模型、不在线采样。

  1. ① 朴素方案
  2. ② 它在哪失败
  3. ③ 改进方案
朴素方案RLHF 全流程:先训 RM,再在线采样做 PPO
问题:「小明把苹果给了小王。」苹果现在在谁手里?(标准答案:小王)

教学世界:候选回答、初始概率、偏好对是手写的教学数据(不是任何模型的输出或真实标注);token 数来自 Qwen3.8 真 tokenizer;其余数字由浏览器按真算法现算。

上一课的做法:先把 9 对偏好拟合成奖励模型,下一步还要拿它做 PPO。

改进:KL 约束下的最优策略有闭式解

RLHF 的目标是:在奖励 r 高的同时,不要离参考模型太远:

maxπ Ey∼π[r(y)] − β·KL(π ‖ πref)

这个目标的最优解可以直接写出来:π*(y) = πref(y)·exp(r(y)/β) / Z,Z 是让概率和为 1 的归一化常数 。两边取对数、移项,奖励就能用策略自己表示:

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 的损失:

DPO 损失(一对偏好数据 → 一次监督更新)· Rafailov et al. 2023 式 (7)
L = −E log [ β( − ) ]
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
β 控制偏离参考模型的代价(对应 PPO 的 KL 强度)。对比 PPO:没有采样、没有 RM、没有 value——显存里只剩 π_θ 和 π_ref(π_ref 的 log 概率甚至可以预先算好缓存),而且是纯监督训练,稳定得多。

第一步的 loss 恰好是 ln 2。 训练开始时 πθ = πref,两个对数比都是 0,括号里是 0,σ(0) = 0.5,−ln 0.5 = ln 2 = 0.6931。这个数不依赖数据、不依赖模型大小——你自己跑 DPO 时,第一步的 loss 不是 0.6931,说明参考模型没加载对。回到上面「改进方案」那一侧的 DPO 组件,第 0 步列式里的每一项都是这样现算出来的。之后 loss 怎么降,只取决于 β·margin:

β × (对数比之差)00.5125
−log σ(·)0.69310.47410.31330.12690.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 只能在给定的偏好对上学,数据里没有的回答,它只能被动地跟着归一化变;策略学歪了也没有新数据来纠正。

⚠

常见误解一:「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)。但它的位置越来越明确:

证据三问

问本课的回答
① 它解决什么问题?RLHF 两阶段、4 个模型、在线采样、超参敏感
② 数学上为什么可能有效?KL 约束下的最优策略有闭式解,奖励可以用对数比表示,β·log Z 在成对差里约掉
③ 实验上为什么选了它?原文在情感控制、摘要、单轮对话上与 PPO 相当或更好;开源社区大量采用;但推理任务上在线 RL 更强

一句话

📌

DPO 把「先训奖励、再做 RL」折成一个分类损失:只看好回答和差回答的对数比之差;代价是只能在给定的偏好对上学。

🚦

先停在这里:记住「第一步 loss = ln 2;只看对数比之差;π_ref 还在;离线」。
再深一层:在闭式解组件里对比 RM 与严格验证器两种奖励下的 π*,再去读 IPO 的 §4.2。

下一个缺口

DPO 学不到偏好数据之外的东西;想让模型自己探索,还得回到在线采样。可在线的 PPO 又要一个和策略一样大的 value 模型(Qwen3.8 规模下 444.5 GB),而且只有最后一个 token 有奖励,逐 token 的价值很难估。value model 能不能也省掉? → 第 4 课:GRPO

你可能会问