先决定怎样读
这份路线围绕一个问题组织:怎样让生成模型学到真实偏好,同时保住质量、多样性和可控性? 论文目录按下面七个阶段排列,每篇页面的“上一篇 / 下一篇”也遵循这个顺序。这是根据前置知识和研究问题编排的自学建议,不是论文之间的权威难度排名。
先解释清楚一个失败现象,再读针对它的改进。 不必一次读完全部论文;每个阶段先选两三篇建立直觉,再扩展到同组方法。目录里的序号表示建议阅读顺序,原清单位置另行保留在每篇笔记中。
每篇可以分三轮读:
- 定位问题:读摘要、引言和图 1,用一句自己的话说明“基线在什么情况下失败”。
- 拆开方法:找到输入、目标函数、更新规则和额外开销。把新东西与基线逐项对照。
- 核对证据:检查对照组、数据规模、算力、评估器和消融。完成笔记里的自测题,再做一个小实验。
“已核验摘要”表示笔记核对了作者摘要,不能替代全文中的假设、证明和实验设置;“已查阅全文”也不代表代码已复现。笔记中的自测、小实验和迁移建议是学习设计,原清单摘录及附图保留原始表述,可能包含旧信息。
共用符号与 DPO 起点
| 符号 |
含义 |
阅读时注意 |
| $x$ |
提示或条件 |
不同任务对“同一个条件”的定义可能不同 |
| $y_w, y_l$ |
被偏好和不被偏好的回答 |
是相对判断,不等于绝对正确和错误 |
| $\pi_\theta(y\mid x)$ |
待训练策略 |
文本序列概率通常由 token 条件概率连乘得到 |
| $\pi_{\rm ref}(y\mid x)$ |
参考策略 |
比较概率比时必须说明参考模型 |
| $r(x,y)$ |
奖励函数 |
代理奖励与真实任务质量应分别评估 |
| $\beta$ |
DPO 中的尺度参数 |
不同论文的参数化可能不同,不能只按数值比较 |
| $\sigma(z)$ |
$1/(1+e^{-z})$ |
把实数间隔映射到 $(0,1)$ |
DPO 在 Bradley–Terry 偏好模型下,把奖励与策略对数概率比联系起来。可先记住它的成对损失:
$$\mathcal L_{\rm DPO}
=-\mathbb E_{(x,y_w,y_l)\sim\mathcal D}
\log\sigma\!\left(\beta\left[
\log\frac{\pi_\theta(y_w\mid x)}{\pi_{\rm ref}(y_w\mid x)}
-\log\frac{\pi_\theta(y_l\mid x)}{\pi_{\rm ref}(y_l\mid x)}
\right]\right).
$$
这里优化的是相对于参考策略的成对间隔。这个表达式说明为什么后续论文会分别研究数据、偏好模型、梯度以及参考约束。有关推导和假设,先读 DPO 原文第 3–5 节与附录 A。
成对损失下降,不能单独证明 chosen 回答的绝对概率上升。 下面的三选项玩具例子只用于建立直觉:
| 分布 |
chosen |
rejected |
其他回答 |
| 参考策略与更新前策略 |
0.4 |
0.4 |
0.2 |
| 一次假想更新后的策略 |
0.3 |
0.1 |
0.6 |
两行都归一化了;chosen 概率下降,但 chosen/rejected 比值从 $1$ 升到 $3$。取 $\beta=1$,对应的单对 DPO 损失从 $\log 2$ 降到 $\log(4/3)$。这是损失函数的数值示例,不是对任何特定训练轨迹的断言。
import math
reference = (0.4, 0.4, 0.2)
before = reference
after = (0.3, 0.1, 0.6)
def pair_loss(policy, beta=1.0):
margin = beta * (
math.log(policy[0] / reference[0])
- math.log(policy[1] / reference[1])
)
return math.log1p(math.exp(-margin))
assert math.isclose(sum(after), 1.0)
assert pair_loss(after) < pair_loss(before)
assert after[0] < before[0]
print(pair_loss(before), pair_loss(after))
第一阶段:基础与评估
先读 DPO 综述,再读 DPO 与 PPO 的系统比较。这一组的任务是分清策略、奖励模型、偏好评估器,以及离线和在线数据的差异。
过关标准:能画出 SFT → 偏好数据 → 奖励学习 / 直接优化 → 评估的流程;能解释为什么奖励模型在静态测试集上准确,不保证后训练后仍可靠。
建议做一张评估表:任务正确性、偏好胜率、回答长度、多样性、参考偏离、计算开销。此后的每篇论文都填同一张表,缺少的指标标为“未报告”,不要自行补全。
第二阶段:数据与偏好结构
从 What Matters in Data for DPO? 开始,再看数据选择、主动学习、评分信息、平局和列表偏好。先问“标签到底表示什么”,再看损失函数。
三个候选项的选择,与胜 / 负 / 平三种结果,是两种不同的“三元”。 前者扩大一次比较的候选集合,后者允许“不分胜负”;读到 ternary 时必须先确认论文的定义。
过关标准:能解释为什么小间隔既可能代表有价值的困难样本,也可能代表噪声或歧义;知道如何控制样本量、标注预算和训练步数,避免把更多数据的收益误判为更好方法的收益。
最小实验:构造同样大小的偏好集,分别加入随机翻转、真实平局和少数群体的相反偏好,观察数据选择规则会丢弃哪一类样本。
第三阶段:优化动力学
从 Gradient-Gated DPO 及概率偏移现象切入,再读梯度平衡、绝对锚定、目标函数与估计器假设。
把一篇方法拆成三部分:样本权重、chosen/rejected 的更新方向、以及参考或绝对概率约束。论文公式写法不同,这三个问题仍可以逐项比较。
过关标准:能区分奖励间隔、序列概率、任务质量三个量;知道“一个小模块的凸性”和“整个 LLM 的全局凸优化”需要不同的结论。
最小实验:用三分类 softmax 模型记录 loss、chosen 概率、rejected 概率与未参与比较的概率质量,画出它们随更新步数的变化。
第四阶段:噪声与鲁棒性
先建立 RLHF 失效模式分类 的问题地图,再按标签修正、重加权、分布鲁棒优化、奖励不确定性和几何约束逐组读。
标注错误、合理的人群分歧、分布偏移与奖励黑客,需要不同的诊断。 把它们都当作噪声过滤,可能会一起删掉少数群体的真实偏好。
过关标准:能指出每个方法保护的对象、依赖的干净信息和新增超参数;能说明它的保证是在什么噪声模型、支持集或约束条件下成立。
最小实验:逐渐加大优化预算,同时记录代理奖励与独立质量指标。寻找两者开始分离的位置;不要仅凭奖励继续升高判断训练成功。
第五阶段:多目标与推理时对齐
先读 Nash Learning from Human Feedback,再读 Pareto 对齐、个性化、在线反馈和解码 / 表征干预。这一阶段比较“谁的偏好”“何时施加控制”“是否修改模型参数”。
不要把不同用户的冲突偏好平均后,直接称为一个理想的人类偏好。也不要用训练阶段零开销,替代总推理成本的比较。
过关标准:能给一个双目标例子画出候选解与 Pareto 前沿;能区分参数更新、提示优化、候选重排、token 引导和激活编辑。
最小实验:对同一组候选回答同时评估正确性和简洁性,扫描偏好权重;检查权重变化是否真的覆盖不同折中点,而不是反复输出同一个模板。
第六阶段:密度比基础
从 Bregman 密度比匹配 开始,再看 flow / score 估计以及密度比与偏好优化的联系。
阅读前先熟悉一个归一化恒等式。若 $p$ 在 $q$ 的支持集内,且 $r(x)=p(x)/q(x)$,那么:
$$\mathbb E_{x\sim q}[r(x)]
=\int q(x)\frac{p(x)}{q(x)}\,dx=1.
$$
过关标准:能说明为什么“先分别估计两个密度再相除”可能不稳定;知道估计均值准确与估计方差小是不同的问题;不会忽略 $q(x)$ 很小的区域。
最小实验:在两个一维高斯分布上比较解析密度比与分类器估计的比值,按尾部区域分别报告误差;改变两个分布的重叠程度,再看估计方差。
第七阶段:扩散、流匹配与应用
先理解生成轨迹与终端分布,再读 分布级扩散对齐。之后按训练时偏好优化、推理时引导、流形漂移与多样性修复展开,最后读视觉语言、推荐和药物任务等应用。
把文本 DPO 的结论迁移到扩散模型,需要重新检查似然代理、时间步采样和轨迹分布。 迁移想法是待验证的研究假设,不能凭损失形式相似就认为理论结论成立。
过关标准:能分清一步 / 多步生成、SDE / ODE 采样、逐样本 / 分布级奖励;能解释提高单一奖励时,质量、条件一致性与多样性为什么要分开检查。
最小实验:在二维多峰分布上比较逐样本奖励和覆盖多个模式的分布奖励。同步记录奖励、模式覆盖率、参考分布偏离和采样成本。这里的实验是自学建议,不代表任何论文已采用同一设置。
每读完一篇,留下六句话
- 它在什么具体情境下发现了问题?
- 最接近的基线是什么,失败在哪里?
- 方法到底改了数据、目标、梯度、奖励还是解码?
- 哪个假设一旦不满足,结论就需要重新检查?
- 哪一个消融最能区分作者的解释和替代解释?
- 我能用什么最小实验,让自己的理解有机会被证伪?
回到 论文目录 选择下一篇。阅读进度可以在每篇笔记中标记,记录只保存在当前浏览器。