第 6 讲:贝叶斯估计与微调

Machine Learning from Human Preferences · Lecture 06。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应:Stanford CS329H Fall 2026 Lecture 6(10/12 Bayesian estimation & finetuning)。依据教材第 2 章(贝叶斯推断、MCMC、拉普拉斯近似、高斯过程偏好学习、LLM 奖励模型)及第 2 章幻灯片;MCMC 诊断依据 Gelman 等的 Bayesian Data Analysis 和 Vehtari 等(2021);GP 偏好学习依据 Chu & Ghahramani(2005);奖励模型的训练细节依据 InstructGPT(Ouyang 等 2022)和 Llama 2(Touvron 等 2023)的论文。 配套代码:code/lecture06/(numpy;05、06 号文件需要 PyTorch,CPU 即可) 预计阅读时间:3~4 小时(含运行代码)


0. 本讲导航

0.1 学完本讲,你应该能够

  1. 写出贝叶斯 BT 模型的先验、似然和后验;从后验得到 MAP、后验均值、可信区间、“a 比 b 强”的概率和后验预测,并解释它们和最大似然的区别。
  2. 说出先验在什么时候重要、什么时候不重要;解释”可信区间在先验正确时校准”的含义和边界。
  3. 实现随机游走 Metropolis–Hastings,解释它为什么只需要”未归一化的后验”;会用接受率调步长,用 R^\hat R 和有效样本数(ESS)诊断收敛。
  4. 推导拉普拉斯近似,说出它和第 5 讲标准误的关系,以及它在什么时候不准(后验偏斜)。
  5. 用后验样本回答排行榜的问题:“谁是第一”的概率、排名的可信区间。
  6. 解释高斯过程偏好学习:核函数表示什么先验,为什么它在没有数据的地方”知道自己不知道”,怎样用边际似然选超参数。
  7. 说出在预训练模型上训练奖励模型的几种方式(从零、线性探针、全量微调、先探针再微调、参数高效微调)的取舍;解释”微调扭曲预训练特征”,以及为什么奖励模型通常只训练 1 个 epoch。
  8. 用奖励模型集成表示不确定性;识别”原始分歧”的陷阱;说出集成怎样缓解(但不能消除)奖励过度优化。

0.2 先修知识

知识点用在哪里最低要求
第 5 讲全部BT 的梯度与海森矩阵、标准误、L2 正则化 = 高斯先验的 MAP
概率第 2~4 节条件概率、贝叶斯公式、正态分布
线性代数第 3~5 节协方差矩阵、特征值;Cholesky 分解不需要预先会
PyTorch第 6、7 节不需要预先会;text_world.py 开头有集中说明

0.3 本讲地图

第1节  为什么要“分布”而不是“一个数”
第2节  贝叶斯 BT:先验、后验、预测                           ← 代码 01
第3节  MCMC:Metropolis–Hastings 与诊断                       ← 代码 02
第4节  拉普拉斯近似;用后验回答排行榜的问题                     ← 代码 03
第5节  高斯过程偏好学习                                       ← 代码 04
第6节  微调:在预训练模型上训练奖励模型                         ← 代码 05
第7节  奖励模型集成:一个实用的不确定性                         ← 代码 06
第8–12节 小结、与考核的关系、练习、延伸阅读、下一讲预告

0.4 关于数字

本讲引用的实验数字都来自配套代码的实际运行(随机种子固定)。真实论文里的数字(InstructGPT、Llama 2 等)单独标出,不和模拟结果混用。玩具实验说明不了的事,会在【边界】里写明。


1. 为什么要”分布”而不是”一个数”

第 5 讲的最大似然给出一个最好的分数,再用海森矩阵近似它的标准误。这在数据多的时候很好用。可是偏好学习里,下面这些情形天天发生:

  • 新模型上榜:一个新模型只比了 3 场,3 场全胜。最大似然说它比对手强 +∞+\infty(第 5 讲练习 1)。我们想要的回答是:“它大概比对手强 1.4 左右,但也可能只强一点点,甚至更弱。”
  • 谁是第一:排行榜前三名的分数只差 0.1。“第一名”有多大把握真的是第一?
  • 下一个问题问什么:标注预算有限,应该把问题花在”已经很确定”的地方,还是”还不确定”的地方?(第 7、10~13 讲)
  • 奖励模型靠不靠得住:RLHF 里策略会生成各种奇怪的回答,奖励模型在没见过的回答上打的分可信吗?(第 8 讲)

这些问题都要求我们表示对偏好的不确定性。贝叶斯方法把不确定性写成一个概率分布:在看到数据之前,我们对参数有一个看法(先验);看到数据之后,用贝叶斯公式更新这个看法(后验)。后验不是一个数,而是”每个可能的值有多可信”。

本讲的后半部分转向一个工程问题:真实的奖励模型有几十亿个参数,是在预训练语言模型上微调出来的。我们会看到预训练带来了什么、怎样微调、以及在这种规模下最实用的”不确定性”——集成。


2. 贝叶斯 BT:先验、后验、预测

2.1 贝叶斯公式

直觉:后验 = “数据出现之前我信什么” × “如果参数是这样,数据有多可能出现”,再归一化。

p(s∣D)=p(s) p(D∣s)p(D)∝p(s)⏟先验∏nσ(±(sin−sjn))⏟似然p(s \mid \mathcal{D}) = \frac{p(s)\, p(\mathcal{D} \mid s)}{p(\mathcal{D})} \propto \underbrace{p(s)}_{\text{先验}} \prod_{n} \underbrace{\sigma\big(\pm(s_{i_n} - s_{j_n})\big)}_{\text{似然}}

本讲用最简单的先验:每个分数独立地服从 N(0,τ2)N(0, \tau^2)。τ\tau 表达”分数大概在多大范围内”:τ=1\tau = 1 意味着两个选项的差距大多在 ±3\pm 3 以内(胜率在 5%~95% 之间)。

分母 p(D)=∫p(s) p(D∣s) dsp(\mathcal{D}) = \int p(s)\,p(\mathcal{D} \mid s)\,ds 是一个 MM 维积分,叫边际似然或证据。它通常算不出来——本讲的三种方法(网格、MCMC、拉普拉斯近似)都是绕开它的办法。

和第 5 讲的关系。取对数:

log⁡p(s∣D)=∑nlog⁡σ(⋯ )−∥s∥22τ2+常数\log p(s \mid \mathcal{D}) = \sum_n \log\sigma(\cdots) - \frac{\lVert s\rVert^2}{2\tau^2} + \text{常数}

除以 NN 就是第 5 讲的”平均对数似然 −λ2∥s∥2- \frac{\lambda}{2}\lVert s\rVert^2”,λ=1/(Nτ2)\lambda = 1/(N\tau^2)。所以第 5 讲的 L2 正则化估计就是后验的最高点(MAP)。贝叶斯方法多做的事情是:不只要最高点,还要整个分布。

2.2 两个选项:精确的后验

只有两个选项时,未知参数只有一个 Δ=sa−sb\Delta = s_a - s_b(先验 N(0,2τ2)N(0, 2\tau^2),τ=1\tau = 1 时标准差 1.41)。把 Δ\Delta 的范围切成 8001 个格点,逐个算”先验 × 似然”再归一化,就得到精确的后验。代码 01_posterior_basics.py 演示 1 的结果:

数据(胜-负)MLEMAP后验均值后验标准差95% 可信区间P(Δ>0)预测下一场σ(MAP)
0-0任意0.0000.0001.414[−2.77, +2.77]0.5000.5000.500
1-0+∞0.6750.7261.213[−1.62, +3.16]0.7250.6370.663
3-0+∞1.2931.4171.030[−0.50, +3.55]0.9230.7640.785
7-30.8470.6880.7380.629[−0.45, +2.02]0.8840.6630.665
70-300.8470.8280.8370.216[+0.42, +1.27]1.0000.6960.696
700-3000.8470.8450.8460.069[+0.71, +0.98]1.0000.7000.700

几个值得慢慢看的地方:

  1. 3-0 不再发散。最大似然是 +∞+\infty,后验给出一个有限、合理的答案:差距大概在 1.4 左右,“a 更强”的把握约 92%。
  2. MAP ≠ 后验均值。3-0 的后验是偏斜的:左边被”已经赢了 3 场”挡住,右边拖着一条长尾(代码里有横条图)。最高点 1.29,均值 1.42。数据越多,后验越对称,两者越接近。
  3. 7-3 时 MAP 比 MLE 小(0.688 vs 0.847):先验把估计往 0 拉(“收缩”)。数据到 700-300 时,拉力几乎消失。
  4. 后验预测。“下一场 a 赢的概率”有两种算法:贝叶斯的做法是对所有可能的 Δ\Delta 求平均 E[σ(Δ)]E[\sigma(\Delta)];“插入”的做法是只用一个点估计 σ(MAP)\sigma(\text{MAP})。数据少时前者更保守(3-0:0.764 vs 0.785)——它把”我们还不确定 Δ\Delta“也算进了预测。数据多时两者一样。

名词:可信区间(credible interval)是后验分布的区间:“给定数据,参数有 95% 的概率落在这里”。第 5 讲的置信区间(confidence interval)是频率学派的说法:“如果重复实验很多次,这样构造的区间有 95% 会覆盖真值”。两者问的问题不同,第 2.5 节会看到它们什么时候一致。

2.3 先验有多重要

演示 2 对 3-0、7-3、70-30 三种数据,换了五种先验标准差:

数据先验 0.51.01.413.010.0
3-0 后验均值0.320.921.423.015.27
70-30 后验均值0.720.820.840.850.86

数据少时,结论主要由先验决定;数据多时,先验几乎不重要。 这既是贝叶斯方法的优点(小数据时给出合理答案),也是它常被批评的地方(“结论取决于你的先验”)。实践中的两条原则:

  • 先验要有依据。例如”排行榜上两个模型的胜率很少超过 95%“,即 ∣Δ∣<3|\Delta| < 3,对应 τ\tau 约为 1。先验标准差 10 意味着”差距可能大到 10(胜率 99.995%)“,这本身就不合理——“没有信息”的先验并不存在,宽得离谱的先验也是一种很强的主张。
  • 做敏感性分析:换几个合理的先验,报告结论变不变。

2.4 逐条更新

贝叶斯更新可以一条一条地做:今天的后验就是明天的先验。演示 3 逐条加入 400 场比赛,最终的后验和一次性计算的完全一样(差 10−1310^{-13},只是浮点误差),后验标准差按 1/n1/\sqrt{n} 缩小(“标准差 × n\sqrt n“稳定在 2.1~2.2,即 1/p(1−p)1/\sqrt{p(1-p)})。

这正是在线评分系统 TrueSkill(Herbrich 等 2006,Xbox 的匹配系统)和 Glicko(Glickman 1999)的思路:和 Elo 一样逐场更新,但每个选手除了一个”分数”,还有一个”不确定性”。新选手的不确定性大,一场比赛就能让分数大幅变动;老选手的不确定性小,分数很稳。Elo 的固定 KK 因子做不到这一点(第 5 讲第 5.2 节的权衡)。

2.5 可信区间准不准

演示 4 问:90% 的可信区间真的会覆盖真值 90% 吗?每次实验比 10 场;因为后验只依赖”赢了几场”(11 种可能),覆盖率可以精确算出来:

真实 Δ精确后验区间拉普拉斯区间
固定为 0.00.8910.891
固定为 0.50.8980.951
固定为 1.00.8980.898
固定为 2.00.8930.893
固定为 3.00.6150.615
固定为 4.00.0000.000
按先验随机抽取(平均)0.9010.884

为什么最后一行正好是 90%? 如果真值确实是从先验里抽出来的,那么”给定数据、参数落在区间里的后验概率是 90%“对所有数据都成立,对数据求平均,覆盖率就是 90%。这是贝叶斯推断的自洽性:先验对了,后验的概率说法就是校准的。Cook、Gelman、Rubin(2006)正是用这一点检查采样软件有没有写错。

为什么 Δ = 4 时是 0? 只比 10 场,即使 10 场全胜,先验也把估计往 0 拉得太厉害,区间的上界够不着 4。这就是先验的代价:对”先验认为很少见”的真值有系统性偏差,换来的是小数据时不发散、方差更小。先验错了,区间就会系统性地偏。


3. MCMC:Metropolis–Hastings 与诊断

3.1 为什么网格不够用

两个选项时网格有 8001 个点。8 个选项时,每个维度哪怕只取 100 个点,也要 1008=1016100^8 = 10^{16} 个点——算不动。这就是维数灾难。

马尔可夫链蒙特卡洛(MCMC)换了一个思路:不去算后验在每一点的值,而是从后验里抽样本,再用样本回答问题。均值就是样本的平均,区间就是样本的分位数,“谁是第一”的概率就是”在多少比例的样本里它排第一”。

3.2 Metropolis–Hastings

随机游走 Metropolis(Metropolis 等 1953;Hastings 1970 推广)的每一步:

  1. 从当前位置 xx 提议一个新位置 x′=x+步长×εx' = x + \text{步长} \times \varepsilon,ε∼N(0,I)\varepsilon \sim N(0, I);
  2. 计算接受率 α=min⁡(1, p(x′∣D)/p(x∣D))\alpha = \min\big(1,\ p(x' \mid \mathcal{D}) / p(x \mid \mathcal{D})\big);
  3. 以概率 α\alpha 移到 x′x',否则留在 xx(留在原地也要记一次样本)。

直觉:往后验更高的地方走,总是接受;往更低的地方走,只是”有时”接受。所以链会在后验高的地方多待、低的地方少待,但不会永远困在最高点——这就是它能描出整个分布、而不只是找到最高点的原因。

为什么只需要”未归一化的后验”? 接受率里只有两个后验的比值,难算的 p(D)p(\mathcal{D}) 正好消掉。这是 MCMC 能工作的关键。

为什么它是对的? 这个规则满足细致平衡:p(x) T(x→x′)=p(x′) T(x′→x)p(x)\,T(x \to x') = p(x')\,T(x' \to x)(练习 3)。满足细致平衡的链,长期来看在每个位置停留的比例就是 pp。

演示 1 用 MH 采样代码 01 的 3-0 后验:均值 1.423(精确值 1.417),5%、50%、95% 分位数都对得上。但 55000 个样本只”相当于”约 11000 个独立样本——这引出了 MCMC 的核心问题:样本是相关的。

3.3 步长、接受率与有效样本数

有效样本数(ESS):相邻样本相关时,nn 个样本的平均值的方差比 nn 个独立样本大,

Var(xˉ)≈σ2n(1+2∑t≥1ρt),ESS=n1+2∑t≥1ρt\text{Var}(\bar x) \approx \frac{\sigma^2}{n}\Big(1 + 2\sum_{t \ge 1}\rho_t\Big), \qquad \text{ESS} = \frac{n}{1 + 2\sum_{t\ge 1}\rho_t}

ρt\rho_t 是相隔 tt 步的样本之间的自相关。蒙特卡洛误差 ≈ 标准差 / ESS\sqrt{\text{ESS}}。

演示 2:8 个选项、60 条比较,4 条链 × 5000 步,换六种步长(ESS 和 R^\hat R 对”减去平均值之后”的分数计算,取最差的那个):

步长接受率最小 ESS最大 R^\hat R
0.020.9532.025
0.100.79831.046
0.300.464291.013
0.600.154821.017
1.500.0191.266
4.000.0024.005
  • 步长太小:几乎每步都接受,但每步只挪一点点,16000 个样本只相当于 3 个独立样本。
  • 步长太大:提议的点大多落在后验很低的地方,几乎都被拒绝,链原地不动。
  • 中间最好。理论上,对高维正态目标的随机游走 Metropolis,最优接受率约为 0.234(Roberts、Gelman、Gilks 1997),一维时约为 0.44。接受率高不等于采样好:它只是调步长的参考,真正要看 ESS。

3.4 诊断:多条链与 R^\hat R

一条链”看起来稳定了”,可能只是困在某个区域。标准做法是从几个分散的起点各跑一条链,比较”链之间”和”链内部”的差异——这就是 R^\hat R(Gelman–Rubin 诊断):

R^=n−1nW+B/nW\hat R = \sqrt{\frac{\frac{n-1}{n}W + B/n}{W}}

WW 是链内方差的平均,B/nB/n 是各链均值的方差。各条链描的是同一个分布时 R^≈1\hat R \approx 1;有的链还没走到别的链去过的地方时,R^\hat R 明显大于 1。现代版本(Vehtari 等 2021)把每条链切成两半再算(能发现”一条链前后不一样”),并建议 R^<1.01\hat R < 1.01、ESS 至少几百才认为结果可用。

演示 3 从 N(0,42)N(0, 4^2) 里抽 4 个分散的起点:

链长不丢预热:最大 R^\hat R丢掉前一半:最大 R^\hat R丢掉前一半:最小 ESS
509.44911.3212
2002.6383.6073
10001.1511.12814
40001.0271.032173
80001.0091.013384

链要长到几千步,R^\hat R 才降到 1.01 附近。这个例子里起点几百步就被”忘掉”了,所以丢不丢预热差别不大;主要问题是链不够长。

R^≈1\hat R \approx 1 是必要条件,不是充分条件:如果所有链都困在同一个错误的区域,R^\hat R 也会接近 1。BT 的后验是对数凹的(只有一个峰,第 5 讲),这种风险很小;第 4 讲的因子模型(旋转、符号翻转造成多个峰)就要格外小心。

3.5 提议的形状

BT 的后验有一个特殊的方向:“所有分数一起加一个常数”不改变似然,只由先验约束。演示 4 用 600 条比较:差值被数据定得很准(方差 0.024),“平均值”方向只由先验约束(方差 1.0),两者差 41 倍。

提议方式步长接受率差值的最小 ESS平均值方向的 ESS
各向同性 x+步长⋅N(0,I)x + \text{步长} \cdot N(0, I)0.100.4835616
按拉普拉斯协方差 x+步长⋅Lzx + \text{步长} \cdot Lz0.840.27581602

各向同性的提议在每个方向走一样大的步子,步长要迁就最窄的方向,于是在宽的方向上寸步难行。先用拉普拉斯近似(第 4 节)得到后验的大致形状 Σ=LL⊤\Sigma = LL^\top,按这个形状提议(步长 2.38/M2.38/\sqrt{M},正态目标下的理论最优尺度),每个方向的步子都和它的宽度匹配。

这个思路推到极致就是哈密顿蒙特卡洛(HMC)和它的自适应版本 NUTS(Hoffman & Gelman 2014):用梯度信息让链”滑”过后验,维数高时比随机游走高效得多。Stan、PyMC、NumPyro 都默认用它。实际项目里不用自己写 MH——但懂了 MH,才看得懂这些工具的诊断输出。


4. 拉普拉斯近似;用后验回答排行榜的问题

4.1 思想

在后验的最高点 s^\hat s(MAP)做二阶泰勒展开:

log⁡p(s∣D)≈log⁡p(s^∣D)−12(s−s^)⊤A (s−s^),A=−∇2log⁡p(s∣D)∣s^\log p(s \mid \mathcal{D}) \approx \log p(\hat s \mid \mathcal{D}) - \frac{1}{2}(s - \hat s)^\top A\,(s - \hat s), \qquad A = -\nabla^2 \log p(s \mid \mathcal{D})\big|_{\hat s}

右边正是正态分布 N(s^,A−1)N(\hat s, A^{-1}) 的对数密度。所以拉普拉斯近似 = 最高点 + 最高点的曲率。代价只是一次优化(第 5 讲的牛顿法)加一次矩阵求逆,比 MCMC 便宜几个数量级。

第 5 讲的”标准误 = 负海森矩阵逆的对角线的平方根”就是拉普拉斯近似(没有先验的版本)。Bernstein–von Mises 定理说:数据足够多、模型正确时,后验趋于以 MLE 为中心、协方差为 Fisher 信息逆的正态分布——拉普拉斯近似在大样本下是对的,贝叶斯和频率学派的区间也趋于一致。

4.2 什么时候不准

代码 03_laplace_vs_mcmc.py 演示 1:先验 N(0,22)N(0, 2^2);5 个老模型之间有很多比较;新模型 0 和每个老模型各比 1 场,5 场全胜。

拉普拉斯均值MCMC 均值拉普拉斯 90% 区间MCMC 90% 区间
新模型 0(老模型之间 1500 条比较)1.9672.209[+0.25, +3.68][+0.66, +4.01]
新模型 0(老模型之间 40 条比较)2.1432.477[+0.44, +3.84][+0.84, +4.34]

老模型(数据多)两种方法的标准差几乎一样;新模型的后验偏斜,拉普拉斯以 MAP 为中心、左右对称,把均值低估了约 0.25~0.35,区间整体偏左。如果要回答”新模型的胜率至少是多少”(区间下界),拉普拉斯会给出过于悲观的答案。

实践建议:数据多、后验不偏斜时首选拉普拉斯;小样本、全胜 / 全负、或者要算尾部概率时,用 MCMC 检查一下。

4.3 排行榜:谁是第一?

后验样本最有用的地方,是回答那些”最大似然 + 标准误”很难直接回答的问题。演示 2:10 个模型、400 条比较(每个模型约 80 场),真实分数前几名很接近:

最大似然排名模型真实分数P(第一)P(前三)排名的 90% 区间
1M01.200.630.99[1, 3]
2M21.050.330.94[1, 4]
3M30.700.040.70[2, 4]
4M11.100.010.36[2, 5]
5M40.400.000.01[4, 6]

做法极其简单:对每个后验样本排一次序,数一数每个模型排第几。我们看到:

  • 最大似然排第一的 M0,只有约 63% 的把握真是第一。400 条比较不足以分出冠军。
  • 真实排第二的 M1 这次运气不好,最大似然把它排到第 4;但它排名的 90% 区间 [2, 5] 仍然包含真实名次。只报告名次,会误导读者。

Chatbot Arena 的排行榜就是这样做的:用自助法给每个模型的 BT 分数一个置信区间,报告”排名的上界”(有多少个模型显著地比它强),而不只是一个名次(Chiang 等 2024)。后验样本还是决策的工具:第 12 讲的 Thompson 采样就是”从后验里抽一个样本,按它行动”。

4.4 重复实验:区间的覆盖率

演示 3:6 个选项的真实分数从先验 N(0,1)N(0,1) 里抽,模拟 30 条比较,重复 300 次:

方法90% 区间的覆盖率平均宽度
MCMC0.9031.74
拉普拉斯近似0.8881.68
最大似然 ± 1.645 标准误0.929(只在 182 次能算的实验里)—
  • 先验正确时,MCMC 的区间覆盖率接近 90%;拉普拉斯也很接近——对 BT 这种对数凹的后验,正态近似通常不差。
  • 300 次里有 118 次最大似然根本不存在(有选项全胜 / 全负,或比较图不连通,第 2 讲第 4.2 节)。能算的那些是”挑过的”实验,不代表全部。先验在小数据时的价值就在这里:任何数据都能给出合理的答案。

5. 高斯过程偏好学习

5.1 从”每个选项一个分数”到”效用函数”

到目前为止,每个选项有一个独立的分数。第 2 讲的线性 BT 用特征把选项联系起来:s(x)=w⊤xs(x) = w^\top x。可很多偏好不是线性的:回答太短不好、太长也不好;温度太低呆板、太高胡说。我们想学一个未知的函数 f(x)f(x),又不想事先假设它的形状。

高斯过程(GP)是”函数上的先验”:它不说 ff 长什么样,只说相近的输入,效用相近。具体地,任意几个点上的效用 (f(x1),…,f(xG))(f(x_1), \ldots, f(x_G)) 服从多元正态 N(0,K)N(0, K),

Kab=k(xa,xb)=sf2exp⁡ ⁣(−(xa−xb)22ℓ2)K_{ab} = k(x_a, x_b) = s_f^2 \exp\!\Big(-\frac{(x_a - x_b)^2}{2\ell^2}\Big)

(RBF 核)。长度尺度 ℓ\ell 是”多远的两个点算不相关”:ℓ\ell 小,函数可以快速起伏;ℓ\ell 大,函数很平滑。sfs_f 是”效用一般在多大范围内变化”。

和本讲前半部分的关系:如果 K=τ2IK = \tau^2 I(不同的点完全不相关),GP 偏好学习就是第 2 节的贝叶斯 BT。GP 只是把”独立的先验”换成了”相关的先验”(练习 6)。

5.2 似然与推断

偏好数据的似然和 BT 一样:P(a≻b)=σ(f(xa)−f(xb))P(a \succ b) = \sigma(f(x_a) - f(x_b))(Chu & Ghahramani 2005 用的是 probit 版本,这里用 logistic)。后验不是正态的,用拉普拉斯近似:

  1. 白化:令 f=Lzf = Lz,K=LL⊤K = LL^\top(Cholesky 分解),z∼N(0,I)z \sim N(0, I)。先验变成了”每个分量独立的标准正态”,避免了求 K−1K^{-1}(KK 常常接近奇异)。
  2. 对 zz 做牛顿法:梯度 L⊤g−zL^\top g - z,海森 L⊤HL−IL^\top H L - I。其中 gg、HH 正是第 5 讲 BT 的梯度(实际胜场 − 预期胜场)和海森矩阵(负的加权图拉普拉斯)。
  3. 后验协方差 Cov(f)≈L(I−L⊤HL)−1L⊤\text{Cov}(f) \approx L(I - L^\top H L)^{-1}L^\top。

代码 04_gp_preference.py 的设定:x∈[0,1]x \in [0, 1] 是”回答长度”,真实效用有一个主峰(x≈0.3x \approx 0.3)和一个小峰(x≈0.78x \approx 0.78);292 条比较全部在 x≤0.6x \le 0.6 的范围内(数据收集时没生成过很长的回答)。

模型x≤0.6x \le 0.6 内的准确率全范围的准确率认为最好的长度
真实效用0.6760.6850.30
线性 BT0.5460.5930.00
二次 BT0.6010.6120.17
GP(ℓ=0.08\ell = 0.08)0.6800.6330.30
  • 线性 BT 只能说”越短越好”,完全错过主峰;二次 BT 画出一个峰,但形状不对,并且在 x>0.6x > 0.6 处信心十足地一路下降——二次函数的形状替它做了外推。
  • GP 在有数据的范围内把主峰学得很准(准确率和真实效用一样)。
  • 在没有数据的 x>0.6x > 0.6,GP 的均值慢慢回到先验,后验标准差从 0.25 涨到 1.51(接近先验的 1.5):它知道自己不知道。

这和第 2 讲”奖励模型的外推”是同一个问题:参数化的模型在数据之外会”自信地胡说”,非参数的贝叶斯模型会”老实地说不知道”。

5.3 选超参数:边际似然

GP 的长度尺度怎么选?贝叶斯的回答是最大化边际似然(证据)p(D∣ℓ)p(\mathcal{D} \mid \ell)。用拉普拉斯近似:

log⁡p(D∣ℓ)≈log⁡p(D∣f^)⏟拟合得好−12∥z^∥2−12log⁡det⁡(I−L⊤HL)⏟模型太灵活的惩罚\log p(\mathcal{D} \mid \ell) \approx \underbrace{\log p(\mathcal{D} \mid \hat f)}_{\text{拟合得好}} - \underbrace{\tfrac{1}{2}\lVert \hat z\rVert^2 - \tfrac{1}{2}\log\det(I - L^\top H L)}_{\text{模型太灵活的惩罚}}

第一项奖励拟合,后两项惩罚”后验相对先验收缩得太厉害”(能拟合任何东西的模型,看到数据后要大幅收缩)。这就是贝叶斯的奥卡姆剃刀。演示 2:

ℓ\elllog 边际似然留出对数损失留出准确率
0.01−186.420.63740.662
0.05−176.150.59130.689
0.08−175.290.58300.686
0.15−173.980.58520.688
0.30−177.740.60770.686
1.00−197.220.66380.567

边际似然只用训练数据就挑出了 0.15,和留出数据最好的 0.08 表现几乎一样,不需要交叉验证。ℓ\ell 太小,数据被摊得太薄(相当于”每个长度一个独立分数”);ℓ\ell 太大,函数被迫接近直线,画不出峰。

5.4 不确定性指导提问

后验不确定性最大的用处,是告诉我们下一个问题该问什么。演示 3 用一个简单的规则:拿”和当前最好的长度比,乐观地看能好多少”(均值差 + 2 倍标准差,即 UCB)最大的长度,和当前最好的长度比较。再问 40 个问题:

提问方式x>0.6x > 0.6 区域的平均绝对误差问到 x>0.6x > 0.6 的次数
按乐观值提问0.4516 / 40
随机提问(全范围)0.8620 / 40

按乐观值提问时,第一个问题落在最远的 x=1.0x = 1.0,随后集中在小峰附近(0.77~0.88);大约 16 个问题之后,那一侧”乐观地看”也不可能比 0.3 好了,于是转而反复比较 0.27 和 0.30——先探索、再利用。它学到的长长度一侧的形状更准(误差约为随机提问的一半)。

但它也有一个明显的毛病:不确定性带反而比随机提问宽。每个问题都是”拿某个长度和 0.3 比”,而 0.3 几乎总是赢——答案几乎是预先知道的,每个回答带来的信息很少。第 7 讲会把这一点说清楚:一个比较的信息量正比于 p(1−p)p(1-p),pp 接近 0 或 1 时接近 0。好的提问策略要同时考虑”哪里可能更好”和”哪个问题信息量大”(第 7、13 讲)。

5.5 【边界】

  • GP 的计算量是 O(G3)O(G^3)(GG 是输入点数),几千个点以上要用稀疏近似、诱导点等方法。
  • RBF 核在高维输入(例如文本嵌入)上效果有限,“距离”在高维空间里不太有意义。LLM 的奖励模型因此用神经网络(第 6 节),GP 更多用在低维的问题上:调超参数、个性化推荐里的少数几个连续特征、机器人的步态参数(第 10、13 讲)。

6. 微调:在预训练模型上训练奖励模型

6.1 为什么要预训练

真实的奖励模型要给任意文本打分。如果从零训练,它只能从偏好数据里学”哪些词好”——而偏好数据很贵、很少(InstructGPT 的奖励模型训练数据约 3.3 万个提示词;即使几十万对,比起预训练的万亿个词也微不足道)。预训练模型已经从海量无标注文本里学会了”哪些说法意思相近""什么是事实错误""什么是礼貌”,奖励模型只需要学在这些表示之上,哪个方向是”好”。

真实的做法(InstructGPT,Ouyang 等 2022):取 SFT 过的语言模型,去掉最后”预测下一个词”的输出层,换成一个输出一个数的线性层,用回答最后一个位置的隐藏状态打分。用 BT 损失训练。InstructGPT 用的是 6B 的奖励模型(他们发现 175B 的训练不稳定)。Llama 2(Touvron 等 2023)从预训练的聊天模型初始化奖励模型。

6.2 玩具世界

代码 text_world.py 造了一个极小的”文本世界”:

  • 词表:10 个概念(准确 +1.2、清晰 +0.8、例子 +0.6……啰嗦 −0.6、跑题 −0.9、错误 −1.5),每个概念 4 个同义词,共 40 个词。
  • 预训练语料:2 万个无标注的句子,每个句子的词来自一两个概念。同义词总是出现在相似的上下文里,但语料里没有任何”好坏”信息。预训练模型是 CBOW(word2vec 的一种:遮住一个词,用其余词向量的平均预测它)。
  • 回答的真实奖励 = 各个词所属概念的评价的平均值。标注员按 BT 模型 P(a≻b)=σ(4(r∗(a)−r∗(b)))P(a \succ b) = \sigma(4(r^*(a) - r^*(b))) 选择。
  • 训练用的偏好数据只用每个概念的前两个同义词(“常用说法”);测试时分”同分布”和”换了说法”(只用后两个同义词,训练时从没见过)。

奖励模型 = 线性打分头(16 → 1)作用在”词向量的平均”上。

预训练学到了什么(代码 05 演示 1):同义词之间的平均余弦相似度 0.520,不同概念之间 −0.056。例如”准确³”(偏好数据里从没出现过)最像的三个词是准确¹、准确²、准确⁴。预训练从没被告诉过谁和谁是同义词——这是分布假设:意思相近的词出现在相似的上下文里。

6.3 四种训练方式

方式做法可训练参数
从零训练随机初始化嵌入表,全部一起训练673
线性探针冻结预训练的嵌入表,只训练打分头17
全量微调用预训练的嵌入表初始化,全部一起训练673
先探针再微调(LP-FT)先只训练打分头,再解冻一起训练673

代码 05_reward_model_finetune.py 演示 2(每种设定重复 5 次取平均;指标是和真实偏好方向一致的比例,去掉了标注噪声):

训练对数方式同分布换了说法
100从零训练0.7950.474
100线性探针0.7760.764
100全量微调0.8210.741
100先探针再微调0.8490.807
400从零训练0.9290.471
400线性探针0.9000.849
400全量微调0.9330.782
400先探针再微调0.9320.857
1600从零训练0.9630.486
1600线性探针0.9440.855
1600全量微调0.9620.803
1600先探针再微调0.9610.853

怎么读这张表:

  1. 从零训练在同分布上随数据增加而变好,在”换了说法”上始终和瞎猜差不多:没见过的词,它的词向量还是随机初始化的样子。数据再多也帮不了没见过的东西。
  2. 线性探针只训练 17 个参数,“换了说法”远好于从零训练:没见过的词和见过的同义词有相近的词向量,打分头给它们的分数也相近。代价是同分布的上限较低:预训练的表示不是为”打分”准备的。
  3. 全量微调同分布最好,“换了说法”却比线性探针差。原因:微调只移动训练数据里出现过的词的向量,没出现过的同义词留在原地,两者之间的关系被破坏了。Kumar 等(2022)把这个现象叫做”微调扭曲了预训练的特征”,并在真实的视觉和语言模型上证明了”全量微调在分布外不如线性探针”。
  4. 先探针再微调:同分布接近全量微调,换了说法接近线性探针。为什么?全量微调一开始,打分头是随机的,它传回来的梯度把词向量往”随机方向”推;先把打分头训练好,再微调时词向量只需要小幅改动。

为什么”换了说法”这一列对奖励模型特别重要? 奖励模型在 RLHF 里要给策略生成的新回答打分,这些回答的分布和偏好数据不同,而且策略会主动寻找奖励模型高估的地方(第 8 讲)。同分布的准确率高,不代表在 RL 里靠得住。

参数高效微调。真实的模型有几十亿个参数,全量微调又贵又容易扭曲特征。LoRA(Hu 等 2021)冻结原始权重 WW,只训练一个低秩的修正 W+BAW + BA(BB、AA 是很”瘦”的矩阵)。它介于线性探针和全量微调之间:可训练参数少(常常不到 1%),改动受限,保留了更多预训练的结构。玩具世界里没有实现它(嵌入表加低秩修正在这里意义不大),但道理相通。

6.4 为什么只训练 1 个 epoch

演示 3:200 对训练数据,全量微调,记录每遍之后的训练损失和验证损失:

训练遍数1351015203060
训练损失0.6700.5550.4790.3810.3520.3450.3390.340
验证损失0.6180.5480.5160.4970.5000.5250.5420.562

验证损失在第 9 遍最低,之后上升。更醒目的是:训练损失降到了 0.34,低于理论下限 0.420(知道真实偏好概率时验证损失能达到的最小值,由标注本身的随机性决定)。模型对训练数据的”确定”程度,超过了标注员自己的一致程度——这是过拟合最直接的信号。

真实的奖励模型有几十亿个参数,一遍就能记住不少训练数据。InstructGPT 和 Llama 2 都只训练 1 个 epoch(Llama 2 的论文说”训练更久会过拟合”)。InstructGPT 还有一个细节:每个提示词有 KK 个回答(4~9 个)的排序,产生 (K2)\binom{K}{2} 对比较;他们把同一个提示词的所有对放在同一个批次里,而不是打散成独立的数据点——打散后每个回答会被看到 K−1K-1 次,一遍下来就过拟合了。

其他常见的训练细节:

  • 奖励的零点:BT 损失只依赖分数差,奖励可以整体平移(第 1 讲)。InstructGPT 在 RL 之前加一个偏置,让标注员写的示范回答平均得分为 0。
  • 偏好强度的间隔:Llama 2 让标注员同时标”明显更好 / 更好 / 稍好 / 几乎一样”,在损失里加一个间隔 −log⁡σ(rw−rl−m)-\log\sigma(r_w - r_l - m),“明显更好”的对要求更大的分数差。

6.5 准确率的天花板

演示 4:用 1600 对训练的 LP-FT 模型,在同分布测试集上,和真实偏好方向一致的比例 0.968,但和标注一致的比例(准确率)只有 0.796——而完美模型的期望准确率也只有 0.813。准确率的天花板由标注的噪声决定,不由模型决定(第 5 讲第 8 节)。

真实世界的数字:InstructGPT 报告训练标注员之间的一致率约 73%(留出标注员之间约 77%),奖励模型在训练标注员上的准确率约 72%、在留出标注员上约 70%。Llama 2 的奖励模型整体准确率在 60% 多,在”明显更好”的对上高得多,在”几乎一样”的对上接近 50%。看到”奖励模型准确率只有 70%“时,先问:标注员之间的一致率是多少?


7. 奖励模型集成:一个实用的不确定性

7.1 为什么集成能表示不确定性

几十亿个参数的神经网络,MCMC 跑不动,拉普拉斯近似的海森矩阵也存不下。最实用的替代是集成(“深度集成”,Lakshminarayanan 等 2017):用不同的随机种子(和 / 或自助抽样的数据)训练几个模型,看它们是否一致。意见不一致的地方,就是不确定的地方。

为什么这像贝叶斯?不同的随机种子和数据子集,让每个成员落到”同样能解释训练数据”的不同参数上(第 4 讲的 Rashomon 集合)。在训练数据覆盖的地方,它们被数据约束得很紧,意见一致;在数据之外,约束消失,各自的”偏好”暴露出来。这和 GP 在没有数据的地方后验变宽是同一个道理。

7.2 什么样的分歧有意义

代码 06_reward_ensemble.py 比较三种 5 成员集成:从零训练、共享同一个预训练 + 微调、各自预训练 + 微调。测试集是同分布和”换了说法”各 2000 对,混在一起:

集成判错率(同分布 / 换了说法)相对分歧识别”换了说法”预测判错:单模型信心预测判错:相对分歧预测判错:原始标准差
从零训练0.067 / 0.4290.9140.7160.8100.677
共享预训练0.070 / 0.1080.4820.8900.8640.403
各自预训练0.068 / 0.1150.7940.8320.8540.484

(后四列都是 AUC,0.5 = 毫无用处。“相对分歧” = 成员给出的分数差的标准差 ÷ |平均分数差|。)

  • 从零训练的集成:在没见过的输入上几乎是瞎猜,但它知道——相对分歧以 0.914 的 AUC 把”换了说法”的对挑了出来。单个模型做不到:它对没见过的输入也给出一个看起来正常的分数差。
  • 共享预训练的集成:判断得好,但分歧完全识别不出”换了说法”的输入(0.482)。成员共享同一份表示,看法高度一致。这里恰好没出大问题;可如果共享的表示有盲点,集成看不见。
  • 各自预训练的集成:成员更多样,分歧又能识别分布外的输入(0.794),判错率也低。Eisenstein 等(2023)在真实奖励模型上的发现一致:预训练种子不同的集成,比只有微调种子不同的集成更能缓解奖励黑客。
  • 一个坑:直接用分数差的原始标准差预测判错,AUC 低于 0.5!两个回答差距大时,各成员的分数差都大,绝对分歧也大,可这些对几乎不会判错。分歧要相对于判断的强度来看。

7.3 集成与过度优化

演示 2 做 Best-of-n:每个候选池 n 个回答(一半常用说法、一半换了说法),按奖励模型挑分数最高的,看挑中回答的真实奖励。“各自预训练”集成的结果:

n只用一个成员集成平均平均 − 标准差最好的挑中换了说法的比例(单个 / 平均)
40.3110.3360.3310.3530.48 / 0.46
160.5870.5880.5880.6660.38 / 0.16
640.7740.8190.8300.9060.36 / 0.04
2560.8980.9560.9671.0560.39 / 0.00

单个成员对”换了说法”的回答有自己的系统性误差。n 越大(优化压力越大),“挑分数最高的”越会挑中它高估的回答,和”最好的”的差距从 0.04 拉大到 0.16。集成平均把成员们独立的误差平均掉,几乎不再挑中被高估的回答;“平均 − 标准差”(保守的下置信界)再好一点点。这就是奖励过度优化的雏形,第 8 讲会在 RL 里系统地看。

另外两种集成的结果也要诚实地说:共享预训练的集成三种挑法几乎一样(成员看法一致,平均了也一样);从零训练的集成在这个玩具世界里看不到过度优化——没见过的词让分数趋于”平庸”(随机词向量平均下来接近 0),很少被挑中。【边界】这是玩具世界的特点;真实的奖励模型对分布外的输入可能给出极端的分数。

真实世界:Coste 等(2023)在 RLHF 里用奖励模型集成,比较了”平均""最差的成员”(WCO)和”平均减去若干倍方差”(UWO),发现后两者明显减轻了过度优化。Eisenstein 等(2023)的标题说得很准确:集成能缓解、但不能消除奖励黑客——所有成员共同的盲点(共享的预训练数据、共享的标注偏差,例如第 1 讲的长度偏差)集成看不见。

7.4 其他办法

  • 最后一层贝叶斯:把预训练表示固定,只对最后的线性打分头做贝叶斯推断(就是第 2 节的贝叶斯线性 BT,可以用拉普拉斯近似)。便宜,常用于主动学习(第 10 讲)。
  • Laplace-LoRA:只对 LoRA 的参数做拉普拉斯近似(Yang 等 2024 用于奖励模型)。
  • MC dropout:测试时也打开 dropout,多次前向传播的差异当作不确定性。便宜但校准一般。

8. 小结

  1. 贝叶斯 BT:后验 ∝ 先验 × 似然。MAP 就是第 5 讲的 L2 正则化估计(λ=1/(Nτ2)\lambda = 1/(N\tau^2));后验还给出可信区间、“a 更强”的概率、后验预测。全胜时最大似然发散,后验仍然合理。
  2. 先验:数据少时决定结论,数据多时无关紧要。先验要有依据,并做敏感性分析。先验正确时可信区间校准;先验错了,区间会系统性地偏。
  3. MCMC:Metropolis–Hastings 只需要未归一化的后验。用 ESS(而不是样本数)衡量精度;用多条链的 R^<1.01\hat R < 1.01 诊断收敛;按后验形状提议(或用 HMC / NUTS)大幅提高效率。
  4. 拉普拉斯近似 = MAP + 曲率。便宜,大样本下准确;后验偏斜(全胜、小样本)时会低估尾部。
  5. 后验样本直接回答”谁是第一”的概率、排名区间——比单个名次诚实得多。
  6. GP 偏好学习:函数上的先验(相近的输入效用相近)+ BT 似然 + 拉普拉斯近似。形状学得准,在没有数据的地方知道自己不知道;边际似然选超参数。不确定性告诉我们该问什么,但还要考虑问题的信息量(第 7 讲)。
  7. 奖励模型微调:预训练让奖励模型能泛化到没见过的说法。线性探针保住预训练结构但不够灵活;全量微调灵活但会扭曲特征、损害分布外表现;先探针再微调兼顾两者。奖励模型通常只训练 1 个 epoch;准确率的天花板由标注一致率决定。
  8. 集成是大模型最实用的不确定性:成员要多样(不同的预训练更好),分歧要相对地看。集成平均和保守的奖励能缓解、但不能消除过度优化。

9. 与测验、口试和项目的关系

  • 测验与口试可能会问:写出贝叶斯 BT 的后验并解释和 L2 正则化的关系;MAP、后验均值、后验预测的区别;为什么 MH 不需要归一化常数;步长和接受率、ESS 的关系;R^\hat R 是什么、为什么要多条链;拉普拉斯近似什么时候不准;GP 的长度尺度有什么作用;线性探针和全量微调的取舍;为什么奖励模型只训练 1 个 epoch;集成怎样表示不确定性、有什么局限。
  • 期末项目:如果你的数据少(每个选项几十次比较以下),考虑用贝叶斯方法,并报告先验的敏感性;如果要报告排行榜,报告排名区间而不只是名次;如果训练神经网络奖励模型,报告分布外的表现(换一批提示词、换一种回答来源),并考虑用集成估计不确定性。

10. 练习

练习 1(共轭先验)。换一种参数化:直接把 p=P(a 赢)p = P(a \text{ 赢}) 当参数,先验 Beta(α,β)\text{Beta}(\alpha, \beta)。 (a) 证明观察到 ww 胜 ll 负后,后验是 Beta(α+w,β+l)\text{Beta}(\alpha + w, \beta + l)。 (b) 取 α=β=1\alpha = \beta = 1(均匀先验),3-0 时后验预测”下一场 a 赢”的概率是多少?和本讲代码 01 的 0.764 比较。

参考答案

(a) 先验密度 ∝pα−1(1−p)β−1\propto p^{\alpha-1}(1-p)^{\beta-1},似然 ∝pw(1−p)l\propto p^w(1-p)^l,相乘得 pα+w−1(1−p)β+l−1p^{\alpha+w-1}(1-p)^{\beta+l-1},正是 Beta(α+w,β+l)\text{Beta}(\alpha+w, \beta+l) 的形状。先验和后验属于同一族,叫共轭先验,后验不需要任何近似。 (b) 后验 Beta(4,1)\text{Beta}(4, 1),预测概率 = 后验均值 4/5=0.84/5 = 0.8(拉普拉斯的”继承法则” (w+1)/(n+2)(w+1)/(n+2))。比 0.764 稍大,因为均匀先验在 pp 上是”平的”,对应到 Δ=log⁡p1−p\Delta = \log\frac{p}{1-p} 上是一个比 N(0,2)N(0, 2) 更宽的分布(逻辑斯蒂分布,标准差约 1.81)。BT 的多选项模型没有这样的共轭先验,所以需要 MCMC 或拉普拉斯近似。

练习 2(先验与 λ)。你有 N=2000N = 2000 条比较,认为分数的先验标准差 τ=0.5\tau = 0.5。用第 5 讲”平均对数似然 −λ2∥s∥2- \frac{\lambda}{2}\lVert s\rVert^2“的写法,λ 应该取多少?如果数据增加到 20000 条而先验不变呢?

参考答案

λ=1/(Nτ2)=1/(2000×0.25)=0.002\lambda = 1/(N\tau^2) = 1/(2000 \times 0.25) = 0.002。N=20000N = 20000 时 λ=0.0002\lambda = 0.0002。先验不变,数据越多,λ 越小——这是第 5 讲练习 5 的另一面。

练习 3(细致平衡)。提议分布对称(q(x′∣x)=q(x∣x′)q(x' \mid x) = q(x \mid x')),接受率 α(x→x′)=min⁡(1,p(x′)/p(x))\alpha(x \to x') = \min(1, p(x')/p(x))。证明 p(x) T(x→x′)=p(x′) T(x′→x)p(x)\,T(x \to x') = p(x')\,T(x' \to x)(x≠x′x \ne x'),其中 T(x→x′)=q(x′∣x) α(x→x′)T(x \to x') = q(x' \mid x)\,\alpha(x \to x')。

参考答案

不妨设 p(x′)≤p(x)p(x') \le p(x)。则 α(x→x′)=p(x′)/p(x)\alpha(x \to x') = p(x')/p(x),α(x′→x)=1\alpha(x' \to x) = 1。 左边 =p(x) q(x′∣x) p(x′)/p(x)=q(x′∣x) p(x′)= p(x)\,q(x' \mid x)\,p(x')/p(x) = q(x' \mid x)\,p(x');右边 =p(x′) q(x∣x′)⋅1= p(x')\,q(x \mid x') \cdot 1。由对称性两者相等。p(x′)>p(x)p(x') > p(x) 时同理。细致平衡意味着”从 xx 流到 x′x' 的概率质量 = 从 x′x' 流回 xx 的”,所以 pp 是平稳分布。注意 pp 只以比值出现,归一化常数无关紧要。

练习 4(有效样本数)。一条链的自相关是 ρt=ρt\rho_t = \rho^t(一阶自回归)。 (a) 证明 ESS=n 1−ρ1+ρ\text{ESS} = n\,\frac{1-\rho}{1+\rho}。 (b) ρ=0.9\rho = 0.9、n=10000n = 10000 时 ESS 是多少?要让均值的蒙特卡洛误差是后验标准差的 1%,需要多长的链?

参考答案

(a) 1+2∑t≥1ρt=1+2ρ1−ρ=1+ρ1−ρ1 + 2\sum_{t\ge1}\rho^t = 1 + \frac{2\rho}{1-\rho} = \frac{1+\rho}{1-\rho},所以 ESS=n1−ρ1+ρ\text{ESS} = n\frac{1-\rho}{1+\rho}。 (b) 10000×0.1/1.9≈52610000 \times 0.1/1.9 \approx 526。误差 = 标准差 / ESS\sqrt{\text{ESS}} = 1% × 标准差 ⇒ ESS = 10000 ⇒ n=10000×19=190000n = 10000 \times 19 = 190000。相关性让链要长 19 倍。

练习 5(拉普拉斯近似)。两个选项,先验 Δ∼N(0,σ02)\Delta \sim N(0, \sigma_0^2),aa 在 nn 场里赢了 ww 场。 (a) 写出 MAP 满足的方程和拉普拉斯近似的标准差。 (b) 70-30、σ02=2\sigma_0^2 = 2 时,已知 MAP = 0.828,算出拉普拉斯标准差,和代码 01 的精确值 0.216 比较。

参考答案

(a) 对 ℓ(Δ)=wlog⁡σ(Δ)+(n−w)log⁡σ(−Δ)−Δ2/(2σ02)\ell(\Delta) = w\log\sigma(\Delta) + (n-w)\log\sigma(-\Delta) - \Delta^2/(2\sigma_0^2) 求导:w−nσ(Δ)−Δ/σ02=0w - n\sigma(\Delta) - \Delta/\sigma_0^2 = 0。二阶导数 −nσ(Δ)(1−σ(Δ))−1/σ02-n\sigma(\Delta)(1-\sigma(\Delta)) - 1/\sigma_0^2,标准差 =1/np^(1−p^)+1/σ02= 1/\sqrt{n\hat p(1-\hat p) + 1/\sigma_0^2},p^=σ(MAP)\hat p = \sigma(\text{MAP})。 (b) p^=σ(0.828)≈0.696\hat p = \sigma(0.828) \approx 0.696,100×0.696×0.304≈21.16100 \times 0.696 \times 0.304 \approx 21.16,加 0.5 得 21.66,标准差 ≈0.215\approx 0.215。和精确的 0.216 几乎一样——100 场比赛后,后验已经很接近正态。

练习 6(GP 与贝叶斯 BT)。 (a) 证明:如果核矩阵 K=τ2IK = \tau^2 I,GP 偏好学习的后验就是第 2 节的贝叶斯 BT。 (b) 长度尺度 ℓ→0\ell \to 0 时 RBF 核趋向什么?ℓ→∞\ell \to \infty 呢?分别对应什么样的效用函数?

参考答案

(a) 先验 N(0,τ2I)N(0, \tau^2 I) 就是”每个网格点的效用独立地 ~ N(0,τ2)N(0, \tau^2)“,似然相同,所以后验相同。 (b) ℓ→0\ell \to 0:不同点之间 exp⁡(−∞)=0\exp(-\infty) = 0,K→sf2IK \to s_f^2 I,即每个点独立(相当于每个输入一个独立分数,不能在点之间借用信息)。ℓ→∞\ell \to \infty:所有元素 →sf2\to s_f^2,K→sf211⊤K \to s_f^2 \mathbf{1}\mathbf{1}^\top,所有点的效用完全相同(常数函数)——而常数在 BT 里消掉,什么也学不到。代码 04 演示 2 的 ℓ=0.01\ell = 0.01 和 ℓ=1.0\ell = 1.0 分别接近这两个极端。

练习 7(微调的机制)。在代码 05 的玩具世界里: (a) 解释为什么全量微调后,“准确³”(训练数据里没出现过)的词向量和训练前一模一样。 (b) 既然如此,为什么全量微调在”换了说法”上会比线性探针差? (c) 提出一个不同于 LP-FT 的改进办法,并说明它解决了哪个问题。

参考答案

(a) 训练数据里没有”准确³”,它的词向量从不出现在任何前向计算里,梯度恒为 0,Adam 也不会更新它(Adam 只用梯度)。 (b) 打分头是在”微调后的”常用词向量上训练的。常用词的向量被移动了(例如为了把”准确¹”的分数推高,它可能沿着打分头的方向移动),而”准确³”留在原地。打分头在新位置上学到的方向,和”准确³”原来的位置不再匹配。线性探针不移动任何词向量,同义词之间的关系完整保留。 (c) 例如:给词向量的改动加 L2 惩罚 ∥E−E0∥2\lVert E - E_0\rVert^2(“别离预训练太远”,和第 8 讲 RLHF 的 KL 约束同一个思想);或者用参数高效微调(LoRA),限制改动的自由度;或者在微调时让同义词共享改动(如果知道哪些是同义词)。前两种都在”灵活”和”保住预训练结构”之间取折中。

练习 8(集成的分歧)。一个奖励模型集成对两对回答给出的分数差:对 A:成员给出 (3.0, 2.5, 3.6, 2.8, 3.1);对 B:(0.3, −0.2, 0.4, −0.1, 0.2)。 (a) 算出每对的平均分数差、原始标准差和相对分歧。哪一对更可能判错? (b) 解释为什么代码 06 里”原始标准差”预测判错的 AUC 低于 0.5。

参考答案

(a) A:平均 3.0,标准差约 0.36,相对分歧约 0.12。B:平均 0.12,标准差约 0.23,相对分歧约 1.9,并且有两个成员判反了。B 的原始标准差更小,却更可能判错。 (b) 分数差越大的对,各成员的分数差的绝对波动也越大(成员之间的”尺度”略有不同,乘在大数上就是大波动),所以原始标准差和”差距大小”正相关;而差距大的对很少判错。于是”原始标准差大”反而意味着”不太会错”,AUC 低于 0.5。要除以平均差(相对分歧),或者看”多少成员判反了”。


11. 延伸阅读

课程教材

  • Truong, Haupt, Koyejo. Machine Learning from Human Preferences. 第 2 章(贝叶斯推断、高斯过程、LLM 奖励模型)。

贝叶斯推断与 MCMC

  • Gelman, Carlin, Stern, Dunson, Vehtari, Rubin. Bayesian Data Analysis(第 3 版). 第 11、12 章(MCMC 与诊断)。
  • Metropolis et al. Equation of State Calculations by Fast Computing Machines. 1953;Hastings. Monte Carlo Sampling Methods Using Markov Chains and Their Applications. Biometrika 1970.
  • Roberts, Gelman, Gilks. Weak Convergence and Optimal Scaling of Random Walk Metropolis Algorithms. Annals of Applied Probability 1997.
  • Vehtari, Gelman, Simpson, Carpenter, Bürkner. Rank-Normalization, Folding, and Localization: An Improved R^\hat R for Assessing Convergence of MCMC. Bayesian Analysis 2021.
  • Hoffman, Gelman. The No-U-Turn Sampler. JMLR 2014.
  • Cook, Gelman, Rubin. Validation of Software for Bayesian Models Using Posterior Quantiles. JCGS 2006.

贝叶斯评分系统

  • Herbrich, Minka, Graepel. TrueSkill: A Bayesian Skill Rating System. NeurIPS 2006.
  • Glickman. Parameter Estimation in Large Dynamic Paired Comparison Experiments. Applied Statistics 1999.
  • Chiang et al. Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. ICML 2024.

高斯过程偏好学习

  • Chu, Ghahramani. Preference Learning with Gaussian Processes. ICML 2005.
  • Rasmussen, Williams. Gaussian Processes for Machine Learning. 2006. 第 2、3、5 章(免费在线)。

奖励模型与微调

  • Ouyang et al. Training Language Models to Follow Instructions with Human Feedback(InstructGPT). NeurIPS 2022.
  • Touvron et al. Llama 2: Open Foundation and Fine-Tuned Chat Models. 2023. 第 3.2 节(奖励模型)。
  • Kumar, Raghunathan, Jones, Ma, Liang. Fine-Tuning can Distort Pretrained Features and Underperform Out-of-Distribution. ICLR 2022.
  • Hu et al. LoRA: Low-Rank Adaptation of Large Language Models. 2021.

集成与不确定性

  • Lakshminarayanan, Pritzel, Blundell. Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles. NeurIPS 2017.
  • Coste, Anwar, Kirk, Krueger. Reward Model Ensembles Help Mitigate Overoptimization. ICLR 2024.
  • Eisenstein et al. Helping or Herding? Reward Model Ensembles Mitigate but do not Eliminate Reward Hacking. 2023.
  • Yang et al. Bayesian Reward Models for LLM Alignment. 2024.

12. 下一讲预告

本讲学会了表示”对偏好的不确定性”,也看到了它的一个用处:指导下一个问题该问什么(代码 04 演示 3)。可是那个实验也暴露了一个问题:按”哪里可能更好”提问,问出来的常常是答案几乎确定的问题,信息量很小。

第 7 讲讲 Fisher 信息与实验设计:

  • Fisher 信息:一个问题能带来多少信息?为什么”五五开”的比较信息量最大(p(1−p)p(1-p))?Cramér–Rao 下界说明了”再聪明的估计也做不到更好”。
  • 计算机自适应测试:GRE、GMAT 这类考试怎样根据你答对答错挑下一道题,用一半的题目测得一样准。同样的思路正在被用来给大语言模型做更便宜的评测。
  • 最优实验设计:多个参数时,“信息量”是一个矩阵。A、D、E 三种最优准则;用 Sherman–Morrison 公式在线地挑下一对比较;为什么只挑”最不确定”的问题会挑出一堆重复的问题。
  • 度量获取:只用”你更喜欢哪个分类器”这种问题,二分搜索出一个人心中的评价指标。
← 返回课程目录