DPO 的算法原理是什么?

考查重点:相对概率与成对偏好。以优劣回答的策略/参考概率比构损失,增相对偏好,不必先奖励模型再 PPO

本题目录

参考答案

核心回答

DPO(Direct Preference Optimization,直接偏好优化)利用同一问题下的优选回答与劣选回答,直接优化策略模型对这对回答的相对偏好。它把带参考策略 KL 正则的奖励最大化目标,转化成可用监督学习方式训练的偏好分类损失,不需要先单独训练一个显式奖励模型,再执行标准 PPO 的在线采样更新循环。

偏好对与参考策略如何参与

每条样本是 (x, y_w, y_l):x 为问题,y_w 是标注偏好的回答,y_l 是较差回答。训练时有可更新的策略 πθ,以及冻结的参考策略 πref,通常从 SFT 模型初始化。

定义两份回答相对参考策略的 log 概率提升之差:

Δθ = log[πθ(y_w|x) / πref(y_w|x)]
     − log[πθ(y_l|x) / πref(y_l|x)]

标准 DPO 损失为,其中期望取自偏好对数据集:

L_DPO = −E[log σ(βΔθ)]

σ 是 sigmoid,β>0 对应原目标中参考策略 KL 项的系数。训练希望优选回答相对参考策略的提升,大于劣选回答的相对提升;参考策略提供比较基准,不参与梯度更新。

这里的 log π(y|x) 是完整回答序列的 log 概率,通常对回答 token 的条件 log 概率求和,排除 prompt 和 padding,并按统一的结束标记、模板与截断规则处理。直接除以回答长度会改变原始目标,属于需要单独说明的变体。

为什么能省去显式奖励模型

从奖励最大化加 KL 正则的目标出发:

最大化 E_{y~π}[r(x,y)] − β KL(π || πref)

其最优策略满足 π*(y|x) ∝ πref(y|x) × exp(r(x,y)/β),反过来可写成:

r(x,y) = β log[π*(y|x) / πref(y|x)] + β log Z(x)

Bradley–Terry 偏好模型用 σ(r_w−r_l) 描述优选概率。同一问题两份回答的奖励相减时,log Z(x) 抵消,便得到上面的 DPO 损失。因此策略的 log 概率比同时起到了隐式奖励的作用。

这是在相应偏好模型与优化假设下的推导,不表示有限、带噪的数据训练后就自动得到真实用户偏好的最优模型。

一个可复算例子

为方便计算,取 β=1。假设参考策略对两份回答的概率均为 0.2,当前策略对优选回答给 0.4,对劣选回答给 0.1,则:

Δ = log 2 − log 0.5 = log 4
σ(Δ) = 0.8
单样本损失 ℓ = −log 0.8 ≈ 0.2231

当当前策略与参考策略相同时,Δ=0,损失为 log 2≈0.6931。示例说明该偏好对已被赋予更高的优选概率,并不是推荐的超参数设置或实测训练结果。

与 SFT、PPO 的边界

SFT 主要学习优质回答的似然;DPO 同时使用优选与劣选回答,学习相对参考模型的偏好差异。标准离线 DPO 可直接读取固定偏好对,训练链路较简单;在线收集新偏好再训练属于扩展工作流,不能据此说 DPO 永远无法使用在线数据。

PPO 常从当前策略采样,依据奖励和优势估计更新,可以结合环境反馈;DPO 的效果更依赖偏好对质量、覆盖范围和参考策略是否合适。标签噪声、长度偏好、分布偏移与过度优化都可能导致退化。β 在理论目标中控制偏离参考的代价,但实际梯度也受其缩放影响,不能简单理解为“越大每步改得越少”。

参考资料

  • 国内:WeThinkIn:强化学习高频知识点:借鉴偏好对训练链路,解释正文中标准离线 DPO 的数据来源及偏好质量对优化的影响。
  • 国内:zero2Agent:训练与数据:参考 DPO 与在线策略优化的比较,区分正文中固定偏好对训练和在线采样、评分的链路。
  • 国内:DeepSeek-AI 等:DeepSeekMath:借鉴附录中 DPO、PPO 的讨论,解释正文中离线偏好与环境奖励、优势更新的信号差异。
  • 国外:Rafailov 等:Direct Preference Optimization:依据从 KL 正则目标、隐式奖励到 Bradley–Terry 模型的推导,说明正文中的标准 DPO 损失及参考策略作用。
  • 国外:Schulman 等:PPO:参考 PPO 的采样、裁剪与价值估计,解释正文中它与 DPO 离线偏好训练的流程差别。

相关面经

9 篇

字节跳动

广告算法岗
查看原面经 →
DPO的全称是什么,公式是什么,直接体现在哪里
dpo的公式是什么

字节跳动

大模型实习算法岗
实习
查看原面经 →
介绍一下 DPO , PPO , GRPO

百度

多模态大模型
一面
查看原面经 →
为什么要做dpo

零一万物

知识图谱算法实习生
实习一面
查看原面经 →
介绍sft和dpo

滴滴

企业级算法实习生
实习一面
查看原面经 →
讲讲DPO,训练流程?
展开剩余 4 篇面经

腾讯

大模型算法工程师
暑期
查看原面经 →
讲一下 DPO 的损失函数怎么计算

腾讯

大模型算法工程师
暑期实习一面
查看原面经 →
讲一下 DPO 的损失函数怎么计算

京东

算法工程师(对话机器人)
实习
查看原面经 →
GRPO,PPO,DPO的算法原理

美团

Agent 算法工程师
查看原面经 →
介绍下ppo dpo grpo算法

收录题集

3 个来源,共14 份题集

大模型基础

AMIT SHEKHAR · ai-engineering-interview-questions · 1 条原题

查看题集 →

编码题专题汇编

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

后训练章节追问

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

后训练综合问答

阿东玩 AI · AgentGuide · 2 条原题

查看题集 →

强化学习与对齐

阿东玩 AI · AgentGuide · 4 条原题

查看题集 →
展开其余 1 条原题
展开剩余 9 份题集

多模态与计算机视觉

阿东玩 AI · AgentGuide · 2 条原题

查看题集 →

大模型基础面试题

阿东玩 AI · AgentGuide · 4 条原题

查看题集 →
展开其余 1 条原题

阿里巴巴问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

百度高频面试题

Rocky Ding · AIGC-Interview-Book · 2 条原题

查看题集 →

DeepSeek高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

滴滴高频面试题

Rocky Ding · AIGC-Interview-Book · 2 条原题

查看题集 →

京东高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

腾讯问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

数学基础高频考点

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

相关题目

4 题