回忆 RLHF 的链条:① SFT(人写示范微调)→ ② RM(人排序、训一个打分器)→ ③ PPO(拿 RM 当奖励跑强化学习)。每一步都要数据、要算力、要调参,而第三步的 RL 尤其难伺候:
RL 阶段要在线采样、用 RM 打分、PPO 更新、还要 KL 惩罚防漂移——环节多、不稳、容易 reward hacking,复现还难。 可你手里的核心资产其实只是「偏好数据」(一堆「这个答案比那个好」)。 DPO 的赌注:既然最终就是想让模型多产出「好答案」、少产出「坏答案」,能不能跳过 RM 和 RL,拿偏好对直接训模型?
DPO 把对齐变成一件几乎和监督微调一样的事。对每一个偏好对 (问题 x,更好的回答 yw,更差的回答 yl):
| 要素 | 做什么 |
|---|---|
| 抬高 / 压低 | 让模型给 yw 的概率往上、yl 的概率往下 |
| 相对谁 | 不是绝对值,而是相对一个冻结的参考模型(通常就是 SFT 模型)的变化 |
| 幅度旋钮 β | β 控制「能偏离参考模型多远」——它就是 RLHF 里 KL 惩罚的角色,内建进 loss |
这个 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。 |
点两边,看同样「用偏好数据对齐」,DPO 砍掉了什么、留下了什么。
看出门道了吗:DPO 把「训 RM」和「跑 RL」两步直接删掉,合并成「拿偏好对训一个分类式 loss」。同样的偏好数据进去、同样的对齐目标出来,但工程复杂度和不稳定性大降——这就是它普及的根。
| 维度 | RLHF(PPO) | DPO |
|---|---|---|
| 步骤 | 三步(SFT → RM → RL) | 一步(SFT 后直接 DPO) |
| 要单独的奖励模型吗 | 要(训一个 RM) | 不要(隐式奖励) |
| 要跑强化学习吗 | 要(PPO,难伺候) | 不要(像监督微调) |
| 稳定性 / 复现 | 差、难调 | 好、简单 |
| 护栏(别漂太远) | 单独的 KL 惩罚 | 参考模型 + β 内建 |
| 优化的目标 | 两者相同(KL 约束下最大化奖励) | |
| 点 | 说明 |
|---|---|
| 离线,受数据集限 | 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 自动调优环其实偏在线(不断生成新候选再评),各有取舍 |
把这一课接到你真实工作上的几个关键问。点开看答。
没有,是分工。DPO 成了大多数场景的默认(尤其开源、资源有限、要快要稳),因为性价比碾压。但在最前沿、肯下血本的地方,在线 RLHF 仍有优势:它能边训边生成新答案、用 RM 即时评判,探索到固定数据集之外的改进;DPO 离线,天花板被你那批偏好数据卡住。
还有混合路线:用 DPO 打底、再用在线方法精修;或「在线 DPO」(训练中不断生成新对、重新标注)来补离线的短板。判断法则:数据够好且要省事 → DPO;要榨最后几个点、有 RM 和算力预算 → 上(或叠)在线 RL。
参考模型(冻结的 SFT 模型)+ β 就是 RLHF 的 KL 惩罚焊进 loss 的版本:DPO 衡量的不是「yw 的绝对概率」,而是「相对参考模型,yw 被抬高了多少、yl 被压低了多少」。β 控制这个偏离的力度——β 小 = 可大胆偏离(更贴合偏好但易跑偏/退化),β 大 = 紧贴参考(更稳但学得少)。
没有它,模型会为了拉大「好 vs 坏」的差距不择手段地漂移——可能把 yw 也压得稀烂(只要 yl 压得更狠就行)、或丢掉语言能力。这是上一课「对着代理优化要有锚」的同一课:β 就是 DPO 的锚。
同精神、不同层。都信奉「拿偏好对直接驱动改进」。但:DPO 用偏好对做梯度更新、改权重(一次训练,偏好被烤进模型);你的 prompt 自动调优环用评分/偏好做 prompt 改写、改 prompt 空间(不动权重,靠搜索爬坡)。
| DPO | prompt 自动调优环 | |
|---|---|---|
| 改什么 | 权重 | 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 的方法论根。
参考:
Rafailov et al., Direct Preference Optimization: Your Language Model is Secretly a Reward Model, 2023.