Learn AI · 模型硬功底(由内而外)
第 18 课 / 经典论文 P17  ·  阶段四:对齐与推理(Rafailov et al., 2023)

DPO:
RLHF 但不用 RL
——把三步对齐压成一步,也是开源对齐遍地开花的根

上一课 RLHF 很强,但它是个三步大工程:SFT → 训一个奖励模型 RM → 跑强化学习 PPO。又重、又不稳、又难调(RL 出了名的难伺候)。 这一课 DPO 抛出一个漂亮结论:你根本不用单独训奖励模型、也不用跑 RL——直接拿「偏好对(好答案 vs 坏答案)」对模型做一个像监督微调的简单 loss,就能达到和 RLHF 同一个目标。 它回答你一个很实际的问题:如果我想把一个模型真正「调」成我要的偏好,有没有一条不碰 RL、我也跑得起的路?
一句话:DPO = RLHF 的目标,但不用 RL。
它用一个数学等价证明:RLHF 那个「在 KL 约束下最大化奖励」的目标,可以重新参数化,把奖励用模型自己表达出来——于是语言模型自己,就暗中是它自己的奖励模型。 结果是一个直接作用在模型上的、像分类一样简单的 loss:拿偏好对,抬高「好答案」的相对概率、压低「坏答案」的,一步到位。没有单独的 RM、没有采样、没有 RL 循环——这就是今天开源对齐几乎都用 DPO 的原因。

一、立靶:RLHF 的三步,太重也太不稳

回忆 RLHF 的链条:① SFT(人写示范微调)→ ② RM(人排序、训一个打分器)→ ③ PPO(拿 RM 当奖励跑强化学习)。每一步都要数据、要算力、要调参,而第三步的 RL 尤其难伺候

立靶:中间那个 RM + RL,能不能直接省掉?

RL 阶段要在线采样、用 RM 打分、PPO 更新、还要 KL 惩罚防漂移——环节多、不稳、容易 reward hacking,复现还难。 可你手里的核心资产其实只是「偏好数据」(一堆「这个答案比那个好」)。 DPO 的赌注:既然最终就是想让模型多产出「好答案」、少产出「坏答案」,能不能跳过 RM 和 RL,拿偏好对直接训模型?

二、抽框架:一个直接作用在模型上的「偏好分类」loss

DPO 把对齐变成一件几乎和监督微调一样的事。对每一个偏好对 (问题 x,更好的回答 yw,更差的回答 yl)

要素做什么
抬高 / 压低让模型给 yw 的概率往上、yl 的概率往下
相对谁不是绝对值,而是相对一个冻结的参考模型(通常就是 SFT 模型)的变化
幅度旋钮 ββ 控制「能偏离参考模型多远」——它就是 RLHF 里 KL 惩罚的角色,内建进 loss
关键:它长得像分类,骨子里是 RLHF

这个 loss 形式上就是个逻辑回归式的二分类(「yw 比 yl 好」的概率最大化),跑起来和普通 fine-tune 一样简单、一样稳。 但 DPO 证明了:优化它,等价于优化 RLHF 那个「KL 约束下最大化奖励」的目标——只是直接求解,而不是绕 RM + RL。 你想要的护栏(别离参考模型太远)自动带着,不用再单独加 KL 惩罚。

三、核心洞察:模型自己,就是它自己的奖励模型

DPO 最妙的一步,是一个「视角切换」——理解它,你就懂了为什么 RM 可以凭空消失。

洞察说明
① 隐式奖励:RM 被吸收进了模型RLHF 把「奖励」放在一个单独的 RM 里。DPO 用数学重参数化证明:那个最优奖励,可以用「模型相对参考模型的对数概率比」直接表达。换句话说——奖励信息本就藏在策略模型里,不必再训一个外部 RM 去装它
② 同一个目标,换了解法DPO 不是一个新目标,它优化的就是 RLHF 那个目标。区别只在:RLHF 分三步、绕一大圈(学 RM → RL 逼近);DPO 一步、闭式直达。参考模型 + β 这一项,就是把 KL 锚焊进了 loss

四、动手玩:RLHF 三步 vs DPO 一步

点两边,看同样「用偏好数据对齐」,DPO 砍掉了什么、留下了什么。

选方案: 

看出门道了吗:DPO 把「训 RM」和「跑 RL」两步直接删掉,合并成「拿偏好对训一个分类式 loss」。同样的偏好数据进去、同样的对齐目标出来,但工程复杂度和不稳定性大降——这就是它普及的根。

五、对照表(一):RLHF vs DPO

维度RLHF(PPO)DPO
步骤三步(SFT → RM → RL)一步(SFT 后直接 DPO)
要单独的奖励模型吗要(训一个 RM)不要(隐式奖励)
要跑强化学习吗要(PPO,难伺候)不要(像监督微调)
稳定性 / 复现差、难调好、简单
护栏(别漂太远)单独的 KL 惩罚参考模型 + β 内建
优化的目标两者相同(KL 约束下最大化奖励)

六、对照表(二):DPO 的代价、变体、与前沿

说明
离线,受数据集限DPO 是 offline:只吃你给的那批固定偏好对,不在训练中生成新答案再评判。而 RLHF 的 RL 是 online、能探索数据集之外——所以数据覆盖不好时 DPO 可能吃亏。
RM 不可单独复用奖励是隐式的,你得不到一个能独立打分的 RM(RLHF 训出的 RM 可以拿去别处用)。
一堆变体DPO 之后涌现 IPO / KTO / ORPO 等:有的免参考模型、有的只需「好/坏」二元标签(不必成对)、有的把 SFT 和对齐合一。各修 DPO 的一个痛点。

🔮 DPO 让对齐平民化:配上 LoRA,普通团队也能在自有偏好数据上低成本「调教」模型。下一课 P18 Constitutional AI(Anthropic)再进一步——连「偏好数据从哪来」都自动化:用一套书面原则让 AI 自己生成偏好、自我对齐,少依赖人工标注。对齐的演化主线:从「人标 + RL」(RLHF) → 「人标、免 RL」(DPO) → 「AI 自己标」(CAI)。

七、映射到你的项目

你工作里的东西其实就是这篇论文的什么
你搭 prompt 自动调优环(好/坏样本 → 改 prompt)和 DPO 同一个「拿偏好对直接改进」的精神——只不过你改的是 prompt(不动权重),DPO 改的是权重。理解 DPO 能让你看清自己那套闭环在「偏好驱动优化」家谱里的位置
你哪天真要「微调」一个模型成自己的风格/偏好LoRA + DPO 就是你跑得起的那条路:收一批「这个回答比那个好」的对,跑 DPO(不碰 RL),用 LoRA 省成本——平民版对齐
你收集训练/评估数据时纠结「让人写答案还是让人选」DPO 再次印证 RLHF 的判断:「成对比较(A/B 哪个好)」比「写标准答案」更便宜、信号更干净——你建数据集优先收偏好对
「我的对齐/优化该用在线还是离线?」新判断维度:离线(DPO,吃固定数据集、简单稳)vs 在线(能边生成边评判、探索更广但复杂)。prompt 自动调优环其实偏在线(不断生成新候选再评),各有取舍

八、检索练习(关掉上文,凭记忆答)

1. DPO 相比 RLHF,省掉了什么?
2. 为什么 DPO 不需要单独的奖励模型?
3. DPO 相比在线 RLHF 的主要局限是?

九、常见问题 FAQ

把这一课接到你真实工作上的几个关键问。点开看答。

既然 DPO 又简单又稳,RLHF(PPO)是不是被淘汰了?

没有,是分工。DPO 成了大多数场景的默认(尤其开源、资源有限、要快要稳),因为性价比碾压。但在最前沿、肯下血本的地方,在线 RLHF 仍有优势:它能边训边生成新答案、用 RM 即时评判,探索到固定数据集之外的改进;DPO 离线,天花板被你那批偏好数据卡住。

还有混合路线:用 DPO 打底、再用在线方法精修;或「在线 DPO」(训练中不断生成新对、重新标注)来补离线的短板。判断法则:数据够好且要省事 → DPO;要榨最后几个点、有 RM 和算力预算 → 上(或叠)在线 RL。

DPO 里那个「参考模型」和 β 到底在防什么?去掉会怎样?

参考模型(冻结的 SFT 模型)+ β 就是 RLHF 的 KL 惩罚焊进 loss 的版本:DPO 衡量的不是「yw 的绝对概率」,而是「相对参考模型,yw 被抬高了多少、yl 被压低了多少」。β 控制这个偏离的力度——β 小 = 可大胆偏离(更贴合偏好但易跑偏/退化),β 大 = 紧贴参考(更稳但学得少)

没有它,模型会为了拉大「好 vs 坏」的差距不择手段地漂移——可能把 yw 也压得稀烂(只要 yl 压得更狠就行)、或丢掉语言能力。这是上一课「对着代理优化要有锚」的同一课:β 就是 DPO 的锚。

DPO 和我的 prompt 自动调优环,到底是不是一回事?

同精神、不同层。都信奉「拿偏好对直接驱动改进」。但:DPO 用偏好对做梯度更新、改权重(一次训练,偏好被烤进模型);你的 prompt 自动调优环用评分/偏好做 prompt 改写、改 prompt 空间(不动权重,靠搜索爬坡)。

DPOprompt 自动调优环
改什么权重prompt
怎么改梯度下降(闭式 loss)LLM 改写 + 选择
在线/离线偏离线偏在线(不断生成新候选)

收获:如果你的自动调优环调 prompt 已到瓶颈、且攒下了大量「好/坏」对,DPO+LoRA 是把这些偏好「焊进权重」的升级路径——从改 prompt 升到改模型,但纪律(防钻空子、要 held-out)一脉相承。

本课主源

读原典:Rafailov et al. — Direct Preference Optimization: Your Language Model is Secretly a Reward Model(2023)

想看变体:搜 KTO(只要二元好/坏标签)/ ORPO(SFT 与对齐合一、免参考模型)/ IPO

阶段四推进:RLHF(人标+RL)→ CoT(推理)→ DPO(人标、免 RL)。下一篇 P18 Constitutional AI:让 AI 用一套原则自己生成偏好、自我对齐——Claude 的方法论根。

我是你的老师,随时提问。 比如:「DPO 说『模型即自己的奖励模型』,这个重参数化直觉上怎么理解?」「β 一般取多少、怎么调?」 「我攒『好/坏』对时,坏样本该用模型自己的旧输出还是随便造?」——别带着模糊往下走。

参考:
Rafailov et al., Direct Preference Optimization: Your Language Model is Secretly a Reward Model, 2023.