Attention Module is Not Only a Weight: Analyzing Transformers with Vector Norms
<center>
摘要</center>
目的: 注意力模块为何成功以及它们捕获了什么样的语言信息。
本文和已有研究的不同之处:
- 以前的研究主要分析注意力权重,以查看注意力模块从每个输入中收集多少信息以产生输出;
- 在本文中,我们指出注意力权重只是决定自我注意力模块输出的两个因素之一,并且将转换后的输入向量纳入分析;
工作: 测量加权向量的范数作为每个输入对输出的贡献。
结论: 对BERT和基于Transformer的神经机器翻译系统中的自我注意模块的分析表明,注意模块的行为非常直观,这与以前的发现相反。
- BERT的注意力模块并没有把大量注意力放到特殊token,如[CLS],[SEP]等;
- Transformer的注意力模块擅长捕捉词对齐。
一、介绍
当前基于Transformer的模型在NLP的各种任务都取得了最好的效果。但这些模型的成功并没有得到很好的解释,因此大量的研究都集中在它们的语言能力上。由于注意力模块是Transformer的核心组成部分,因此研究的一项突出重点是注意力权重和各种语言现象的相关性。但是,目前社区尚未就注意力模块如何以及为什么运行良好达成共识。
为了在这一项研究中更进一步,本文提出了一种新颖的方法来分析注意力模块的行为。曾经跟踪注意力权重的方法是基于 “如果一个输入向量比其它输入向量获得了更大的注意力权重,则该输入向量对输出的贡献更大” 的假设。相比之下,本文首先提出的见解是,注意力模块的输出的计算可以分解为变换后的输入向量的加权和,并指出仅分析注意力权重不足以调查整个注意力模块的行为。然后,本文提出一种使用加权向量范数(长度)的分析方法,该方法也考虑了先前忽略的因子,即转换后的向量,以估计每个输入向量在输出向量计算中的贡献。
在本文实验中,首先分析了BERT中的自注意力模块。本文凭经验表明,输入token对其输出隐藏向量的贡献与以前的工作有很大不同。特别是,以前的一些报告显示了一些非直观的观察结果。 例如,逗号,句点和特殊token(例如分隔符 [SEP])之类的特殊token往往会获得显著的注意力权重。本文的实验表明,与以前的注意力权重跟踪方法不同,本文基于范数的方法产生了更直观的观察结果。
最后,本文在基于Transformer的神经机器翻译(NMT)系统中分析了源—目标注意力模块。使用基于范数的方法观察到NMT系统的属性与以前的结果明显不同,与注意力权重分析中的先前发现相反,它们的注意力模块隐式学习了单词对齐。
本文贡献如下:
- 提出了一种基于向量范数的注意力模块分析方法,该方法考虑了先前被忽略的因素(转换后的输入向量)以及注意力权重;
- 我们使用基于范数的方法对BERT中的自注意力模块进行了分析,发现:
(1) 先前被忽略的向量(转换后的输入向量)的范数的分散很大;
(2) 注意力模块对特殊token的关注度不大;
(3) 注意力模块倾向于减少常用词。 - 对基于Transformer的NMT系统中分析了源—目标注意力模块,发现与先前的发现相反,该注意力模块隐式地执行了单词对齐。
二、背景
1. 注意力模块

注意模块的概述如图1所示。在注意模块中,使用输入矢量,权重和偏差的加权和来计算输出矢量。 直观地,当分配给某个矢量的权重较大时(图1中的蓝色圆圈),模块将注意力集中在输入矢量上,而权重较小的矢量则受到较少的关注。
$x_i$ 代表原始向量,输出向量 $y_i$ 的计算过程如图一所示
其中
即,首先计算注意力权重 $\alpha_{i,j}$ ,然后对值向量 $v(x_j)$ 进行 $\alpha_{i,j}$ 加权,对加权后的值向量求和,最后通过 $W^O\in\mathbb{R}^{d^{\prime}\times d},b^O\in\mathbb{R}^d$ 进行仿射变换。
如果 $\tilde{y}_i\in\mathcal{X}$ ,这个模块称为自注意力模块,它在BERT中被实现。在 Transformer 这个 Sequence2Sequence 模型的编码器和解码器之间的注意力模块中, $\mathcal{X}$ 编码器的堆栈表示,向量 $\tilde{y}_i$ 和 $y_i$ 对应于解码器的第 $i$ 个 token
2. 加权向量和注意力模块
通过简单的重构,我们可以看到注意力模块计算了输入向量的加权和。 利用矩阵乘积的线性特点,我们可以将等式重写为:
公式3显示注意力模块首先对每个输入向量 $x$ 进行变换以生成 $f(x)$ 并计算注意力权重,然后将 $f(x)$ 的总和与偏置 $b^O$ 相加。
3. 注意力权重分析的问题
注意力模块通过聚合句子的相关信息来更新表示,因此,在先前的研究中,已经通过分析注意力权重的大小来研究从每个输入中获取多少信息来产生输出。
但这部分的分析是基于一个假设:如果一个输入向量赋予了一个比其它输入向量大的注意力权重,那么这个输入向量比其它输入向量对输出向量的贡献更大。但是,该假设无视要加权的向量的大小。 直观地,在注意力权重相等的情况下,较大的向量将比较小的向量对输出向量的贡献更大。
忽略 $f(x_j)$ 的影响在图二进行了说明。这里假定输入向量 $x_1$ 的变换向量 $f(x_j)$ 非常小 ($||f(x_j)||\approx 0$) ,同时他获得了比其它输入更大的注意力权重 $\alpha_{i,1}$。在这种情况下,即使输入 $x_1$ 对输出向量的贡献,例如 $y_i$ 很小,仅关注注意力权重也可能导致错误的观察,即该输入向量 $x_1$ 对输出 $y_i$ 的贡献最大。在过去的研究中,或许正是因为这个原因,基于注意力权重的分析已经产生了不直观的观察。What Does BERT Look At An Analysis of BERT’s Attention 这篇论文指出,特殊 token 如逗号、句号,分隔符等的输入向量趋向于获得非常大的注意力权重,然而,直观上讲它们对于训练任务(MLM和NSP)相较于丰富内容的 token 应该受到限制。
三、 建议:范数作为关注度
正如上一节提到的,在过去的工作中,在公式(3)中仅仅考虑了$\alpha_{i,j}$,但是$f(x_j)$却被忽略了。在这篇论文中,我们的主要建议是通过使用$\alpha_{i,j}f(x_j)$评估输入向量 $x_j$ 到输出向量$y_i$的贡献。正如我们将显示的,这种差异在探索注意模块的行为方面确实很重要。
为了解决上述问题,我们建议使用 $||\alpha f(x)||$(这是等式(3)中加权的转换向量的标准欧几里得范数(长度))作为一种分析注意力模块行为的新颖方法。 与之前仅观察到注意力权重的研究不同,我们分析 $||\alpha f(x)||$ 和 $||f(x)||$ 的行为,并获得对注意力模块工作原理的更深入了解。 与以前的基于权重的分析相比,我们将这种建议的分析注意力模块的方式称为基于范数的分析。
在实验部分(第4和第5节)中,我们经验表明,通过使用基于范数的分析而不是基于权重的分析,可以对注意力模块的行为获得更直观和有意义的观察结果。 值得注意的是,我们的基于规范的分析可以自然地扩展到Transformer,BERT等中实现的多头注意模块,因为多头注意模块是注意模块的自然扩展,并且它是线性的可分解的,即,注意头(注意模块)平行布置,并且多头注意力模块的输出是所有注意力头的输出矢量的总和。
四、试验1:BERT
首先,我们初步展示了先前忽略的影响因子,即转换后的向量的范数,它可能影响BERT中注意力模块分析的结果。然后,我们使用基于范数的分析方法重新测试了曾经在BERT中使用基于权重的分析方法的结果。最终,我们引入了曾经BERT被忽略的属性。
通用设置: 效仿之前的研究,我们分析了预训练的拥有12层神经网络和12个注意力头的bert-base-uncased模型的注意力模块。我们使用了论文"What Does BERT Look At? An Analysis of BERT’s Attention"提供的数据。这个数据包含了从 Wikipedia 提取的992条句子,每个句子以 [CLS] paragraph1 [SEP] paragraph2 [SEP] 的形式包含两个连续的段落。每个句子包含最多128个token,平均每个句子包含122个token。
4.1 $f(x)$ 是否有影响?
$|\alpha f(x)|$ 和 $\alpha$ 有什么不同作为一个初步的证明,我们分析了 $|f(x)|$ 变量的系数。基于公式 (3),如果 $|f(x)|$ 是一个定值,权重 $\alpha$ 可能是 $|\alpha f(x)|$ 的一个好的近似逼近。也就是说,如果 $|f(x)|$ 是一个常量,那么我们基于范数的分析是不值得应用的。
所有数据首先输入到模型,然后计算 $|f(x)|$ 变量的系数。表1显示变量系数的平均值时0.22,$|f(x)|$ 的值通常在平均值的 0.78 倍和 1.22 倍之间变化。因此,$\alpha$ 和 $|\alpha f(x)|$ 之间的不同可以归咎到 $|f(x)|$ 的散度上,它促使我们在分析注意力模块时将 $|f(x)|$ 考虑进去。附件 A 显示了 $|x|$ 和仿射变换 $f$ 的影响。
4.2 重新检测先前关注的现象
在这一部分,通过使用我们基于范数的分析方法,我们重新调查了曾经基于权重的报告的BERT的关注情况。
设置: 首先,把数据输入BERT,然后获取每个注意力头的 $\alpha$ 和 $|\alpha f(x)|$,按照"What Does BERT Look At? An Analysis of BERT’s Attention",我们报告了下面的类型: [CLS] 、[SEP]、句号、逗号和其它token。
结果: 图三展示了 $\alpha$ 和 $|\alpha f(x)|$ 完全不同的趋势,图3(a) 显示特殊token([SEP]、[CLS]和标点)的词向量获得非常大的注意力权重。然而,这样的观察是不直观的,因为这些标记按期望不具有如此的语言信息并且对于预训练任务(即,MLM和NSP)没有太大用处。但是,这种趋势确实与基于权重的分析报告一致。相反,我们基于范数的方法引入了一个直观的观察,那些特殊 token 的词向量的贡献通常很小(图3(b))。
"What Does BERT Look At? An Analysis of BERT’s Attention" 假设:如果在输入向量中没有必要的信息,则 BERT 为保证出现在任何输入序列中的[SEP]令牌分配较大的权重,而不通过注意模块合并任何其他信息。请注意,注意力模块的约束条件是注意力权重之和为1.0(请参见公式2)。"What Does BERT Look At? An Analysis of BERT’s Attention" 称这个操作为“no-op”(无操作)。这个假设令人信服,但是,仍然不清楚分配给此类特殊 token 的强大关注权重如何收集任何东西。我们基于范数的分析表明,该数量实际上很小(图3b),这支持了BERT进行“no-op”的解释。
分析 $\alpha$ 和 $|f(x)|$ 之间的关系:
- 本文作者: 程序猪-渔枫
- 本文链接: https://over-shine.github.io/2020/08/21/Attention-Module-is-Not-Only-a-Weight-Analyzing-Transformers-with-Vector-Norms/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!