偏好数据与 DPO 怎样改变相对概率
SFT 告诉模型“模仿这份回答”。偏好数据则给同一个 Prompt 的两个回答,告诉模型哪一个相对更好。
prompt: 2+3 等于多少?
chosen: 5
rejected: 6数据 schema
chosen/rejected 必须共享完全相同的 Prompt 与模板。标签应依据明确 rubric,例如正确性、相关性、风格或安全;如果把多个标准混成“整体更好”,后续很难解释改善来源。
DPO 的直觉
策略模型对整段响应的 log-prob 是响应 token log-prob 之和。DPO 希望策略相对参考模型更偏向 chosen,而不是无限提高所有 chosen 概率:
再与参考策略的差值比较并进入 logistic loss。β 控制偏好强度与偏离参考模型的权衡。初学者要抓住:它优化相对优势,参考模型提供锚点。
用一组数算完整损失
设同一个问题为 2+3?,chosen 为 5,rejected 为 6。下面的数是教学构造的整段回答条件 log-prob,不是把数字 5、6 当成概率:
| 模型状态 | chosen log-prob | rejected log-prob | 两者之差 |
|---|---|---|---|
| 固定参考模型 | -2 | -3 | 1 |
| 更新前策略 | -2 | -3 | 1 |
| 更偏向 chosen 的策略 | -1.5 | -3.5 | 2 |
| 更偏向 rejected 的策略 | -2.5 | -2.5 | 0 |
完整的单对样本损失为:
取 β=0.1。更新前 z=0.1×(1−1)=0,loss 为 log(2)≈0.6931。更偏向 chosen 时,z=0.1×(2−1)=0.1,loss 降为 0.6444。反方向时 z=-0.1,loss 升为 0.7444。
局部梯度 ∂L/∂Δπ = -βσ(-z) 为负,所以降低损失会推动策略的相对偏好差值增大。参考模型在本步骤冻结;不是先把它与策略模型的权重相减。
一段多 token 响应时,先取每个实际目标 token的 log-prob,再沿有效响应位置求和;Prompt 和 PAD 不计入本例响应分数。策略与参考模型必须使用同一 tokenizer、模板和响应边界,否则相减的不是同一个事件。
自测:若策略 chosen/rejected 同时增加 0.2,DPO loss 会变吗?先算再展开答案。
答案与迁移任务
不会,两者之差不变。把参考模型两列改成 -2,-4,而策略保持 -1.5,-3.5,此时两个差值都为 2,loss 又回到 0.6931。这说明不能只看策略 chosen 的绝对概率。
这个实验验证目标函数的方向,没有执行模型微调。真正训练还需将这些标量连接到模型 logits 和反向传播;tiny Transformer先提供这条可运行计算链。
为什么不能只看训练准确率
偏好准确率 100% 可能只是记住模板、长度或标注者习惯。必须在独立 Prompt 上评估正确性、帮助性、安全、长度、格式和通用能力回归。
数据风险
- chosen/rejected 写反;
- rejected 明显更短,模型学到长度偏好;
- 两者差异包含格式噪声而非目标属性;
- 同一回答对出现在训练与评测;
- 标注者对 rubric 理解不一致;
- 单一自动评分器被模型利用。
RLHF 的奖励模型 + PPO 路线会显式学习奖励并在线采样优化策略;DPO 直接使用离线偏好对。二者流程不同,但都不能超越偏好数据和评测定义本身。
最小对照
保持基座、SFT checkpoint、数据和评测固定,比较无偏好优化与 DPO。报告总体偏好胜率,同时按正确性、长度、安全类别分层,并检查通用任务回归。
自测
先作答,再查看解释。记录只保存在当前浏览器。
打印版答案:1. 错;2. 限制策略偏离的锚点;3. 分解质量维度与通用回归。
来源:Direct Preference Optimization、Training language models to follow instructions with human feedback。
下一步
进入训练目标与数据审计实验,把数据身份、loss mask 和偏好对检查写成断言。