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 离线偏好训练的流程差别。
相关面经
26 篇小米
大模型算法DPO 的 loss 写一下,为什么 reference model 不能省?
字节跳动
广告算法岗字节跳动
大模型实习算法岗介绍一下 DPO , PPO , GRPO
百度
多模态大模型为什么要做dpo
零一万物
知识图谱算法实习生介绍sft和dpo
展开剩余 21 篇面经
滴滴
企业级算法实习生讲讲DPO,训练流程?
合合信息、作业帮
dpo的奖励函数是什么,dpo和grpo相比哪个效果好
华为
多模态大模型 AI 算法工程师强化学习算法原理(PPO、GRPO、DPO);
字节跳动
途游游戏
Agent 开发实习生介绍一下LoRA和DPO微调流程,训练数据准备和相关脚本是否由自己完成?
阿里巴巴
算法实习生模型对齐方案选型思考:项目舍弃传统RLHF、选用DPO直接偏好优化的原因是什么?讲解DPO核心推导公式与完整损失函数构成。
字节跳动
大模型算法现场手写梳理PPO、DPO两套算法完整流程。
美团
大模型算法讲解DPO直接偏好优化算法的核心原理,同时分析该算法在实际落地中存在的短板与局限。
腾讯
大模型算法工程师讲一下 DPO 的损失函数怎么计算
蚂蚁集团
大模型智能体优化算法介绍dpo、ppo、grpo
腾讯
大模型算法工程师讲一下 DPO 的损失函数怎么计算
滴滴
大模型算法实习生描述一下dpo
百度
多模态 LLM 算法实习生DPO实现原理
美的
大模型算法实习生介绍一下dpo算法,dpo这里训练数据怎么来的?Dpo训练框架?
字节跳动
大模型算法dpo 的公式是什么
阿里巴巴
AI Agent 开发dpo 以及 kto 了解么
网易
NLP 算法dpo是什么?
腾讯
大模型算法DPO 的 loss 你怎么理解的?你们业务上用了 DPO 为什么这样设计?
中国平安
NLP介绍一下DPO
京东
算法工程师(对话机器人)GRPO,PPO,DPO的算法原理
美团
Agent 算法工程师介绍下ppo dpo grpo算法
收录题集
大模型基础
编码题专题汇编
RLHF、PPO、DPO、损失函数
后训练章节追问
后训练综合问答
强化学习与对齐
「腾讯、腾讯混元、阿里通义」
DPO原理与应用 介绍DPO(Direct Preference Optimization)的原理、适用任务及与SFT的关系。变体: 「京东、字节跳动、美团」
DPO原理: 「京东、字节Seed、字节跳动、百度、百度文心、美团、蚂蚁集团、阿里巴巴」








