一篇读懂 DPO:一行损失函数怎么替掉整套强化学习

RLHF 的工程之痛:四个模型与一条采样流水线

RLHF(原理见本站上一篇《一篇读懂 RLHF》)证明了人类偏好可以变成训练信号,但落地过的人都知道那套流程有多重:一个训练循环里同时活着策略模型、冻结的参考模型、奖励模型、价值模型四个网络;每更新一步,策略都要先采样一批回答、送奖励模型打分、再算优势、再更新——训练吞吐被采样环节死死拖住,价值模型的训练还以「又贵又不稳」著称。DPO 论文 5.2 节对这种不稳给过一个技术解释:actor-critic 式的 RLHF 缺少参考策略带来的软价值函数归一化项,策略梯度的方差天然偏高。对于没有大集群的团队,这是一道几乎跨不过去的工程门槛。

2023 年 5 月,斯坦福的 Rafailov 等人发表了一篇后来彻底改变格局的论文,标题就叫《Direct Preference Optimization》(直接偏好优化)。它的主张极具冲击力:你根本不需要奖励模型,也不需要强化学习——用一行类似二元分类的损失函数,直接在偏好数据上优化语言模型,效果与 RLHF 相当甚至更好。这篇论文的推导被公认为「优雅」的教科书案例,值得完整走一遍。

推导只走三步:从 KL 约束目标到一行损失

DPO 的出发点不是「设计一个新损失」,而是先写下 RLHF 真正想解的优化目标,然后解析地把它解出来。整个推导只用三步,每一步都是标准数学,没有近似。

第一步,写下 RLHF 的真实目标。 RLHF 里 PPO 加 KL 惩罚,最终优化的其实是这样一个约束问题:最大化奖励,同时约束新策略不偏离参考模型(KL 散度作约束、系数 β)——

max_θ  E[ r(x, y) ] − β·KL[ π_θ(y|x) ‖ π_ref(y|x) ]

第二步,这个目标有闭式最优解。 对它做变分推导(论文 Eq.4),最优策略可以写成参考模型的指数加权形式:

π_r(y|x) = (1/Z(x)) · π_ref(y|x) · exp(r(x,y)/β)

其中 Z(x) 是配分函数(归一化项)。这个形式应该让你想起统计力学——它就是玻尔兹曼分布的结构。

第三步,关键的反解。 把上式倒过来,奖励可以用两个策略的对数概率比表达:r(x,y) = β·log[π(y|x)/π_ref(y|x)] + β·log Z(x)。这个等式里唯一的障碍是配分函数 Z(x)——它要对给定提示下的全部可能回答求和,根本算不出来。把它代回 Bradley-Terry 偏好模型(奖励差过 sigmoid),奇迹发生:Z(x) 在偏好对的差值中直接抵消——它只依赖提示词 x,对比同一个 x 下的两个回答时必然消掉。那个算不出来的项,被代数干净地扔掉了。于是奖励被彻底消去,只剩策略与参考模型:

L_DPO = −E[ log σ( β·log(π_θ(y_w|x)/π_ref(y_w|x)) − β·log(π_θ(y_l|x)/π_ref(y_l|x)) ) ]

其中 y_w 是偏好(赢)的回答,y_l 是被拒(输)的回答。代码实现只有一行:−F.logsigmoid(beta * (pi_logratios - ref_logratios)),与训练一个二分类器没有本质区别。

直觉上,DPO 把「奖励」重新定义成了相对参考模型的偏移量:模型对好回答的概率提升得比对差回答多,损失就小。β 扮演与 RLHF 里完全相同的角色——橡皮筋的松紧(默认 0.1,摘要任务上论文用过 0.5)。论文标题《Your Language Model is Secretly a Reward Model》说的正是这个结果:语言模型的概率本身就是奖励的参数化,只是以前没人把这层窗户纸捅破。值得一提的是,论文证明损失里那个随样本动态变化的权重 σ(r̂(y_l)−r̂(y_w)) 不可或缺:去掉它、只用朴素概率比的版本会让语言模型退化——推导的每一步都有它存在的理由。

实验盘点:小模型上的全线胜利

方法优雅只是入场券,DPO 真正动摇行业的是实验数字。论文在三个战场上全面对照 PPO:

可控摘要(TL;DR 数据集),用 GPT-4 当评委:DPO 温度 0 时胜率约 61%,超过 PPO 的约 57%;人类盲评中 DPO(温度 0.25)58% 优于 PPO(温度 0)。更能说明问题的是「人类与 GPT-4 评审的一致率」对照:DPO 模型 58%、SFT 模型 43%,而被社区广泛使用的 PPO 复现模型只有 17%——差距大到难以用波动解释。情感控制(IMDb),在「奖励-KL 前沿」上 DPO 全面压制 PPO——所谓奖励-KL 前沿,是「拿到多少真实质量、付出多少偏移代价」的帕累托曲线,同样的 KL 预算下 DPO 换到的真实奖励更高,甚至压过了能用真实奖励函数的 PPO-GT 变体。对话(Anthropic HH 数据集,Pythia-2.8B),DPO 是唯一稳定优于偏好的方法;分布外泛化(CNN/DM)上 GPT-4 胜率 0.36 对 PPO 的 0.26。

超参数的省心程度同样惊人:batch 64、学习率 1e-6、150 步 warmup,论文明确指出结果对采样温度远比 PPO 稳健——RLHF 工程师花在调 PPO 超参上的时间,DPO 几乎全部省掉。

为什么它能省:三个「不再需要」

回头看 DPO 替掉了 RLHF 的哪三样东西:不再需要采样——损失在固定的偏好数据上计算,训练全程不生成新文本,吞吐不再被推理拖累;不再需要奖励模型——奖励被解析地折叠进了策略本身;不再需要价值模型——没有优势估计这回事了。四个模型变成两个(策略 + 冻结的参考模型),而参考模型只做前向、不需要训练。

这正是它名字里「直接」的含义:不走「学奖励 → 用 RL 优化奖励」的间接路线,直接在偏好上优化策略。工程账算下来,显存少一半(四个模型变两个)、训练吞吐不再受采样拖累、调参负担几乎清零,小团队第一次可以在单机多卡上跑完整的偏好对齐——DPO 由此成为开源社区微调流程的默认组件,Llama 系列之后的大量开源对齐工作都建立在它或它的变体上。

家族与边界:DPO 不是终点

DPO 开创的是一个家族,每个变体都针对它的某个具体缺陷:

变体 出处 解决什么
IPO Azar et al. 2023 把 log-sigmoid 换成平方损失,缓解偏好对上的过拟合
KTO Ethayarajh et al. 2024 不要成对偏好,「好/坏」二元反馈即可(基于前景理论),数据更容易收集
SimPO Meng et al. 2024 连参考模型也去掉,用长度归一化的隐式奖励加目标间隔
GRPO DeepSeekMath,2024 回到 RL 路线但去掉价值模型,用组内相对比较估优势;DeepSeek-R1 的基础

表里的几条主线值得多说两句。IPO 针对 DPO 的一个已知病灶:log-sigmoid 损失在训练后期会在偏好对上持续拉大隐式奖励差距而不饱和,等于鼓励过拟合,IPO 换成平方损失让差距有界。KTO 的价值在数据侧:成对偏好要求标注员一次看两个回答,而「这个回答好/不好」的 thumbs-up 数据在产品日志里天然存在——把数据要求从「成对比较」降到「二元反馈」,标注成本几乎一个数量级的差距。SimPO 走得更远:连参考模型的前向也省掉,用长度归一化防止「越长越好」的偏置。GRPO 则代表了 RL 路线的瘦身版:对每个问题采样一组回答,用组内平均分当基线估计每个回答的相对优势,省掉了 critic 网络—— DeepSeek-R1 用它证明了可验证奖励 + 组内相对比较足以唤醒强推理能力。

而 DPO 本身的边界,2024-2026 年的研究给了三层清晰的刻画。这层边界感很重要——DPO 论文震动了「必须用 RL」的共识,但震动不等于取代,后续四年的实践把它放到了更精确的位置上。第一,DPO 不等于 RLHF。 推导保证的是「与 KL 约束 RLHF 的最优解相匹配」,但训练动态完全不同:DPO 是离线的,永远在固定数据集上优化,模型会学会利用分布外的响应来钻损失的空子——损失在数据覆盖不到的区域没有任何约束力;iterative/online DPO 是对症的补救,但在线变体收益的证据并不一致。第二,DPO 也过优化。 2024 年 NeurIPS 的后续研究证实,DPO 的隐式奖励同样存在「代理分数上升、真实质量先升后降」的 Goodhart 动态——绕开显式奖励模型不等于绕开过优化。第三,行业已经混合用药。 2026 年的行业综述指出,前沿实验室的后训练大幅收敛于 GRPO 家族的可验证奖励骨干(数学、代码这类机器可校验的领域),DPO 则退守到不可验证的偏好域——语气、风格、安全偏好——作为补充工具。两者不是替代关系,是分工关系。

小结

DPO 的故事是一条方法论寓言:它没有发明新的训练信号,只是证明了大家都以为必须用强化学习解的问题,其实有一个解析解。三步推导把「奖励」这个中间商从后训练里赶了出去,换来的是训练成本的数量级下降和一个开源社区人人可跑的对齐流程。它后来的演化(IPO、KTO、SimPO)与被部分超越(GRPO 家族在可验证奖励上的回归),共同勾勒出这个领域真正的图景:没有终极方法,只有「训练信号从哪来」与「工程成本付多少」之间不断被重新权衡的天平。读懂 DPO 的推导,你拿到的不只是一个算法,而是评估所有后训练方法的一把尺子——下次看到任何新的对齐方法,先问一句:它的训练信号是什么?它绕开了 RLHF 四模型负担里的哪几个?这两个问题问完,方法在地图上的位置就清楚了。

参考资料

← 返回资讯列表

读者留言

COMMENTS 暂无
仅本站原创文章开放留言 · 请勿留下手机号、邮箱等个人信息

还没有留言,来说第一句?