第 14 讲:可解释性方法

Large Language Models: Methods and Applications · Lecture 14。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

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

本篇目录

对应原课: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 内部可能怎样运作的直觉。三个问题:

  1. BERT 里捕捉到了什么?——注意力模式;用探针检查表示里存了哪些能力。
  2. 预训练模型为什么能泛化?——损失地形;语言模型的隐式偏好。
  3. 上下文学习在做什么?——语义先验还是输入—标签映射?和梯度下降有什么关系?

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平均
12.982.862.942.912.92
20.480.390.810.690.59
31.412.141.561.121.56
41.840.831.161.431.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:对每种关系、每个头,从关系的起点出发,注意力最大的位置是不是关系的终点?基线:总是看固定偏移的位置,取最好的偏移。

关系实例数最好的头准确率最好的固定偏移基线准确率
宾语→动词1001L2H479.9%−270.2%
形容词→名词298L3H499.0%+1100.0%
物主代词→主语672L4H487.8%−258.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%
关掉”宾语→动词”的头 L2H418.7%57.1%
对照:关掉随机的头 L3H2 / L3H1 / L4H122.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 个检查点做同样的探针,每个任务取各层中最好的:

训练步数词性主谓一致主语是谁宾语类别
093.5%67.2%35.6%70.0%
10093.8%67.2%33.9%69.2%
30094.3%77.2%50.7%66.2%
100099.4%88.5%58.9%84.8%
300099.9%81.0%46.7%97.8%
6000100.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.0001100.0%72.5% ± 3.0%
从随机初始化训练0.0005100.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.470.0260.6441.796
从随机初始化训练0.580.0010.0260.171

两种量法给出了相反的结论:按 Hessian 的迹,预训练的解略平坦;按随机方向的切面,预训练的解反而尖锐得多。“尖锐”取决于怎样度量:随机初始化训练出的网络,权重大多还是随机的、没有结构,往随机方向挪一挪对输出影响很小;预训练的权重高度结构化,同样相对大小的随机扰动会破坏它学到的东西。Dinh et al. (2017) 证明,只要换一种参数化,同一个函数的”尖锐度”可以被任意改变。“平坦 ↔ 泛化”是大量经验观察支持的关联,不是定律——比较时必须说清楚用的是哪种度量。

优化轨迹(代码 03 §3):

走了多远(相对起点的范数)直线上 t = 0.25t = 0.5t = 0.75
从预训练微调11.4%0.5710.2210.008
从随机初始化训练22.8%0.5890.2890.027

从预训练出发,参数只需要挪动一半的相对距离——起点已经在一个好的区域附近,和 Hao et al. 的”又短又直”一致。两条直线上的损失都平稳下降。

3.5 实验:预训练得更久,更平坦、更好吗?

代码 03 §4:

检查点MLM 验证损失MLM 损失的 Hessian 迹微调后的测试准确率(3 个种子)
3002.8390182.6770.9% ± 6.9%
10001.413084.6676.3% ± 1.3%
30000.867532.8167.6% ± 1.8%
60000.742740.1272.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 是 e=[x;y]e = [x; y],查询的 y 位置填 0。线性自注意力(没有 softmax)

ej←ej+1N∑i∈上下文(WVei)(ei⊤WKQ ej)e_j \leftarrow e_j + \frac{1}{N}\sum_{i \in \text{上下文}} (W_V e_i)(e_i^\top W_{KQ}\, e_j)

取 WKQW_{KQ} 的左上角为单位阵(注意力分数 = xi⋅xqx_i \cdot x_q),WVW_V 只把 ηyi\eta y_i 放进最后一维,查询就得到

y^q=ηN∑iyi (xi⋅xq)=w1⋅xq,w1=w0−η∇L(w0)=ηN∑iyixi(w0=0)\hat y_q = \frac{\eta}{N}\sum_i y_i\,(x_i \cdot x_q) = w_1 \cdot x_q, \qquad w_1 = w_0 - \eta \nabla L(w_0) = \frac{\eta}{N}\sum_i y_i x_i \quad (w_0 = 0)

——一层线性自注意力恰好是”在上下文示例上做一步梯度下降”。

4.3 实验:训练出来的注意力层学到了什么

代码 04:每个任务是随机的线性函数 y=w⊤xy = w^\top x(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),“敏感度” ∂y^/∂xq\partial\hat y/\partial x_q 的余弦相似度 0.9991。打开权重看:WKQW_{KQ} 的左上块 ≈ 0.839 × 单位阵(非对角线绝对值平均 0.0095),WVW_V 的右下角 0.740,两者相乘 ≈ 0.62,接近最好的学习率 0.65——从随机初始化出发训练出来的注意力层,自己找到了”做一步梯度下降”的那组权重。

  • §3:更多层、更多示例:
层数 / 步数训练的注意力同样步数的梯度下降最小二乘
11.7481.7430.000
20.5921.0830.000
30.1440.7600.000
上下文示例数 N一层注意力一步梯度下降
53.2303.366
101.9631.963
201.2641.209
401.0410.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 小结

  1. 注意力:不同层、不同头的熵差别很大(低层像词袋、中间层很尖、深层回升);有看相邻位置、看 [CLS] / 句号的头,也有对应语言学关系的头——但要和位置基线比(形容词→名词的头不比”看后一个词”好),要用干预确认因果作用(关掉宾语→动词的头,类别准确率 72.3% → 57.1%)。
  2. 探针:词汇性信息在嵌入层就有,跨越多个词的关系在更高的层;线性探针本身就能记住很多东西(控制任务接近 100%),要报告选择性;信息在训练中出现的时间不同,也不一定一直保持线性可读。
  3. 损失地形:预训练过的模型在小任务上泛化更好、微调的轨迹更短;但”平坦”取决于度量方式(Hessian 迹 vs 随机方向的切面给出相反结论);“更长的预训练 → 更平坦、更好”在小实验里没有重现。
  4. 上下文学习:大模型更会从上下文学习(第 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) ln⁡26=3.26\ln 26 = 3.26。(b) −0.5ln⁡0.5−25×0.02ln⁡0.02=0.347+1.956=2.30-0.5\ln 0.5 - 25 \times 0.02 \ln 0.02 = 0.347 + 1.956 = 2.30。(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 估计):证明当 vv 的分量独立、等概率取 ±1 时,E[v⊤Hv]=tr(H)\mathbb{E}[v^\top H v] = \mathrm{tr}(H)。用 H=(2113)H = \begin{pmatrix}2 & 1\\ 1 & 3\end{pmatrix} 把四种 vv 都算一遍验证。

参考答案

v⊤Hv=∑i,jHijvivjv^\top H v = \sum_{i,j} H_{ij} v_i v_j;E[vivj]=1\mathbb{E}[v_i v_j] = 1(i = j)或 0(i ≠ j,独立且均值为 0),所以期望 =∑iHii=tr(H)= \sum_i H_{ii} = \mathrm{tr}(H)。四种 v:(1,1):2 + 3 + 2 = 7;(1,−1):2 + 3 − 2 = 3;(−1,1):3;(−1,−1):7。平均 5 = tr(H)。好处:HvHv 可以用两次反向传播算出(不需要写出 H),所以几十万参数的模型也能估计;代价是方差,hessian_trace 用 10~20 个样本取平均。

练习 5(为什么要按滤波器归一化):一个带 ReLU 的两层网络 f(x)=W2 ReLU(W1x)f(x) = W_2\,\mathrm{ReLU}(W_1 x)。把 W1W_1 乘以 10、W2W_2 除以 10,函数变了吗?用”沿随机方向挪动 α”的方法测尖锐度,结果变了吗?按滤波器归一化怎样解决这个问题?它解决了所有问题吗?

参考答案

ReLU 是正齐次的:ReLU(10z)=10 ReLU(z)\mathrm{ReLU}(10z) = 10\,\mathrm{ReLU}(z),所以 ff 完全不变,泛化能力也一样。但同样大小的随机扰动加在 W1W_1 上,相对它的大小变成了原来的 1/10(显得更平坦),加在 W2W_2 上则相对大了 10 倍(显得更尖锐)——“尖锐度”随参数的尺度改变。按滤波器归一化让每一行的扰动和那一行的参数一样长,抵消了这种逐层缩放(Li et al. 2018)。但它没有解决所有问题:Dinh et al. (2017) 指出还有别的重参数化能改变尖锐度;§3.4 里两个模型的权重”有没有结构”本身就不同,同样相对大小的扰动对它们的意义也不同。

练习 6(带预条件的梯度下降):如果输入 xx 的各维尺度不同(协方差 Σ\Sigma 不是单位阵),一步梯度下降 w1=ηN∑iyixiw_1 = \frac{\eta}{N}\sum_i y_i x_i 不是好的估计。写出”带预条件”的一步 w1=1NΓ∑iyixiw_1 = \frac{1}{N}\Gamma\sum_i y_i x_i 对应的线性自注意力的 WKQW_{KQ},并说明训练出来的注意力层为什么会学到 Γ≈Σ−1\Gamma \approx \Sigma^{-1} 的方向。

参考答案

查询的预测 y^q=w1⊤xq=1N∑iyi xi⊤Γ⊤xq\hat y_q = w_1^\top x_q = \frac{1}{N}\sum_i y_i\, x_i^\top \Gamma^\top x_q,所以取 WKQW_{KQ} 的左上块为 Γ⊤\Gamma^\top(注意力分数 xi⊤Γ⊤xqx_i^\top \Gamma^\top x_q),WVW_V 照旧把 yiy_i 放进最后一维。无噪声时 1N∑iyixi=Σ^w\frac{1}{N}\sum_i y_i x_i = \hat\Sigma w(Σ^\hat\Sigma 是示例的样本协方差),所以 Γ=Σ^−1\Gamma = \hat\Sigma^{-1} 时一步就得到真实的 w(就是最小二乘)。训练时注意力层要在大量任务上最小化平均误差,而 xx 的协方差在任务之间是固定的 Σ\Sigma,它会学到 Γ≈c Σ−1\Gamma \approx c\,\Sigma^{-1}(N 有限时还有修正)。本讲的实验里 Σ=I\Sigma = I,所以学到的是”常数 × 单位阵”,对应普通的梯度下降。

练习 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 各能做什么?我们会在一个只有抽象群体和抽象标记的小世界里,测量这些干预的效果和副作用。

← 返回课程目录