Oh My Awesome AI AI 世界地图
★★★★★ RLHF 与偏好学习

Direct Preference Optimization

Rafailov et al. (Stanford) · NeurIPS 2023 · 2023

阅读原文

把 RLHF 的「奖励模型 + 强化学习」两步压缩为一步:偏好对的似然比本身就是隐式奖励,直接对语言模型做分类式优化。

核心要点

  • 数学核心:可以证明「最大化 DPO 目标」与「先学最优奖励再做 RL」在适当条件下等价——RL 不是必需品,偏好信号可以直接改写策略。
  • 工程意义巨大:没有 RM 训练、没有 PPO 的滚动采样、没有 KL 系数调参,一条消费级显卡流水线跑完对齐,开源社区因此全面转向。
  • DPO 倾向于降低被拒答案的似然,可能带来分布收窄(多样性下降、退化为单一风格)——离线偏好数据的覆盖范围决定上限。
  • 与 PPO 的对照实验并未分出绝对胜负:在线 RL(持续采样新样本)在推理等能力任务上仍有优势,DPO 的优势场景是行为对齐。
本页目录

背景

InstructGPT 确立了 RLHF 的三段式(SFT → RM → PPO),但也留下一个工程噩梦:PPO 阶段需要同时维护策略模型、参考模型(算 KL)、奖励模型、价值网络——四个大模型驻留显存,加上滚动采样、GAE、超参敏感(KL 系数、clip 范围、学习率之间的交互),一次成功的 RLHF 训练在 2022-2023 年是「炼丹」的同义词。开源社区(用不起百卡集群)几乎无法复现。

与此同时,学界一直在问一个理论问题:偏好数据(A 好于 B)的信息量,真的需要经过「学一个奖励函数再优化它」这么长的路径吗?

动机

Stanford 团队(Rafailov 等)的出发点是一次数学审计:RLHF 的目标函数——在 KL 约束下最大化学习到的奖励——其实有闭式解。如果最优策略可以被显式写出来,那么「奖励」这个中间变量也许可以被消元掉:直接从偏好数据推导策略,跳过 RM 与 RL 循环。目标:把对齐从「强化学习问题」变成「监督学习问题」。

方法

推导链条值得完整过一遍(这是全文的灵魂):

第一步:RLHF 目标的闭式解。在 KL 约束下最大化期望奖励,最优策略是 p*(y|x) ∝ π_ref(y|x) · exp(r(x,y)/β),其中 β 是 KL 强度。这个形式与统计力学中的玻尔兹曼分布同构——奖励把参考分布「重新加权」。

第二步:奖励的重参数化。对上式取对数解出 r:r(x,y) = β·log(p*(y|x)/π_ref(y|x)) + 常数。奖励函数由最优策略完全决定——这是关键一步:不需要单独学奖励,策略与奖励互为对方的函数。

第三步:代入偏好模型。RLHF 的 RM 用 Bradley-Terry 模型训练(人类偏好概率 ∝ exp(r_chosen - r_rejected))。把第二步的 r 代入 BT 模型,奖励项被消掉,剩下的偏好概率直接写成两个策略比值:P(A ≻ B) = σ(β·[log π(A)/π_ref(A) - log π(B)/π_ref(B)])。

最终损失:对偏好对 (x, y_w, y_l) 最大化负对数似然——推高「被选中答案相对参考模型的对数概率」,压低「被拒绝答案的对数概率」。整个目标只涉及策略模型本身(π 与冻结的 π_ref),没有 RM、没有采样、没有 RL 循环。β 继承了原 KL 系数的语义:控制偏离参考模型的强度。

一个重要的实现细节:DPO 用的是完整序列的对数概率比,梯度会同时作用于「推高 chosen」与「压低 rejected」——后来的分析发现「压低 rejected」占主导,这是 DPO 某些病态(分布收窄)的根源。

实验设置

  • 模型与数据:开源基座(Pythia 2.8B/6.9B、GPT-J 系,按任务选型),先做 SFT 再做偏好优化;论文含情感控制(sentiment steering)、摘要与对话三个任务轨道
  • 偏好数据:Anthropic HH-RLHF(有用性/无害性对话偏好)、Stanford SHP(Reddit 偏好);对照 PPO-RLHF、SLiC 等当时方法
  • 评测:自动化偏好评测(用 GPT-4 与奖励模型当裁判的 win-rate)、人类 head-to-head、MT-Bench 风格多轮对话、以及 temperature/长度等行为分析
  • 资源对比:DPO 训练时间与显存曲线 vs PPO(同一基座)——这是论文的「卖点实验」

具体规模与基座细节以原文表格为准。

结果

  • 在 HH-RLHF 的自动 win-rate 上,DPO 达到或超过 PPO-based RLHF——且训练稳定性显著更好(无 RL 超参,一次跑通)
  • 计算成本:PPO 需要四个模型与在线采样的滚动开销,DPO 只需两个(策略 + 冻结参考),整体训练吞吐高出一个量级;后续社区实践(Zephyr-7B:Mistral-7B + LoRA-DPO)证明消费级硬件可行
  • 行为差异:DPO 模型生成的回答更长且多样性略降——损失结构天然鼓励「远离 rejected、靠近 chosen」的单向收缩
  • 温度鲁棒性:DPO 输出对采样温度相对不敏感,PPO 模型在高温下质量崩塌更快
  • 消融:β 的大小直接控制「像参考模型」与「拟合偏好」的权衡,与 RLHF 的 KL 系数一一对应——理论对应关系在实验中被验证

有趣的洞见

「RLHF 的 RL 部分」可以被数学消掉。这篇论文最大胆的地方不是提出新算法,而是证明旧算法的某个环节在结构上冗余:BT 偏好模型 + KL 正则的组合恰好构成了一个可逆的「奖励-策略」变换。RL 不是被工程优化掉的,是被代数消元掉的。这种「降维打击」在 ML 论文里极其稀有——多数论文加东西,这篇减东西。

离线 = 无探索。DPO 只在 SFT 数据分布附近做偏好排序,永远看不到「自己当前策略生成的新样本」——这在 RL 语言里是纯离线算法。它的隐含假设是「好的行为已经在 SFT 分布里,只需要重新排权重」;当这个假设不成立(比如要发现新的推理策略),DPO 的天花板就出现——这精确解释了后来「DPO 做行为对齐很强、做推理 RL 不行」的分工格局。

一个损失函数孵化了一个家族。DPO 之后一年内出现了 IPO(修 DPO 的过自信)、KTO(不需要成对偏好)、ORPO(融合 SFT 与偏好)、SimPO(去参考模型)……全部沿「把偏好信号写成分类损失」的思路。开源对齐生态(Zephyr、Tulu、OpenChat 系)几乎全部运行在 DPO 家族上——算法的简单性就是生态的兼容性。

批判性评价

最弱的一环:理论等价 ≠ 实践等价。DPO 的推导假设偏好数据由「BT 模型 + 最优策略」生成,真实人类偏好远比 BT 复杂(不可传递、依赖上下文);「压低 rejected」的梯度结构在实践中带来概率质量塌缩与多样性损失;最关键的是离线范式没有探索——2024-2025 年的共识是:推理类能力(RLVR)仍然需要在线 RL(PPO/GRPO),DPO 的领地是行为与风格对齐。把 DPO 当「RLHF 的完全替代」是误读,它是「行为对齐的高效特解」。

依然重要的理由:它把对齐的训练成本砍掉一个数量级,让开源社区第一次完整复现「预训练 → SFT → 偏好对齐」全流程,直接塑造了 2023 年后的开放模型生态。作为「理论简化工程」的方法论标本,它值得与 InstructGPT 连读——两篇合起来就是对齐工程的完整主线:从「RL 很难但必须做」到「RL 在哪里可以省、在哪里不能省」。