对应原课:CMU 11-667 Fall 2025 · Lecture 14 · Thu 9-Oct-2025 · Interpretation of Pretrained Language Models(Jaromir Savelka、Yubin Kim) 原课 slides:Interpretation of Pretrained Language Models(课表上标为 interpretability) 阅读材料:Tenney et al. (2019), What do you learn from context? Probing for sentence structure in contextualized word representations(边探针);Li et al. (2018), Visualizing the Loss Landscape of Neural Nets 配套代码:code/lecture14/(1 个模块 + 4 个演示脚本;第一次运行要训练一个”花园 BERT”约 80 秒,03 号脚本约 3 分钟,有
--quick) 本讲的写法:骨架来自原课 slides 的三个问题(BERT 里捕捉到了什么?预训练模型为什么泛化?上下文学习在做什么?)。实验在第 1 讲的花园世界上做:这里每个 token 的词性、主语、依存关系都是精确已知的,不需要人工标注的树库。所有数字都来自配套代码的实际输出;有几处经典结论在这个小模型上没有干净地重现,我们如实报告。
目录
0. 本讲导读
0.1 这一讲要回答的问题
slides 的学习目标:对语言模型在各种场景下怎样工作获得一些理解;概览近年的可解释性技术;建立关于 LLM 内部可能怎样运作的直觉。三个问题:
- BERT 里捕捉到了什么?——注意力模式;用探针检查表示里存了哪些能力。
- 预训练模型为什么能泛化?——损失地形;语言模型的隐式偏好。
- 上下文学习在做什么?——语义先验还是输入—标签映射?和梯度下降有什么关系?
0.2 学完这一讲你应该能
- 用注意力的熵、“看哪里”的统计、和位置基线的比较,描述注意力头的行为;知道注意力 ≠ 解释,要做干预;
- 设计逐层的线性探针,用控制任务衡量选择性,解读”哪一层、什么时候”;
- 用 Hessian 的迹、随机方向的切面、优化轨迹描述损失地形,知道”尖锐度”依赖度量方式;
- 写出”一层线性自注意力 = 一步梯度下降”的构造,说出这种解释的前提。
0.3 本讲的实验平台:花园 BERT
interp.py 在第 1 讲的花园世界上训练一个 4 层 × 4 个头、d = 64 的双向 Transformer(206,464 个参数),目标是第 2 讲的掩码语言建模(15% 的位置被遮住,80% 换成 <mask>),6000 步,途中存下 6 个检查点。开头的 <bos> 相当于 BERT 的 [CLS]。遮住一个 token 让它猜,测试集上的准确率 72.6%(很多位置本来就有好几种合理的词)。
annotate(doc) 沿第 1 讲的状态机给每个 token 打上精确的标签,例如:
she 主语
waters 动词
her 限定词 物主代词→主语(第 0 个词)
iris 名词 宾语→动词(第 1 个词) 宾语的类别 = flower
in the morning 尾巴
. 句号
1. 注意力在看什么
1.1 BERT 的注意力模式(Clark et al. 2019)
slides 的统计:BERT 各层注意力分布的平均熵——
- 低层熵高:像词袋,广泛地看整句;
- 中间层熵低:开始形成某些特定的模式;
- 深层熵又升高:更全局的信息?
常见的模式:广泛注意(神经网络很难解释,各种东西混在一起);注意下一个 token(像反向的 RNN,预训练中学到的位置关系);集中注意 [SEP] 和句号——效果不明:有人认为是”空操作”(无事可做时的默认去处),有人认为是信息枢纽,也许不同的头两者都有。还有语言学的模式:宾语注意它们的动词、名词修饰语注意它们的名词。slides 的小结:很多语言现象被捕捉在预训练参数的某处;一些注意力头对应语言学关系;这些大多在预训练时就学到,微调时变化不大。
1.2 实验:熵和常见模式
代码 01 §2:每个位置的注意力分布的熵(nats),对所有位置、所有文档取平均(均匀分布的熵约 3.25,平均长度 26):
| 层 | 头 1 | 头 2 | 头 3 | 头 4 | 平均 |
|---|---|---|---|---|---|
| 1 | 2.98 | 2.86 | 2.94 | 2.91 | 2.92 |
| 2 | 0.48 | 0.39 | 0.81 | 0.69 | 0.59 |
| 3 | 1.41 | 2.14 | 1.56 | 1.12 | 1.56 |
| 4 | 1.84 | 0.83 | 1.16 | 1.43 | 1.32 |
和 BERT 的图同一个形状:第 1 层几乎是均匀的”词袋”,第 2 层的头只盯着一两个位置,更深的层熵又升高。
代码 01 §3,最突出的头:
| 模式 | 最突出的头 | 平均分给它的注意力 | 所有头的平均 |
|---|---|---|---|
| 看前一个 token | 第 2 层第 2 个头 | 84.7% | 12.5% |
| 看后一个 token | 第 2 层第 1 个头 | 57.0% | 13.8% |
| 看自己 | 第 2 层第 3 个头 | 49.5% | 14.6% |
| 看 [CLS] | 第 1 层第 2 个头 | 7.4% | 2.1% |
| 看句号 | 第 3 层第 3 个头 | 21.3% | 11.5% |
双向模型没有内建的”顺序”,这些头相当于自己学出了”位置偏移”;也有把注意力倾倒在句号上的头。
1.3 实验:语言学关系的头
代码 01 §4:对每种关系、每个头,从关系的起点出发,注意力最大的位置是不是关系的终点?基线:总是看固定偏移的位置,取最好的偏移。
| 关系 | 实例数 | 最好的头 | 准确率 | 最好的固定偏移 | 基线准确率 |
|---|---|---|---|---|---|
| 宾语→动词 | 1001 | L2H4 | 79.9% | −2 | 70.2% |
| 形容词→名词 | 298 | L3H4 | 99.0% | +1 | 100.0% |
| 物主代词→主语 | 672 | L4H4 | 87.8% | −2 | 58.0% |
没有人教过模型什么是”宾语”,MLM 的目标就让某些头自己学会了对应的查找。但要和基线比:形容词后面总是紧跟名词,“看后一个词”就能 100% 找对——这个头的 99% 说明不了什么;宾语→动词、物主代词→主语的距离不固定,最好的头比固定偏移高 10~30 个百分点,才算是真的在”找”那个词。Clark et al. 报告 BERT 的关系头时,同样给出了固定偏移的基线。
1.4 实验:关掉这个头会怎样?
slides 的实践意义:注意力权重反映了模型”认为什么重要”,是从 LLM 收集反馈的有效方式(例如用来训练 RAG 的检索器,Izacard & Grave 2020)。但注意力大不等于对输出有因果作用(Jain & Wallace 2019,“Attention is not Explanation”)。要知道一个头是否真的被用到,需要干预。
代码 01 §5:遮住名词让模型猜。名词的类别由动词决定(eat → 水果或蔬菜,feed → 动物),具体是哪个名词很难猜:
| 猜中这个词 | 猜中类别 | |
|---|---|---|
| 不关 | 23.0% | 72.3% |
| 关掉”宾语→动词”的头 L2H4 | 18.7% | 57.1% |
| 对照:关掉随机的头 L3H2 / L3H1 / L4H1 | 22.3% / 23.0% / 22.7% | 72.7% / 73.0% / 72.1% |
关掉这个头,猜名词类别的准确率掉了 15 个百分点;关掉随机的头几乎没影响——它确实被用来”看动词、决定宾语的类别”。这类”关掉 / 替换某个部件、看输出怎样变”的方法,后来发展成了激活修补(activation patching)和电路分析(circuits),是今天机械可解释性的主要工具。
2. 探针:表示里存了什么
2.1 边探针(Tenney et al. 2019)
把预训练模型的表示当作固定的特征,在上面训练一个简单的分类器去预测目标标签——如果简单的分类器就能预测出来,说明这个信息”在表示里”。slides 的探针任务表:词性(句法)、成分标注(句法)、依存标注(句法)、命名实体(句法 / 语义)、语义角色(语义)、共指(语义)、语义原型角色(语义)、关系分类(语义 / 知识)。结果:GPT-1、BERT-base、BERT-large 的宏平均 88.3、89.3、91.0——预训练表示携带了句法和语义信息。
逐层看(Tenney, Das & Pavlick 2019,“BERT 重新发现了经典的 NLP 流水线”):句法任务在低层,语义 / 知识任务在高层。随训练步数看(Liu et al. 2021,RoBERTa):语言学任务学得最早,事实 / 常识任务慢一些,推理任务最晚、而且要到一定规模才学得会——任务的概念难度和它被学会的地点、时间对应。
2.2 实验:逐层探针
代码 02 §1:在花园 BERT 每一层的表示上训练逻辑回归(400 篇文档训练、300 篇测试)。第 0 层是词嵌入加位置编码,还没看过上下文。
| 任务 | 多数类 | 第 0 层 | 第 1 层 | 第 2 层 | 第 3 层 | 第 4 层 |
|---|---|---|---|---|---|---|
| 词性(7 类) | 22.7% | 93.3% | 94.2% | 100.0% | 100.0% | 99.9% |
| 主谓一致:主语是三单吗(名词处) | 67.3% | 66.2% | 66.3% | 86.2% | 83.2% | 83.1% |
| 主语是谁(8 类,名词处) | 22.8% | 22.2% | 25.9% | 46.1% | 45.8% | 53.6% |
| 宾语的类别(4 类,动词处) | 36.9% | 65.1% | 71.1% | 98.6% | 99.0% | 99.3% |
- 词性在第 0 层就很高:大多数词只有一种词性;the、my 例外(可能是主语的一部分、限定词或尾巴),要看上下文,第 2 层达到 100%。
- 主谓一致、主语是谁要从别的位置”拿”信息:第 0 层是多数类的水平,经过注意力层之后才变高。
- 宾语的类别在第 0 层就有 65%——动词本身是线索(feed 后面一定是动物)——看到宾语之后接近 100%。
- “主语是谁”最难,最高只有一半左右:MLM 只在少数位置(例如尾巴里的物主代词)需要知道主语,名词处的表示没有义务把它保存得很清楚。
和 BERT 一样:词汇性、局部的信息在低层,需要跨越多个词的关系在更高的层。
2.3 实验:控制任务
探针的准确率高,就说明表示里”有”这个信息吗?Hewitt & Liang (2019) 的控制任务:给每个词随机分配一个”假词性”——它没有任何语言学意义,探针只能靠”认出这是哪个词”来记住它。
| 第 0 层 | 第 1 层 | 第 2 层 | 第 3 层 | 第 4 层 | |
|---|---|---|---|---|---|
| 真实的词性 | 93.3% | 94.2% | 100.0% | 100.0% | 99.9% |
| 控制任务 | 100.0% | 99.9% | 98.6% | 98.0% | 96.7% |
| 选择性(差) | −6.7% | −5.8% | 1.4% | 2.0% | 3.2% |
在词嵌入层,随机的”假词性”学得比真实的词性还好:线性探针在 64 维的表示上足以记住约 90 个词各自的标签。所以**“能预测出词性”本身说明不了表示学到了词性这个概念**;要报告选择性(真实任务 − 控制任务)。越往上,表示越多地混入上下文、越少保留”这是哪个词”,控制任务下降,真实的词性保持住了——高层编码的是”这个位置在句子里的角色”。
2.4 实验:训练过程中什么先学会
代码 02 §3:对 6 个检查点做同样的探针,每个任务取各层中最好的:
| 训练步数 | 词性 | 主谓一致 | 主语是谁 | 宾语类别 |
|---|---|---|---|---|
| 0 | 93.5% | 67.2% | 35.6% | 70.0% |
| 100 | 93.8% | 67.2% | 33.9% | 69.2% |
| 300 | 94.3% | 77.2% | 50.7% | 66.2% |
| 1000 | 99.4% | 88.5% | 58.9% | 84.8% |
| 3000 | 99.9% | 81.0% | 46.7% | 97.8% |
| 6000 | 100.0% | 86.2% | 53.6% | 99.3% |
- 第 0 步(随机初始化)也不低:线性探针在随机词向量上也能”记住”词性;随机的注意力也会混合上下文。
- 词性和主谓一致在前 1000 步基本学会;宾语类别要到 3000 步才接近满分。
- “主语是谁”在第 1000 步最高,之后反而下降:探针测到的是”能被线性地读出来”的信息,模型在后面的训练里把表示重新组织了。学到的东西不会一直待在原地。
2.5 slides 的提醒
很容易把这些结果想象成”语言模型自下而上地理解语言”:句法 → 语义 → 事实 → 推理 → 通用智能,就像经典的 NLP 流水线、就像人脑学语言。但是:经典的 NLP 任务并不真是自下而上的,最好的系统往往更直接;我们其实并不知道人脑怎样工作,也许比对 LLM 的了解还少。实践上的意义:只用需要的部分做高效推理——提前退出(early exit)、稀疏化、蒸馏(第 19 讲)。
3. 预训练模型为什么泛化:损失地形
3.1 问题
为什么预训练模型能泛化到很多微调任务,即使任务有充足的标注?为什么更大的模型、更长的预训练能提高泛化?在统计机器学习里,复杂的模型 + 充分的训练是过拟合的配方——但这恰恰是预训练模型的核心优势。
3.2 损失地形
Li et al. (2018) 用按滤波器归一化的随机方向可视化损失地形:沿两个随机方向挪动参数,画出损失的等高线。为了让不同尺度的模型可以比较,每个方向在每个”滤波器”(矩阵的每一行)上缩放到和那一行参数一样长。他们看到:尖锐的地形 vs 平滑的地形,平坦的极小值往往泛化得更好。
Hao et al. (2019) 在 BERT 上:从预训练的 BERT 微调 MNLI,和从随机初始化训练相比,损失地形更宽、更平坦,优化轨迹更短、更直。Liu et al. (2023),“同样的预训练损失,更好的下游”:一个 25M 参数的 BERT,预训练损失到了平台期后继续训练,损失几乎不变,下游表现却持续提升,同时 Hessian 的迹(平坦度的度量)变小;更大的模型能到达更平坦的极小值——更大的 Transformer 解空间更大、包含了小的,优化器在同样的损失水平上继续寻找更平坦的解。
**为什么平坦重要?**大量经验证据显示它和泛化相关;直觉上对数据的变化 / 噪声更稳健;理论上被论证为对应更简单的解(Hochreiter & Schmidhuber 1997)。**为什么预训练模型偏好平坦的极小值?**是优化器、结构、预训练损失的隐式偏好,还是它们的组合?slides:需要更多研究。
3.3 实验:同一个小任务,两个起点
代码 03:任务是判断一句话合不合语法——不合语法的句子是把主谓一致破坏掉(she eat …),或者把宾语换成动词不接受的类别(I feed the apple)。训练 200 句、测试 1000 句,全参数微调 300 步。
| 训练损失 | 训练准确率 | 测试准确率(3 个种子) | |
|---|---|---|---|
| 从预训练的花园 BERT 微调 | 0.0001 | 100.0% | 72.5% ± 3.0% |
| 从随机初始化训练 | 0.0005 | 100.0% | 60.5% ± 2.2% |
两者都把 200 个训练样例背得滚瓜烂熟,但预训练过的模型在新句子上明显更好——20 万个参数、200 个样例、训练到损失接近 0,正是统计学习里”过拟合的配方”。(两者离 100% 都还远:判断宾语的类别对不对,需要知道每个名词属于哪一类,200 个样例教不会;预训练过的模型在 MLM 里学过”eat 后面是水果蔬菜”。)
3.4 实验:解附近的地形——两种量法、两个结论
代码 03 §2:Hessian 的迹(Hutchinson 估计);以及沿 3 个按滤波器归一化的随机方向挪动 α 之后的训练损失(挪动之前都接近 0):
| Hessian 迹 | α = 0.1 | α = 0.25 | α = 0.5 | |
|---|---|---|---|---|
| 从预训练微调 | 0.47 | 0.026 | 0.644 | 1.796 |
| 从随机初始化训练 | 0.58 | 0.001 | 0.026 | 0.171 |
两种量法给出了相反的结论:按 Hessian 的迹,预训练的解略平坦;按随机方向的切面,预训练的解反而尖锐得多。“尖锐”取决于怎样度量:随机初始化训练出的网络,权重大多还是随机的、没有结构,往随机方向挪一挪对输出影响很小;预训练的权重高度结构化,同样相对大小的随机扰动会破坏它学到的东西。Dinh et al. (2017) 证明,只要换一种参数化,同一个函数的”尖锐度”可以被任意改变。“平坦 ↔ 泛化”是大量经验观察支持的关联,不是定律——比较时必须说清楚用的是哪种度量。
优化轨迹(代码 03 §3):
| 走了多远(相对起点的范数) | 直线上 t = 0.25 | t = 0.5 | t = 0.75 | |
|---|---|---|---|---|
| 从预训练微调 | 11.4% | 0.571 | 0.221 | 0.008 |
| 从随机初始化训练 | 22.8% | 0.589 | 0.289 | 0.027 |
从预训练出发,参数只需要挪动一半的相对距离——起点已经在一个好的区域附近,和 Hao et al. 的”又短又直”一致。两条直线上的损失都平稳下降。
3.5 实验:预训练得更久,更平坦、更好吗?
代码 03 §4:
| 检查点 | MLM 验证损失 | MLM 损失的 Hessian 迹 | 微调后的测试准确率(3 个种子) |
|---|---|---|---|
| 300 | 2.8390 | 182.67 | 70.9% ± 6.9% |
| 1000 | 1.4130 | 84.66 | 76.3% ± 1.3% |
| 3000 | 0.8675 | 32.81 | 67.6% ± 1.8% |
| 6000 | 0.7427 | 40.12 | 72.5% ± 3.0% |
我们的小实验没有重现 Liu et al. 的现象:从 300 步到 3000 步,损失下降、Hessian 的迹大幅变小;但之后损失继续下降,迹反而变大,下游准确率也不单调(1000 步的检查点最好)。可能的原因:训练还没到损失的平台期(6000 步时 MLM 损失仍在下降),学习率调度在末尾降得很低、“隐式偏好”没有时间起作用,200 个样例的下游任务本身噪声很大。这提醒我们:可解释性研究里的很多规律是在特定的规模和训练方式下观察到的,换一个设置未必成立。
4. 上下文学习在做什么
4.1 语义先验还是输入—标签映射?
slides 回到第 9 讲的主题(Wei et al. 2023):上下文学习有两个信息来源——LLM 里已有的语义知识,和上下文里的输入—标签映射。哪个在起作用?证据混杂:随机标签也能工作(→ 语义知识),示例的顺序有影响(→ 上下文里的训练信号)。两个测试:
- 翻转标签:随机翻转 X% 的二分类标签。越不在乎的模型越靠已有知识,受影响越大的模型越在”从上下文学”。结果:更大的模型在 0% 翻转时更好,但对翻转敏感得多——最强的模型甚至能”过度纠正”,只用 32 个示例就跟着翻转后的标签走。
- 语义无关的标签(foo / bar 代替 positive / negative):模型必须从上下文学映射。更大的模型在无关标签上更好,示例越多优势越明显;小模型更依赖先验知识。
结论:小模型更依赖已有知识、不太会从上下文学习;大模型能逆转语义先验、学会语义无关的映射、更好地利用更多示例。第 9 讲的 icl_world 在一个能精确算出贝叶斯最优的世界里重做了这些实验。
4.2 和梯度下降的联系(slides 的附加内容)
von Oswald et al. (2023):“Transformers learn in-context by gradient descent”。直觉:自注意力是高容量的函数,能近似很多数学运算;作为参照的”做 SGD 的模型”是一个简单的线性回归;为了便于构造,去掉了很多非线性。
构造:每个 token 是 ,查询的 y 位置填 0。线性自注意力(没有 softmax)
取 的左上角为单位阵(注意力分数 = ), 只把 放进最后一维,查询就得到
——一层线性自注意力恰好是”在上下文示例上做一步梯度下降”。
4.3 实验:训练出来的注意力层学到了什么
代码 04:每个任务是随机的线性函数 (d = 5),上下文 10 个示例。
- §1:构造的注意力层和一步梯度下降的预测在 1000 个任务上最大差 1.9e-6(浮点误差)。
- §2:从随机初始化训练一层线性自注意力(3000 步、每步 256 个任务),在 2000 个新任务上:
| 预测方法 | 均方误差 |
|---|---|
| 什么都不学(预测 0) | 5.012 |
| 一步梯度下降(η = 0.65,网格里最好的) | 1.743 |
| 训练出来的一层注意力 | 1.748 |
| 最小二乘(最优解) | 0.000 |
训练出来的层和一步梯度下降的预测之差的均方只有 0.012(预测本身的均方 3.57),“敏感度” 的余弦相似度 0.9991。打开权重看: 的左上块 ≈ 0.839 × 单位阵(非对角线绝对值平均 0.0095), 的右下角 0.740,两者相乘 ≈ 0.62,接近最好的学习率 0.65——从随机初始化出发训练出来的注意力层,自己找到了”做一步梯度下降”的那组权重。
- §3:更多层、更多示例:
| 层数 / 步数 | 训练的注意力 | 同样步数的梯度下降 | 最小二乘 |
|---|---|---|---|
| 1 | 1.748 | 1.743 | 0.000 |
| 2 | 0.592 | 1.083 | 0.000 |
| 3 | 0.144 | 0.760 | 0.000 |
| 上下文示例数 N | 一层注意力 | 一步梯度下降 |
|---|---|---|
| 5 | 3.230 | 3.366 |
| 10 | 1.963 | 1.963 |
| 20 | 1.264 | 1.209 |
| 40 | 1.041 | 0.963 |
每多一层,误差像多做一步梯度下降那样下降;训练出来的多层注意力比同样步数的普通梯度下降好得多——von Oswald et al. 发现多层版本学到了”带预条件的梯度下降”(GD++)这类更快的变体。示例越多,梯度估计越准,只在 N = 10 上训练过的注意力层也跟着变好。
第一版训练 3 层时没有做梯度裁剪,误差 3.04,比 1 层还大:多层线性注意力是参数的高次函数,训练不稳定。(代码 README 第 8 条)
4.4 理论 vs 经验
| 经验观察 | 理论 |
|---|---|
| 更大的 Transformer 更会从上下文学习 | Transformer 每层做一步梯度下降 |
| 更多的示例对更大的模型帮助更大 | 每个示例贡献一份梯度 |
| 更小的 Transformer 更依赖已有的语义 | 更小的模型内建的梯度步数有限 |
假设:线性注意力 + MLP 的 Transformer、简单的回归参照模型、浅层网络。slides 讲者的看法:这种解释主要用于理解和启发,建立在很强的假设上;上下文学习和 SGD 不同,在一些场景下更强大;联系已知的技术是好的起点,最终研究者会发展出新的理论框架来解释 LLM 的能力。
5. 小结、常见误区、练习
5.1 小结
- 注意力:不同层、不同头的熵差别很大(低层像词袋、中间层很尖、深层回升);有看相邻位置、看 [CLS] / 句号的头,也有对应语言学关系的头——但要和位置基线比(形容词→名词的头不比”看后一个词”好),要用干预确认因果作用(关掉宾语→动词的头,类别准确率 72.3% → 57.1%)。
- 探针:词汇性信息在嵌入层就有,跨越多个词的关系在更高的层;线性探针本身就能记住很多东西(控制任务接近 100%),要报告选择性;信息在训练中出现的时间不同,也不一定一直保持线性可读。
- 损失地形:预训练过的模型在小任务上泛化更好、微调的轨迹更短;但”平坦”取决于度量方式(Hessian 迹 vs 随机方向的切面给出相反结论);“更长的预训练 → 更平坦、更好”在小实验里没有重现。
- 上下文学习:大模型更会从上下文学习(第 9 讲);一层线性自注意力可以被构造成一步梯度下降,训练出来的注意力层也学到了它;但这建立在很强的假设上。
5.2 常见误区
- “注意力权重就是模型的解释”:注意力大不等于有因果作用,要做干预(§1.4)。
- “找到一个对应语法关系的头,说明模型学会了语法”:先和位置基线比(§1.3)。
- “探针准确率高 = 表示里有这个概念”:线性探针能记住随机标签,要看选择性(§2.3)。
- “学会的东西会一直待在那一层”:表示在训练中不断重组(§2.4)。
- “平坦的极小值一定泛化得好”:尖锐度依赖参数化和度量方式(§3.4)。
- “上下文学习就是梯度下降”:只在线性注意力、线性回归这类简化设置下精确成立(§4.4)。
5.3 练习
练习 1(注意力的熵):一句话有 26 个位置。(a) 均匀注意力的熵是多少?(b) 一个头把一半注意力给前一个词、另一半均匀分给其余 25 个位置,熵是多少?(c) 全部给前一个词呢?对照 §1.2 的表,第 2 层的头更像哪种?
参考答案
(a) 。(b) 。(c) 0。第 2 层的头熵 0.39~0.81,比 (b) 低得多,接近 (c)——几乎把所有注意力集中在一两个位置上(§1.2 里最爱看前一个词的头 L2H2 平均 84.7% 的注意力给了前一个词)。
练习 2(选择性):用 §2.3 的表,算出第 0 层和第 4 层的选择性。如果把探针的训练数据从 400 篇减到 50 篇,你预期控制任务的准确率怎样变?为什么?
参考答案(实测)
第 0 层 93.3% − 100.0% = −6.7%,第 4 层 99.9% − 96.7% = +3.2%。数据少了,探针更难”背下”每个词的随机标签(尤其在高层,词的身份已经被上下文冲淡):实测 50 篇时控制任务在第 0~4 层是 99.6%、98.6%、95.3%、94.7%、93.0%,真实词性几乎不变(92.9%、93.7%、100%、100%、99.9%),第 4 层的选择性从 3.2% 升到 6.9%。Hewitt & Liang 的建议:用容量更小的探针(更少的数据、更强的正则、低秩)来提高选择性,并且总要报告控制任务。
练习 3(固定偏移的基线):为什么”形容词→名词”的固定偏移基线是 100%,而”物主代词→主语”只有 58%?在 BERT 上,“宾语→动词”的固定偏移基线会比花园世界高还是低?
参考答案
花园世界里形容词永远紧挨在名词前面(“the ripe plum”),所以”看后一个词”永远对。物主代词到主语的距离不固定:限定词位置的 her 前面是”主语 + 动词”(偏移 −2,主语若是 the children 则是 −3),尾巴里的 her 前面隔着宾语、介词等(偏移 −5 到 −8),所以单一偏移只能对一部分。真实英语里宾语和动词之间可以隔着限定词、形容词、副词、从句(“ate the very large red apple that…”),固定偏移的基线会更低,一个真正”找动词”的头相对基线的优势会更明显——Clark et al. 报告的 BERT 宾语头 86.8%,固定偏移基线只有约 40%。
练习 4(Hutchinson 估计):证明当 的分量独立、等概率取 ±1 时,。用 把四种 都算一遍验证。
参考答案
;(i = j)或 0(i ≠ j,独立且均值为 0),所以期望 。四种 v:(1,1):2 + 3 + 2 = 7;(1,−1):2 + 3 − 2 = 3;(−1,1):3;(−1,−1):7。平均 5 = tr(H)。好处: 可以用两次反向传播算出(不需要写出 H),所以几十万参数的模型也能估计;代价是方差,hessian_trace 用 10~20 个样本取平均。
练习 5(为什么要按滤波器归一化):一个带 ReLU 的两层网络 。把 乘以 10、 除以 10,函数变了吗?用”沿随机方向挪动 α”的方法测尖锐度,结果变了吗?按滤波器归一化怎样解决这个问题?它解决了所有问题吗?
参考答案
ReLU 是正齐次的:,所以 完全不变,泛化能力也一样。但同样大小的随机扰动加在 上,相对它的大小变成了原来的 1/10(显得更平坦),加在 上则相对大了 10 倍(显得更尖锐)——“尖锐度”随参数的尺度改变。按滤波器归一化让每一行的扰动和那一行的参数一样长,抵消了这种逐层缩放(Li et al. 2018)。但它没有解决所有问题:Dinh et al. (2017) 指出还有别的重参数化能改变尖锐度;§3.4 里两个模型的权重”有没有结构”本身就不同,同样相对大小的扰动对它们的意义也不同。
练习 6(带预条件的梯度下降):如果输入 的各维尺度不同(协方差 不是单位阵),一步梯度下降 不是好的估计。写出”带预条件”的一步 对应的线性自注意力的 ,并说明训练出来的注意力层为什么会学到 的方向。
参考答案
查询的预测 ,所以取 的左上块为 (注意力分数 ), 照旧把 放进最后一维。无噪声时 ( 是示例的样本协方差),所以 时一步就得到真实的 w(就是最小二乘)。训练时注意力层要在大量任务上最小化平均误差,而 的协方差在任务之间是固定的 ,它会学到 (N 有限时还有修正)。本讲的实验里 ,所以学到的是”常数 × 单位阵”,对应普通的梯度下降。
练习 7(思考:探针 vs 干预):§2 的探针说”第 2 层的名词表示里能读出主谓一致”,§1.4 的干预说”关掉 L2H4,宾语的类别预测变差”。这两类证据各说明了什么、不能说明什么?设计一个实验,检验”模型在预测尾巴里的物主代词时,真的用到了名词位置上的主语信息”。
参考答案
探针说明”信息存在、可以被线性读出”,不能说明模型用到了它(可能只是顺带存着);干预说明”去掉这个部件,输出变差”,是因果证据,但去掉一个部件可能有很多副作用(其他头会补偿,或者破坏了无关的东西)。实验设计(激活修补):取两句只有主语不同的话(she picks her rose from her own garden / we pick our rose from our own garden),把句 B 在名词位置、第 l 层的隐藏状态替换到句 A 的同一位置,再看模型在尾巴里预测物主代词时,是不是从 her 变成了 our。如果替换名词位置的表示就能改变预测,说明模型确实通过名词位置传递了主语信息;如果只有替换主语位置才有效,说明它直接从主语那里读。还可以做”擦除”(amnesic probing,Elazar et al. 2021):用线性投影把可读出主语的方向从表示里去掉,看预测是否变差。
练习 8(思考:提前退出):slides 说可解释性的一个实践意义是”只用需要的部分”——提前退出。根据 §2.2 的表,如果一个下游任务只需要词性,最少用到第几层?如果需要宾语的类别呢?提前退出有什么风险?
参考答案
词性在第 0 层就有 93%,第 2 层 100%——只用前 2 层就够;宾语的类别要到第 2 层才接近 99%;“主语是谁”在第 4 层最好,就得用完整的网络。风险:(1) 探针的准确率不等于下游任务的需要,任务可能还依赖别的信息;(2) 难的样例(例如 the / my 这种需要上下文的词)恰恰需要更深的层,提前退出要按样例自适应(例如在置信度足够高时才退出,CALM 等方法);(3) 层的分工随训练变化(§2.4),换一个检查点退出点可能就不对了。
练习 9(思考:上下文学习 = 梯度下降?):列出 §4 的构造和真实 LLM 的三个差别,并说说哪些经验观察这个理论解释不了。
参考答案
差别:(1) 真实 LLM 用 softmax 注意力,不是线性注意力;(2) 真实任务不是线性回归,标签是离散的 token,输入是自然语言;(3) 真实 LLM 是在下一个 token 预测上预训练的,不是在”上下文回归”任务上专门训练的,而且有几十层、带 MLP 和大量先验知识。解释不了的:语义先验的作用(随机标签也能工作、示例的格式比正确的标签更重要——第 9 讲的 Min et al.);示例顺序的敏感性(梯度下降对求和的顺序不敏感);零样本的能力(没有示例时没有”梯度”可言);模型能”过度纠正”翻转的标签。梯度下降是理解上下文学习的一个有启发的视角,第 9 讲的”隐式贝叶斯推断”是另一个——两者都只抓住了一部分。
5.4 延伸阅读
- 原课阅读:Tenney et al. (2019), What do you learn from context?(边探针);Li et al. (2018), Visualizing the Loss Landscape of Neural Nets
- BERTology:Clark et al. (2019), What Does BERT Look At?;Tenney, Das & Pavlick (2019), BERT Rediscovers the Classical NLP Pipeline;Htut et al. (2019), Do Attention Heads in BERT Track Syntactic Dependencies?;Liu et al. (2021), Probing Across Time: What Does RoBERTa Know and When?;Rogers et al. (2020), A Primer in BERTology
- 探针与解释的方法论:Hewitt & Liang (2019), Designing and Interpreting Probes with Control Tasks;Jain & Wallace (2019), Attention is not Explanation;Elazar et al. (2021), Amnesic Probing;Meng et al. (2022), Locating and Editing Factual Associations in GPT(因果追踪、ROME);Geva et al. (2021), Transformer Feed-Forward Layers Are Key-Value Memories
- 损失地形与泛化:Hao et al. (2019), Visualizing and Understanding the Effectiveness of BERT;Liu et al. (2023), Same Pre-training Loss, Better Downstream: Implicit Bias Matters for Language Models;Hochreiter & Schmidhuber (1997), Flat Minima;Keskar et al. (2017), On Large-Batch Training…: Generalization Gap and Sharp Minima;Dinh et al. (2017), Sharp Minima Can Generalize For Deep Nets
- 上下文学习:von Oswald et al. (2023), Transformers Learn In-Context by Gradient Descent;Wei et al. (2023), Larger Language Models Do In-Context Learning Differently;Akyürek et al. (2023), What Learning Algorithm Is In-Context Learning?
- 本仓库的相关内容:第 2 讲(MLM 与注意力);第 6 讲(induction head);第 9 讲(ICL 的意外行为);第 11 讲(用注意力 / LM 反馈训练检索器)
5.5 下一讲预告
第 15 讲转向 LLM 带来的社会问题:偏见与伦理。什么是”偏见”、什么是”伤害”?怎样测量有毒的生成?过滤预训练数据——屏蔽词表、质量分类器——为什么常常适得其反,把某些群体的语言一起删掉?推理时的拒绝采样、提示,和 RLHF 各能做什么?我们会在一个只有抽象群体和抽象标记的小世界里,测量这些干预的效果和副作用。