Loading
选择最自信的头,每次都会选到位置头。它报告的是“it → was, 0.962”——而那是它对每个句子里每个词都给出的答案。
打开仪器界面的第一个版本,会挑出那一行最尖锐的头展示给你。这看起来理所当然:十六个可能的答案里,展示最自信的那个。
它报告的是 it → was, 0.962。
这个数字很大。它也毫无价值——因为那个头对你能输入的每个句子里的每个词,回答的都是"紧接着的下一个词"。它并不是对 it 有信心。它对一切都有信心,方式相同,永远如此。
关键结论: 自信与信息量是两个不同的维度。Transformer 里最确定的那个头,通常正是已经不再理会问题的那个。
十六个头——四层,每层四个——训练时没有任何"分工"的指令,也没有重复劳动的惩罚。它们还是分了工。
有些变成位置头:无论你问哪个词,它们的权重都落在相邻词上。另一些则由内容驱动:问题变了,它们的答案也跟着变。
用一个统计量就能把两者分开。对每个内容词,把这个头分配给紧邻的前一个词和后一个词的权重加起来,再在整句上求平均。称它为邻接偏置。总是回答"下一个"的头会接近 1;答案取决于查询词的头则很低。
邻接偏置是一个头在所有内容行上分配给紧邻词的平均权重。高于 0.35 的头,无论你问什么都回答“下一个词”,因此仪器在挑选展示对象时会跳过它。
在五个句子上测量,十六个头清晰地分成两群,而且两群之间的间隔足够宽,可以放一个阈值。高于 0.35 的头被视为位置头,在界面挑选展示对象时会被跳过——在用来设定阈值的那些句子上,还剩十一个头在场。
这个数目并不固定,上面的图正好说明了原因:一个头的邻接偏置是在它面前的那个句子上测得的,因此一个处在边界上的头可能在这句越线、在那句不越线。在 "The keys to the cabinet are on the table" 上,越过 0.35 的是六个头而不是五个,因为 L2H3 在这里是 0.434。阈值是模型的属性;哪些头超过它,则是模型与句子共同的属性。
这个数字不是凭品味定的。实测分布在"最低的位置头"和"最高的内容头"之间有一段空白,0.35 正落在其中。一个抖动的统计量会让被选中的头在句子之间无缘无故地闪来闪去——这也是邻接偏置胜过更直观的替代方案(统计 argmax 偏移重复的频率)的原因。在八个词的句子上,那个计数会摆动十五个百分点;邻接偏置只动两到六。
逐个点击这些词。位置头每次都给出相同的结构性答案——这正是“以自信度挑选”行不通的原因。而远距离头的答案,取决于你问的是哪个词。
逐个点击这些词。位置头的答案会以固定偏移跟着你走——它描述的是句子的几何结构,不是意义。而远距离头的答案会跳来跳去,因为它真的在回应你问的问题。
两行都是真实的注意力。两行都加起来等于 1。其中一行对聚焦词有信息量,另一行没有,而光盯着权重看永远分不出哪行是哪行。你需要那个统计量。
把位置头排除在外之后,同样的句子开始给出读者可以验证的答案:
| 查询词 | 答案 | 权重 |
|---|---|---|
are | keys | 0.499 |
who | Students | 0.700 |
that | Birds | 0.860 |
suitcase | trophy | 0.612 |
are → keys 是跨越四个词的主谓一致。that → Birds 是关系代词找到它的先行词。这些数字比 0.962 小得多,价值却大得多——因为它们随句子而变,而且这种变化你读一遍句子就能核对。
这个取舍让人不适,但它是对的:一个有意义的小数字,胜过一个毫无意义的大数字。 一个以"权重好看"为目标的界面会留下位置头:看上去更自信,说的却少得多。
跳过五个头是一个选择。界面里对此有披露,它也站得住脚,但访客看到的是剩余十一个答案中的一个——由我写的规则选出,阈值则来自五个句子上的测量。
这离"这就是模型的想法"还很远。它更接近于:在那些不只是背诵语序的头当中,这是对你点击的那个词说得最具体的一个。
给头起名字的作用超出我的预期。"第 3 层 · 第 2 头"什么也没告诉访客。"第 3 层 · 第 2 头 · 远距离"则给出一个断言,而访客可以通过点击不同的词、看答案是否原地不动来验证它。
于是自然引出下一个问题:既然有十六个答案,为什么不干脆取平均?确实有一种标准技术正是这么做的,它在数学上是正确的——而在四层模型上它几乎毫无用处。第 7 篇讲的就是为什么。
下一篇:在完全没有推理引擎的浏览器里运行 BERT。