Token Lab搜索

← 论文资料库
高效微调与对齐 / 2023

DPO:通过相对对数概率学习偏好

推导成对偏好 margin,并观察 β 对单个偏好样本的影响。

Direct Preference Optimization: Your Language Model is Secretly a Reward Model · Rafailov et al. · arXiv:2305.18290

Token Lab 原创学习解读 · 来源核对 2026-10-25 · 区分论文主张与合成教学例子。

01 · 论文提出了什么

DPO 借助参考策略,将 KL 正则奖励目标重参数化为偏好分类损失。论文评估情感、摘要与对话任务,该目标避免了对比设置中显式奖励模型加在线 RL 的训练循环。

一手来源:论文摘要 ↗
学习指南与本课目录LEARNING CONTRACT

理解 → 实现 → 研究

目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。

  • 理解层:写明假设、形状/单位和一个反例。
  • 实现层:复算数值例子并检查边界。
  • 研究层:在匹配预算下比较一个替代方法。

02 · 核心机制

Text / 原始公式
Δ = log πθ(yw|x) − log πθ(yl|x)
    − log πref(yw|x) + log πref(yl|x)
L = −log σ(βΔ)
∂L/∂Δ = −βσ(−βΔ)

margin 比较优选答案相对落选答案的增益,再扣除参考策略本来的偏好;它不是简单的优选答案概率。序列对数概率必须采用一致的分词、掩码和求和。推导中的 KL 惩罚鼓励接近参考策略,但有限数据和有限优化并不保证任意硬 KL 上限。

符号与直觉为教学解释,完整假设及实现细节请对照原论文方法。

机制图与逐步推导

Prompt 与偏好对 → 策略与参考 log 分数 → 参考校正 margin Δ → 偏好损失 → 更新
原创机制示意图,按从上到下顺序阅读。 SVG ↓
符号与假设
符号含义
yw, yl优选与落选完整回答
πref冻结参考策略
Δ策略偏好 log-odds 减参考 log-odds
  1. 在一致掩码约定下,仅计算回答 token 的对数概率,不应让 prompt token 概率意外影响回答比较。
  2. 策略分数为 −2、−3,参考为 −2.5、−3.2。策略差 1,参考差 0.7,因此 。β 时 β,损失约 0.437488。
  3. 对 −logσ(βΔ) 求导得 −βσ(−βΔ),此处约 −0.708687。交换回答标签使 ,损失增至约 1.037488。
实验检查点

断言策略与参考相同时损失为 log 2,测试标签交换与 padding 掩码。更低偏好损失不证明事实正确。

LOCAL / SYNTHETIC / INTERACTIVE

改变一个变量,解释结果为什么变。

原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。

04 · 手算一个例子

原创算例:策略对数 odds 为 0.8,参考为 0.3,因此 。β 时偏好概率约为 0.622,损失约 0.474。 时损失为 log 2。滑块演示固定 margin 上的损失,不预测整个策略在 β 扫描后的表现。

05 · 设计实验

先创建三组合成偏好对,手算损失,再训练。测试交换优选与落选是否使 Δ 变号。真实 POC 中固定参考 checkpoint,按 prompt 留出数据而非按单个 response;与监督基线比较,跟踪留出偏好准确率、生成质量、长度和估计 KL 漂移。

研究交付物

写出一个假设,保存配置与原始结果,提出替代解释,只报告证据支持的结论。关联实验是本地起点,不是完整论文复现。

打开关联课程/实验 →

06 · 局限与审稿式追问

分析提醒:偏好标签可能包含文风偏差、不一致或分布缺口。训练损失下降不能证明事实性、安全性或用户效用改善。序列长度可能混淆比较,应记录准确评分约定,不能默默改为长度归一化。

策略与参考完全相同时,每一对的损失是什么?

两个对数比差抵消,,因此无论 β 如何, 2。对 Δ 的梯度为 −β/2,所以优化仍能开始。

07 · 阅读原文

KL 正则目标、奖励重参数化与 DPO 损失推导;检查参考策略项。

年份采用首次 arXiv 投稿年份。未锁定版本的链接随修订变化,复现报告请记录准确版本。此处 DeepSeek-R1 明确固定为 v1。

继续学习本主题

MATHEMATICAL REVIEW · 2026-10-26

假设、参考实现与验收

β>0,使用自然对数,回答 token 的 log 概率求和,参考模型固定。sigmoid 是成对偏好概率,不是回答生成概率;目标是最小化损失。

复核所示公式、中英解释及声明滑块范围。代码复现标量教学计算,不是论文训练系统。

运行前:预测一个边界情况

先创建三组合成偏好对,手算损失,再训练。测试交换优选与落选是否使 Δ 变号。真实 POC 中固定参考 checkpoint,按 prompt 留出数据而非按单个 response;与监督基线比较,跟踪留出偏好准确率、生成质量、长度和估计 KL 漂移。

提示:隔离假设

固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。

最小可运行算例

将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node dpo.mjs. 无需第三方运行依赖。

import {paperCalc} from './paper-core.mjs';
const result=paperCalc("dpo",1);
console.log(result);
参考输出——先预测再展开
{
  "labels": [
    "Pairwise preference probability",
    "Loss (nats)"
  ],
  "values": [
    0.6224593312018546,
    0.4740769841801067
  ],
  "unit": "value"
}

测试与迁移

先创建三组合成偏好对,手算损失,再训练。测试交换优选与落选是否使 Δ 变号。真实 POC 中固定参考 checkpoint,按 prompt 留出数据而非按单个 response;与监督基线比较,跟踪留出偏好准确率、生成质量、长度和估计 KL 漂移。

在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。

下载完整代码包(.tar.gz) · 完整参考代码与回归检查

预测、检验与证据记录

展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。

打开记录/导出/清除 →

数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围