对应:Stanford CS329H Fall 2026 Lecture 5(10/7 Learning choice prediction; MLE estimation)。依据教材第 2 章 2.2–2.3、2.5–2.10 节(最大似然、Elo 在线学习、正则化、交叉验证、优化器、评估指标、LLM 偏好学习案例)及第 2 章幻灯片;MM 算法依据 Hunter(2004)。 配套代码:
code/lecture05/(从本讲起需要 numpy) 预计阅读时间:3~4 小时(含运行代码)
0. 本讲导航
0.1 学完本讲,你应该能够
- 写出 BT 模型的对数似然,推导梯度(“实际胜场 − 预期胜场”)和海森矩阵(负的加权图拉普拉斯),解释它为什么是凹的、为什么有一个零特征值。
- 从海森矩阵得到标准误和置信区间,解释比较图的连通性(代数连通度)怎样决定估计的精度。
- 说出梯度上升、牛顿法、MM 算法、Adam 的原理和适用场合;解释步长 、二次收敛、条件数。
- 推导 Elo 更新就是对数似然的随机梯度上升;说出 K 因子的权衡、顺序依赖、Robbins–Monro 条件,以及 Elo 和批量最大似然各自适合什么场景。
- 解释 L2 正则化 = 高斯先验下的最大后验估计(MAP),说出提前停止的作用,用 折交叉验证选正则化强度,并识别”挑选之后的乐观偏差”。
- 区分排序指标(准确率、AUC)和概率指标(对数损失、Brier、ECE),解释校准和温度缩放,说出指标的上限从哪里来。
- 解释随机标注噪声和系统性标注噪声对学到的偏好的不同影响;说出 DPO 和 BT 最大似然的关系。
0.2 先修知识
| 知识点 | 用在哪里 | 最低要求 |
|---|---|---|
| 第 1~4 讲 | 全部 | BT 模型、比较图(第 2 讲第 4.2 节)、Rasch 与附带参数问题(第 4 讲) |
| 微积分 | 第 2、3 节 | 导数、偏导数、链式法则; |
| 线性代数 | 第 3、4 节 | 矩阵、特征值、正定 / 半正定 |
| numpy | 代码 | 不需要预先会;bt_numpy.py 开头和代码 README 有集中说明 |
0.3 本讲地图
第1节 从“模型”到“学习”:第二单元的问题
第2节 最大似然的思想:两个选项的例子 ← 代码 01
第3节 BT 的梯度与海森矩阵:矩匹配、凹性、图拉普拉斯、连通性 ← 代码 01
第4节 优化算法:梯度上升、牛顿法、MM、Adam;步长与条件数 ← 代码 02
第5节 在线学习:Elo = 随机梯度上升 ← 代码 03
第6节 不确定性与正则化:标准误、MAP、提前停止 ← 代码 01、04
第7节 模型选择:交叉验证与“挑选之后的乐观” ← 代码 04
第8节 评估:排序、概率、校准 ← 代码 05
第9节 案例:LLM 偏好数据里的两种噪声;DPO 是 BT 最大似然 ← 代码 05
第10–14节 小结、与考核的关系、练习、延伸阅读、下一讲预告
1. 从”模型”到”学习”
第一单元(第 14 讲)回答了”偏好数据长什么样、用什么概率模型描述”。拟合模型时,我们一直把 9 讲)把它们打开,回答”怎样从数据里把参数学出来”:fit_bradley_terry、fit_choice_model、fit_mf 当成工具。第二单元(第 5
| 讲次 | 方法 | 输出 |
|---|---|---|
| 5 | 最大似然(及其在线版本 Elo) | 一个点估计 |
| 6 | 贝叶斯推断;在预训练模型上微调奖励模型 | 后验分布(不确定性);神经网络奖励模型 |
| 7 | Fisher 信息与实验设计 | 下一个问题该问什么 |
| 8、9 | RLHF、DPO | 用学到的偏好训练语言模型 |
教材强调:最大似然、贝叶斯、在线学习估计的是同一个模型,区别只在计算方式、数据访问方式和是否量化不确定性。本讲先把最大似然讲透,后面的方法都建立在它之上。
2. 最大似然的思想
2.1 原则
给定模型 和观察到的数据,最大似然估计(MLE)选让”已经观察到的数据出现的概率”最大的参数:
(各条数据独立时,概率相乘,取对数后相加。)为什么是它?统计学的经典结论:数据足够多、模型正确时,MLE 一致(收敛到真值)、渐近正态(误差近似服从正态分布),并且在所有”渐近无偏”的估计里方差最小(渐近有效)。第 4 讲的附带参数问题说明了这些结论的前提:参数个数不能随数据一起增长。
2.2 两个选项的例子
最简单的情形:只有 、 两个选项, 赢了 70 次、输了 30 次。设 ,对数似然
求导令其为 0:,得 ,即
直觉:让模型预测的胜率等于观察到的胜率。
代码 01_likelihood_gradient.py 的演示 1 画出了 :它在 0.85 附近达到最大,两边对称地下降。曲线在最高点附近的曲率(二阶导数)是 ,标准误约为 ,所以 95% 置信区间大约是 。数据多 100 倍时,最高点的位置不变,曲线尖锐 100 倍,标准误缩小 10 倍。
注意 这个因子: 时最大。实力接近的两个选项,比一次学到的东西最多——这是第 7 讲实验设计的出发点。
3. BT 的梯度与海森矩阵
3.1 记号
本讲把比较数据存成三个数组:第 条比较在选项 和 之间, 表示 赢了。 是模型预测 赢的概率。目标函数(平均对数似然减去 L2 正则化):
3.2 梯度:观察到的 − 预期的
对一条比较,(“残差”),。把所有比较按选项加起来:
代码 01 的演示 2 在 (模型认为每场都五五开)处展示了这一点:真实分数最高的选项 0 实际赢了 122 场,预期 77.5 场,梯度为 +44.5,所以要把它的分数往上调;选项 4 实际 45 场、预期 83 场,梯度 −38。用数值差分验证,解析梯度的误差只有 ——写梯度代码时,永远先做这个检查。
两个推论:
- 矩匹配:最大似然估计(梯度为 0,)满足”每个选项的预期胜场 = 实际胜场”。这是指数族模型最大似然的普遍性质,Zermelo 1929 年就是从这个方程出发给棋手排名的。
- 梯度的分量加起来是 0:一场比赛一胜一负,总的实际胜场等于总的预期胜场。这是”平移不变”在梯度上的体现。
3.3 海森矩阵:负的加权图拉普拉斯
对一条比较,令 。 对 的二阶导数是 。加起来:
是比较图的加权拉普拉斯矩阵(边的权重是 )。它告诉我们三件事:
- 凹性。对任意向量 ,,所以海森矩阵半负定,对数似然是凹函数,只有一个最高点(或一组平移等价的最高点),梯度上升不会被困在局部最优。这是 BT(以及所有逻辑回归)好优化的根本原因——第 6 讲的神经网络奖励模型就没有这么幸运了。
- 平移不变。全 1 向量满足 ,所以 时海森矩阵有一个零特征值:所有分数加同一个常数,似然不变。这就是”只有差值可识别”的线性代数版本。加 L2 正则化后它变成 ,解唯一。
- 连通性决定精度。 的第二小特征值叫代数连通度(Fiedler 值)。比较图分成两块时它等于 0(两块之间的相对高低无法确定,第 2 讲第 4.2 节);连得越”松”,它越小,估计越不准。
代码 01 的演示 3:30 个选项、1500 条比较,两种设计:
| 设计 | 最小特征值 | 代数连通度 | 最大特征值 | 的标准误 |
|---|---|---|---|---|
| 随机配对 | ≈ 0 | 11.594 | 25.01 | 0.379 |
| 链式(只和编号相邻的比) | ≈ 0 | 0.319 | 41.88 | 1.010 |
链式设计里,相隔很远的两个选项只能通过一长串中间人间接比较,误差层层累积:代数连通度小了几十倍,标准误大了将近三倍。数据量一样,“谁和谁比”决定了能学多准。
与 Zermelo–Ford 条件的关系:第 2 讲说最大似然存在且唯一 ⇔ 胜负图强连通。凹性保证”最多一个最高点”;强连通保证”最高点不在无穷远处”(如果某个选项从没输过,沿着”把它的分数调大”的方向,似然一直增加,永远到不了顶)。
4. 优化算法
凹函数只有一个最高点,问题只是”怎样最快爬上去”。
4.1 梯度上升与步长
步长 怎么选?设 是曲率的上界(海森矩阵最大特征值的绝对值),取 时每一步都保证目标不下降。对 BT,,由 Gershgorin 圆盘定理可得 ——第 1~4 讲的拟合函数都是这样自动设定步长的。
代码 02_optimizers.py 的演示 2(100 个选项、5000 条比较,):步长取 0.5、1、4 倍的 都收敛( 是保守的上界,实际曲率更小,稍大的步长反而更快);16 倍和 64 倍就发散了——一步跨过山顶,越跳越远。深度学习里”学习率太大,损失变成 NaN”就是这个现象。
4.2 牛顿法
在当前点用二次函数近似目标,直接跳到二次函数的最高点:
离最优点近时,误差每一步大约平方一次(二次收敛:)。代价是每一步要解一个 的线性方程组()。 时海森矩阵奇异,用伪逆(相当于”平均值为 0”的约束)。第 2 讲的线性 BT、第 4 讲的小逻辑回归用的都是牛顿法。
4.3 MM 算法
Zermelo(1929)给出的迭代,Hunter(2004)把它解释成最小化—最大化(Minorize–Maximize)算法。用实力值 ,对数似然是
( 是 赢的场数。)利用对数的凹性 ,在当前点 处有
右边是一个处处不超过 、并在当前点和 相等的”下界函数”,而且对每个 是分开的。最大化它得到更新:
直觉:实力 = 赢的场数 / “按当前实力,预期能赢的机会”。每一步都保证似然不下降,不需要选步长。
4.4 Adam
Adam(Kingma & Ba 2014)给梯度上升加了两样东西:动量(梯度的指数移动平均,方向更稳)和每个参数各自的步长(除以梯度平方的移动平均的平方根):
(、 是偏差修正后的值,默认 、。)它是训练神经网络的默认选择,教材也推荐它作为偏好学习的默认优化器。
4.5 比较
代码 02 的演示 1(100 个选项、5000 条随机配对的比较,收敛标准:梯度最大分量 ):
| 优化器 | 收敛步数 | 第 10 步的最优性差距 |
|---|---|---|
| 梯度上升(步长 ) | 80 | |
| 牛顿法 | 5 | 已收敛 |
| MM 算法 | 61 | |
| Adam() | 244 |
所有方法收敛到同一个解(凹函数只有一个最高点)——选哪个优化器只影响速度,不影响答案。牛顿法步数最少,但每步最贵;选项有几百万个时(例如给每条推文打分),只能用梯度类方法。Adam 在这种光滑的凸问题上没有优势,它的优势在神经网络那种大规模、随机梯度、非凸的问题(第 6 讲)。
4.6 条件数
代码 02 的演示 3 换成链式设计(只和邻居比):梯度上升从 70 步变成 1040 步,牛顿法反而只要 2 步。原因:梯度上升的收敛速度由条件数(最大曲率 / 最小非零曲率)决定,链式设计的代数连通度很小(第 3.3 节),最平缓的方向上每步只挪一点点;牛顿法用海森矩阵的逆矫正了各方向的曲率差异。比较的设计不只影响统计精度,也影响计算。
5. 在线学习:Elo = 随机梯度上升
5.1 推导
只用一条比较 计算梯度:,。沿这个方向走一步:
这正是国际象棋的 Elo 等级分(Arpad Elo,1960 年代起被美国国际象棋联合会、国际棋联采用), 就是步长。 是”惊讶程度”:爆冷门时更新得多,意料之中时几乎不动;更新是零和的(一方加多少,另一方就减多少)。国际象棋的 Elo 分 = 自然对数单位的分数 × ,所以国际象棋常用的 分相当于这里的 。
Elo 不需要存下所有比赛,来一场算一场,每场 的计算——非常适合比赛源源不断的场景。
5.2 K 的权衡
代码 03_elo_online.py 的演示 1:20 位选手、20000 场比赛,估计分数和真实分数的均方根误差(Elo 分):
| 方法 | 第 500 场 | 第 2000 场 | 第 5000 场 | 第 20000 场 |
|---|---|---|---|---|
| Elo, | 149 | 113 | 68 | 16 |
| Elo, | 105 | 39 | 28 | 29 |
| Elo, | 59 | 32 | 57 | 52 |
| Elo, | 97 | 80 | 90 | 81 |
| 最大似然(全部历史) | 59 | 28 | 21 | 11 |
小:追得慢,但最后很稳。 大:很快追上,之后一直大幅抖动——太相信最近的一场比赛。最大似然每次都用全部历史重新拟合,在每个时刻都几乎最好。国际象棋联合会给新棋手大的 (快速定级)、给老棋手小的 (稳定),正是这个权衡。
5.3 顺序依赖
代码 03 的演示 2:同样的 3000 场比赛,随机打乱顺序 5 次分别跑 Elo(),各选手分数的极差平均有 105 分;最大似然打乱前后的差别是 。Elo 依赖顺序(最近的比赛影响最大),最大似然只依赖胜负表。对模型排行榜来说这是个实际问题:模型的实力在评估期间不变,没有理由让后来的投票比先来的更重要。LMSYS 在 2023 年 12 月把 Chatbot Arena 的排行榜从在线 Elo 改成了 BT 最大似然(加自助法置信区间),理由正是稳定性。
5.4 逐渐变小的步长
如果让 满足 Robbins–Monro 条件 、(例如 ),随机梯度上升会收敛到批量的最优解。代码 03 的演示 3:同一份 40000 场比赛的数据处理两遍,和最大似然的均方根距离:固定 时 47.4 分,固定 时 11.0 分, 时 5.7 分。Elo 和最大似然不是两种模型,而是同一个模型的两种优化方法。
5.5 实力会变
代码 03 的演示 4:选手 0 的实力从 −1 线性增长到 +2。比赛结束时他的相对分(Elo 分):真实 328;Elo( = 0.02 / 0.1 / 0.3)235 / 298 / 328;最大似然(全部历史)只有 51;最大似然(只用最近 2000 场)251。最大似然假设实力不变,把全部历史平均起来;Elo 天然地”遗忘”旧比赛。更系统的做法是把”实力随时间变化”写进模型(Glicko、TrueSkill),这需要贝叶斯的工具(第 6 讲)。偏好也会随时间漂移(用户口味、模型版本),奖励模型和排行榜需要决定”记住多久”。
6. 不确定性与正则化
6.1 标准误
数据足够多时,最大似然估计近似服从正态分布,协方差约等于负的总海森矩阵的逆(第 7 讲会讲它和 Fisher 信息的关系)。BT 的海森矩阵奇异,用伪逆(“平均值为 0”的约束)。 的标准误是 。
代码 01 的演示 4(10 个选项、每次 600 条比较、重复 300 次实验,关心 ,真实值 −2.00):估计值的实际标准差 0.316,公式给出的标准误 0.301,自助法 0.332——三者基本一致;95% 置信区间包含真值的比例 95.0%。估计值的平均是 −2.049,绝对值略大于真值:最大似然在小样本下有轻微的”往外推”的偏差(第 4 讲附带参数问题的温和版本),L2 正则化会把它往回拉。
6.2 过拟合与 L2 正则化
数据少、选项多时,最大似然会过拟合。代码 04_regularization_cv.py 的演示 1:60 个选项,只有 300 条训练比较(平均每个选项 10 场),其中 2 个选项一场都没输过:
| λ | 训练损失 | 测试损失 | 和真实分数的误差 | 最大的分数 |
|---|---|---|---|---|
| 0.399 | 0.732 | 1.371 | 6.48 | |
| 0.0003 | 0.405 | 0.649 | 0.855 | 3.51 |
| 0.001 | 0.421 | 0.606 | 0.613 | 2.46 |
| 0.003 | 0.457 | 0.586 | 0.534 | 1.64 |
| 0.01 | 0.526 | 0.602 | 0.672 | 0.93 |
| 0.1 | 0.655 | 0.671 | 0.938 | 0.20 |
| (真实分数) | 0.492 | 0.538 | 0 | 2.18 |
λ 很小:训练损失最低、测试损失最高,全胜的选项分数被推到 6.48——过拟合(方差大)。λ 很大:分数被压向 0——欠拟合(偏差大)。中间有一个最好的 λ。
6.3 L2 正则化 = 高斯先验
为什么最好的 λ 恰好在 0.003 附近?给每个分数一个高斯先验 ,最大后验估计(MAP)的目标是
所以 L2 正则化就是高斯先验下的 MAP,先验方差 取真实分数的方差最合适:,和实验吻合。第 6 讲把这个想法推到底:不只要”最可能的”分数,而要整个后验分布。
6.4 提前停止
代码 04 的演示 2:不加正则化,从 开始做梯度上升,测试损失在第 1、5、20、100、1000 步分别是 0.631、0.586、0.625、0.701、0.743——先降后升,第 5 步左右最低,正好等于最好的 L2 正则化。原因:从 0 出发的梯度上升,前几步主要学到”数据最确定的方向”(曲率大的方向),后面才慢慢去拟合不确定的方向;提前停止相当于没让它走完。训练神经网络奖励模型时,提前停止是最常用的正则化手段之一——很多奖励模型只训练一个周期就停(InstructGPT 的奖励模型训练一个周期,部分原因就是第 2 讲提到的过拟合)。
7. 模型选择:交叉验证
7.1 折交叉验证
λ 不能用测试集来选(那等于偷看答案)。 折交叉验证:把训练数据分成 份,轮流用 份训练、1 份验证,取 个验证损失的平均。代码 04 的演示 3(同样的设定,5 折):
| λ | 交叉验证损失 | (各折的标准差) | 测试损失 |
|---|---|---|---|
| 0.001 | 0.677 | 0.064 | 0.620 |
| 0.003 | 0.633 | 0.044 | 0.608 |
| 0.01 | 0.626 | 0.022 | 0.620 |
| 0.03 | 0.639 | 0.012 | 0.649 |
交叉验证选出 λ = 0.01,事后看测试集最好的是 0.003,两者相邻,测试损失只差 0.012。注意各折的标准差不小:差别小于一个标准差的几个 λ 其实分不出好坏。
划分的单位:这里每条比较独立,按条划分。数据有分组(同一次排序、同一个提示词、同一个标注员)时要按组划分(第 2 讲第 3.5、5.7 节),否则交叉验证会过于乐观。
7.2 挑选之后的乐观
代码 04 的演示 4:只有 150 条训练比较,重复 30 次实验,比较”交叉验证损失 − 真正的测试损失”:
| 做法 | 平均差值 | 交叉验证偏乐观的实验比例 |
|---|---|---|
| 事先固定 λ = 0.003(不挑) | +0.037 | 33% |
| 在 12 个 λ 里挑交叉验证最好的 | −0.010 | 57% |
不挑时,交叉验证偏悲观(每折只用 4/5 的数据训练,模型比用全部数据的差一点)。从 12 个候选里挑出”交叉验证损失最低”的那个,很可能挑中的是”碰巧被低估得最多”的那个——挑选把分数往乐观的方向推了 0.047,超过了原来的悲观偏差。这和”考了 12 次挑最高分”是一回事;候选越多、数据越少,推得越厉害。
正确的做法:另留一个从没参与选择的测试集,最后只用一次;或者用嵌套交叉验证(外层估计性能、内层选超参数;Cawley & Talbot 2010)。“在测试集上反复调参、最后报告测试集上的分数”是论文和项目里最常见的评估错误之一——这正是第 1 讲”预分析计划”要防止的分岔小径。
8. 评估:排序、概率、校准
8.1 几种指标
| 指标 | 衡量什么 | 瞎猜时 |
|---|---|---|
| 准确率 | 时预测对不对 | 0.5 |
| AUC | 随机挑一个 和一个 ,模型给前者的概率更高的比例(排序质量) | 0.5 |
| 对数损失 | (概率的准确性) | 0.693 |
| Brier 分数 | 0.25 | |
| ECE(期望校准误差) | 把预测分段,比较每段的”平均预测”和”实际比例” | — |
对数损失和 Brier 分数都是恰当评分规则(第 1 讲第 3.1 节):只有如实报告概率,期望得分才最好。
8.2 上限、过度自信与温度缩放
代码 05_evaluation_metrics.py 的演示 1、2(40 个选项、4000 条训练比较、40000 条测试比较):
| 模型 | 准确率 | AUC | 对数损失 | Brier | ECE |
|---|---|---|---|---|---|
| 真实分数(上限) | 0.743 | 0.821 | 0.518 | 0.173 | 0.003 |
| 最大似然估计 | 0.739 | 0.816 | 0.526 | 0.176 | 0.012 |
| 过于自信(分数 × 2) | 0.739 | 0.816 | 0.618 | 0.190 | 0.111 |
| 过于保守(分数 × 0.4) | 0.739 | 0.816 | 0.571 | 0.192 | 0.117 |
| 过于自信 + 温度缩放(T = 2.30) | 0.739 | 0.816 | 0.525 | 0.175 | 0.012 |
- 上限:即使知道真实分数,准确率也只有 74%,AUC 只有 0.82——两个实力接近的选项,结果本来就接近抛硬币。“准确率不高”不一定是模型不好,先看上限在哪里(教材:Bayes 最优的 AUC 也小于 1)。
- 排序 vs 概率:把分数乘以 2 或 0.4,排序完全不变,准确率和 AUC 一模一样;对数损失、Brier、ECE 都变差了。可靠性表显示,过于自信的模型说”90% 以上”时实际只有 85% 左右是对的,说”10% 以下”时实际有 15% 左右。只看准确率 / AUC 发现不了概率的问题;只看对数损失又分不清是”排序错了”还是”太自信了”。所以要同时报告排序指标和概率指标。
- 温度缩放(Guo 等 2017):在验证集上找一个数 ,把分数整体除以 。排序不变,校准恢复。找到的 比 2 稍大,顺便修正了最大似然本身轻微的过度自信。
概率为什么重要?RLHF 里奖励模型的分数差直接决定了策略往哪边推、推多大力();过于自信的奖励模型会让策略过度相信它,加剧过度优化(第 8 讲)。
9. 案例:LLM 偏好数据里的两种噪声
9.1 设定
教材第 2.9 节的设定:50 个 LLM 回答,每个有一个 8 维嵌入 ;真实效用是 ;200 条比较,约 10% 的标签被翻转。用线性 BT(特征差上的逻辑回归,第 2 讲第 5.2 节)拟合。代码 05 的演示 3 比较两种翻转(各重复 200 次):
- 随机噪声:每条比较以 10% 的概率被翻转(标注员偶尔点错)。
- 系统性噪声:当输家在第 0 维(想象成”长度”)上更大时,以 20% 的概率把它判成赢家(标注员偏爱长回答)。实际翻转比例和随机噪声差不多(9.7%)。
| 设定 | 权重的余弦相似度 | 效用排名的相关 | 第 0 维权重的偏差 | 权重的长度比 |
|---|---|---|---|---|
| 没有噪声 | 0.983 | 0.980 | −0.007 | 1.06 |
| 随机噪声 10% | 0.958 | 0.957 | −0.117 | 0.53 |
| 系统性噪声 | 0.919 | 0.918 | +0.424 | 0.59 |
- 随机噪声:方向几乎不变,但权重整体变短了一半——模型把”标签有时是反的”解释成”差距没那么大”。排序基本不受影响,概率变得过于保守(又是校准问题)。
- 系统性噪声:翻转比例差不多,可它们有方向:第 0 维(“长度”)的权重被系统性地抬高。模型学到了”标注员喜欢长回答”,而不是”长回答更好”——这正是第 1 讲众包标注员的长度偏差。
- 教训:随机噪声主要是”数据少了一点”,多收集就能弥补;系统性噪声是偏差,数据再多也消除不了(第 1 讲代码 03 演示 5),必须在建模(第 14 讲的风格控制)或数据收集上处理。
9.2 DPO 就是 BT 的最大似然
第 1 讲的 DPO 损失
正是 BT 的负对数似然,只是”分数”换成了 。所以本讲的一切都直接适用(教材第 2.9.3 节):梯度是”残差 × 分数的梯度”,正则化防止过拟合,Adam 和学习率调度加速训练,交叉验证选 和学习率,校准影响下游行为。第 9 讲会详细推导;也会看到这个类比的隐藏假设:恢复出的奖励依赖于参考策略,偏好被假设服从 BT, 控制对参考策略的忠实程度。
10. 小结
- 最大似然:选让观察到的数据最可能出现的参数。两个选项时 :让预测胜率等于观察到的胜率。
- 梯度 = 实际胜场 − 预期胜场(矩匹配);海森矩阵 = 负的加权图拉普拉斯:凹(一个最高点)、一个零特征值(平移不变)、代数连通度决定精度。Zermelo–Ford 条件保证最高点不在无穷远。
- 优化:梯度上升(步长 保证收敛,太大发散)、牛顿法(二次收敛、每步贵)、MM(实力 = 胜场 / 预期机会,单调、无步长)、Adam(神经网络的默认)。都收敛到同一个解;条件数(比较设计)决定梯度类方法的速度。
- Elo = 随机梯度上升: 是步长,权衡适应速度和稳定性;依赖顺序(最大似然不依赖);Robbins–Monro 步长下收敛到最大似然;实力会变时 Elo 能跟上。
- 不确定性与正则化:标准误 ≈ 负海森矩阵逆的对角线,置信区间覆盖率约 95%。L2 正则化 = 高斯先验的 MAP,最好的 ;提前停止有类似效果。
- 交叉验证按独立单元划分;挑选之后的交叉验证分数偏乐观,要留独立的测试集或用嵌套交叉验证。
- 评估:排序指标(准确率、AUC)和概率指标(对数损失、Brier、ECE)衡量不同的东西;指标有由噪声决定的上限;温度缩放修复校准。
- 两种噪声:随机噪声让权重整体变短(可以用数据弥补),系统性噪声让权重有方向地偏(数据弥补不了)。DPO 就是 BT 的最大似然。
11. 与测验、口试和项目的关系
- 测验与口试可能会问:推导 BT 的梯度,解释”矩匹配”;为什么 BT 的对数似然是凹的;为什么海森矩阵有一个零特征值;推导 Elo 更新;Elo 和最大似然各适合什么场景;L2 正则化和高斯先验的关系;准确率高但对数损失差说明什么;为什么不能在测试集上调参。
- 期末项目:本讲是几乎所有项目的”基础设施”。写预分析计划时要说明:用什么优化器和收敛标准;正则化强度怎么选(交叉验证的划分单位);报告哪些指标(至少一个排序指标 + 一个概率指标)、置信区间怎么算;测试集什么时候、用几次。
12. 练习
练习 1(计算)。两个选项, 赢 30 次、输 10 次。 (a) 求 和它的标准误。 (b) 如果 赢 40 次、输 0 次呢?
参考答案
(a) 。,曲率 ,标准误 。 (b) :最大似然不存在(Zermelo–Ford 条件不满足)。需要正则化(相当于先验,例如加上”各有 0.5 场”的伪计数得到 ),或者贝叶斯方法(第 6 讲)。
练习 2(推导)。 (a) 证明 BT 对数似然的梯度各分量之和为 0()。 (b) 证明在最大似然估计处,每个选项的预期胜场等于实际胜场。
参考答案
(a) 每条比较对 贡献 ,对 贡献 ,加起来为 0;所有比较的贡献相加仍为 0。 (b) 最大似然处梯度为 0:。整理:。左边是 实际赢的场数,右边是模型预期 赢的场数。
练习 3(证明)。证明 BT 对数似然的海森矩阵半负定。什么时候它(在”平均值为 0”的子空间上)是负定的?
参考答案
对任意 ,()。等号成立 ⇔ 每条比较的两端 值相等 ⇔ 在比较图的每个连通分量上是常数。所以比较图(无向)连通时,零空间只有全 1 向量,在”平均值为 0”的子空间上负定。
练习 4(Elo)。 (a) 从单条比较的对数似然推导 Elo 更新。 (b) 国际象棋常用 (Elo 分)。换成本讲的自然对数单位,步长是多少? (c) 一位 1500 分的棋手赢了一位 1700 分的棋手, 时他的分数增加多少?
参考答案
(a) ,对 求导得 ,对 求导得相反数。沿梯度走步长 。 (b) Elo 分 = 自然单位 × 173.7,所以 。 (c) 预测胜率 。增加 分;对手减少同样多。
练习 5(MAP)。目标函数写成”平均对数似然 “,证明它等价于先验 下的 MAP。如果数据量 翻倍、 不变,相当于先验怎样变化?
参考答案
MAP 最大化 。除以 :。令 即得,。 翻倍、 不变,相当于先验方差减半——先验变”强”了。所以用”平均”写法时,数据越多,λ 应该越小()才保持同样的先验;用交叉验证选 λ 时,要在和最终训练相同的数据规模下选(这也是交叉验证偏悲观的原因之一)。
练习 6(校准)。一个奖励模型对 200 对回答都给出”A 更好的概率 0.9”,其中 A 实际更好的有 144 对。 (a) 这一段的校准误差是多少?模型是过于自信还是过于保守? (b) 如果所有预测都在这一段,用温度缩放能修好吗?需要 大于 1 还是小于 1?
参考答案
(a) 实际比例 144/200 = 0.72,预测 0.9,误差 0.18,过于自信。 (b) 能:需要把 0.9 拉回 0.72。;,。
练习 7(交叉验证)。你有 500 个提示词,每个提示词有 4 个回答的排序(拆成 6 对比较),要用交叉验证选奖励模型的正则化强度,再报告它在新提示词上的准确率。设计你的评估流程。
参考答案
先按提示词留出一个测试集(例如 100 个提示词),在最后只用一次。在剩下的 400 个提示词上做按提示词分组的 5 折交叉验证选 λ(同一个提示词的 6 对比较必须在同一折)。选好 λ 后用全部 400 个提示词重新训练,在 100 个测试提示词上报告准确率(以及对数损失、ECE),用按提示词重抽样的自助法给置信区间。如果还要比较多个模型结构,用嵌套交叉验证或再留一个验证集,避免”挑选之后的乐观”。
练习 8(DPO 预告)。DPO 的”分数”是 。利用本讲 BT 梯度的形式,写出 DPO 损失对 的梯度,并解释它的直觉。
参考答案
令 。 对 的导数是 。所以 。 直觉:和 BT 的”残差”一样, 是”模型认为输家会赢的概率”——模型把这对排错得越厉害,更新越大;更新的方向是”提高赢家的对数概率、降低输家的对数概率”。第 9 讲会详细讨论。
13. 延伸阅读
课程教材
- Truong, Haupt, Koyejo. Machine Learning from Human Preferences. 第 2 章 2.2–2.10 节。
Bradley–Terry 的最大似然
- Zermelo. Die Berechnung der Turnier-Ergebnisse als ein Maximumproblem der Wahrscheinlichkeitsrechnung. 1929.
- Ford. Solution of a Ranking Problem from Binary Comparisons. 1957.
- Hunter. MM Algorithms for Generalized Bradley-Terry Models. Annals of Statistics 2004.
- Shah et al. Estimation from Pairwise Comparisons: Sharp Minimax Bounds with Topology Dependence. JMLR 2016.(比较图的拓扑怎样决定估计误差)
在线学习与等级分
- Elo. The Rating of Chessplayers, Past and Present. 1978.
- Glickman. Parameter Estimation in Large Dynamic Paired Comparison Experiments. Applied Statistics 1999.(Glicko)
- Herbrich, Minka, Graepel. TrueSkill: A Bayesian Skill Rating System. NeurIPS 2006.
- Robbins, Monro. A Stochastic Approximation Method. 1951.
优化与正则化
- Kingma, Ba. Adam: A Method for Stochastic Optimization. 2014.
- Hastie, Tibshirani, Friedman. The Elements of Statistical Learning. 第 3、7 章(正则化、模型选择与交叉验证)。
- Cawley, Talbot. On Over-fitting in Model Selection and Subsequent Selection Bias in Performance Evaluation. JMLR 2010.
评估与校准
- Gneiting, Raftery. Strictly Proper Scoring Rules, Prediction, and Estimation. JASA 2007.
- Guo, Pleiss, Sun, Weinberger. On Calibration of Modern Neural Networks. ICML 2017.(温度缩放)
14. 下一讲预告
本讲的最大似然给出一个最好的估计,再用海森矩阵近似它的不确定性。可是:数据很少时(一个新模型只打了几场全胜),正态近似不可靠;我们真正想要的往往是”对偏好的不确定性”本身——知道哪里不确定,才知道下一个问题该问什么(第 7 讲),才知道该探索还是利用(第 11~13 讲)。
第 6 讲讲贝叶斯估计与微调:
- 贝叶斯 BT:先验 + 似然 → 后验;用 Metropolis–Hastings 采样得到后验分布,学会看诊断(多条链、接受率);拉普拉斯近似(用最大值处的海森矩阵近似整个后验——本讲的标准误就是它)。
- 高斯过程偏好学习:当效用是特征的未知非线性函数时,怎样做非参数的贝叶斯推断。
- 微调:在预训练的语言模型上加一个”打分头”,训练真正的神经网络奖励模型;过拟合、提前停止、奖励模型集成(量化不确定性的实用办法)。代码会用 PyTorch(CPU 即可)。