论文标题:Self-Attention Attribution:Interpreting Information Interactions Inside Transformer
论文链接:https://arxiv.org/abs/2004.11207
论文来源:AAAI 2021
一、概述
- 概述
Transformer系列模型虽然获得了广泛的成功,但是它对于人来说仍然是黑盒的,因此有关Transformer的self-attention机制的可解释性研究也在同步进行。一些研究工作表明self-attention的注意力权重分布并非直接可解释的,同时一些研究也致力于将模型决策归因于输入的token,然而这些研究大多没有揭示模型的输入与模型的结构之间的信息交互。
本文提出了一种名为ATTATTR的自注意力归因(attribution)方法,用于解释Transformer内部的信息交互(information interaction),能够指示Transformer内部的信息流。本文的实验基于BERT模型进行,因为这是一种具有代表性的Transformer-based的模型。本文提出的方法是通用的,也可以应用于其他Transformer系列的模型。
本文主要内容如下:
①本文发现self-attention的注意力权重并不总是与它们对模型决策的贡献相关联,ATTATTR这种方法通过一种新的度量可以识别出Transformer内部的重要连接,并且本文提出了一种启发式的方法来构建自注意力归因树(self-attention attribution tree),能够有效地显示模型内部的信息流。
②ATTATTR也能够用来识别重要的注意力head,然后进行裁剪,这种裁剪的方法与泰勒展开方法(一种self-attention裁剪方法)取得的效果是差不多的。另外,本文还发现对于类似的任务来说,BERT的重要head甚至是一致的。
③最后,本文通过提取对模型决策贡献最大的pattern作为攻击模型的trigger,能够对模型进行有效的攻击使其性能大幅下降。
- 背景
- multi-head self-attention
Transformer系列模型的输入是一个token的序列,用,这些token的word embedding用矩阵表示。Transformer中有堆叠的多层,Transformer计算最终第层的输出。
Transformer的核心部分是多头注意力机制,第个注意力头的计算过程可以表示为:
这里的,表示token对的注意力权重。通常有多个head,数量记作,那么多头注意力机制的计算结果表示为,这里的代表拼接操作。
- BERT
本文以BERT模型为例进行实验,注意BERT的输入会有两个特殊的token[CLS]
和[SEP]
,分别位于输入序列的开头和每个句子的结尾。BERT在微调阶段,会使用[CLS]
这个token的最后一层的embedding后连接一个softmax分类器的方式来完成分类任务。
二、方法
下图展示了BERT的一个head的注意力权重,可以观察到尽管这些权重仅来自一个head,但是这些注意力权重仍然是非常稠密的,这对我们通过这些权重直接理解token之间的交互是非常困难的,另外,尽管某些权重的数值比较大,这也不代表这对token对模型的决策是重要的:
本文中的方法倾向于将模型的决策归因于自注意力关系,也就是说要为对最终决策贡献多的token的交互分配更高的分数。对于输入句子,用代表Transformer模型,为了简便,下面会省略下标。以Transformer的一层为例,我们的目标是为每个注意力连接都分配一个归因得分,对于第个head,归因得分矩阵按照以下方式进行计算:
这里的是指哈达玛积,,代表第个head的注意力权重矩阵,计算模型对的梯度,的第个元素就代表了第个head中token和之间的交互。
那么为什么这样计算归因得分呢?首先当时,意味着在这一层中所有的token彼此之间没有互相attend。当从变动到时,如果注意力链接对模型的决策有较大的影响,那么它的梯度就应该是显著的,所以的归因得分就会相应地比较大。直观来看,不只考虑了注意力权重,也考虑了模型决策对注意力连接的敏感性。
由于上面的积分操作无法计算,因而在实际操作中选择采用上式的黎曼近似来获得归因得分矩阵,具体的采用以下公式:
实验中设置为效果较好。
下图展示了前面例子的归因得分,上述方法证明了注意力权重越大并不意味着会对模型决策作出更大的贡献,比如[SEP]
这个token和其他token的注意力权重是很大的,但是归因得分就很小,模型对于例子中的两个句子得出contradiction的结论主要依赖于“don't”和“I know”之间的连接,这是更具有可解释性的:
三、实验
本文使用BERT-base-cased模型进行实验,并且应用以下四个下游任务数据集:
①MNLI:预测一个前提是否包含假设(entailment),是否与给定的假设相矛盾(contradiction),或两者皆非(neutral);
②RTE:另一个文本蕴含数据集;
③SST-2:预测给定句子的极性;
④MRPC:预测成对的句子是否语义等价,也是文本蕴含数据集。
- 有效性分析
本文根据每一层的归因得分和注意力权重对模型的head进行裁剪,这里的归因得分依照数据golden label的概率进行计算,下图展示了不同的裁剪方式对MNLI数据集准确率的影响:
对于上图的实验结果,需要注意以下几点:
①裁剪每层的前2个最高归因得分的head会造成一个显著的准确率下降;
②保留那些高归因得分的head(裁剪低归因得分的head)能够提高模型的准确率,最高能达到97%;
③即使仅保留两个最高归因得分的head,仍然能够使模型保持较好的性能;
④依据注意力权重对模型进行裁剪所表现出来的效果没有那么显著。
这个实验结果证明了本文提出的方法的有效性,至于如何计算一个head的归因得分,将在下面的小节进行介绍。
- 用例1:注意力头裁剪
先前的实验结果表明模型中只有一小部分head对模型的最终决策起作用,在这一小节主要介绍如何识别和裁剪不重要的head。
定义一个head的重要性评价指标为:
这里的代表保留数据集中的样本,代表一个head的最大归因得分,这里的归因得分依照数据golden label的概率进行计算。
在实验中对比了其他两种模型裁剪方法,分别是依据注意力head的裁剪前后准确率差异进行裁剪的方法(作为baseline)和基于泰勒展开的方法,后者定义一个head的重要性评价指标为:
是注意力权重。
- 注意力头裁剪实验结果
实验过程是计算三种方法在200个保留数据集样本上的得分,得分低的head会被优先裁剪,下图展示了实验的结果:
实验结果表明对比baseline的方法,ATTATTR是有效的,并且对比专门设计用来进行裁剪的基于泰勒展开的方法也可以与之媲美。
- 重要注意力头的普遍性
本文除了做实验识别重要的head以外,还调查了对于不同的数据集和任务重要的head是不是一致的。实验采用Pearson系数对两组数据集中head归因得分的相关性进行了测量,实验结果如下,图中的每个点代表同一个head在两个数据集上的归因得分:
实验结果表明,只要任务是解决类似的问题,那么head的相关性会非常地高。这里的RTE,MPRC和MNLI数据集都是文本蕴含数据集,SST-2是情感分类数据集,同类数据集之间的Pearson系数非常高,不同类数据集之间就会比较低。
- 用例2:可视化Transformer内部的信息流
本文提出了一种启发式的方法来构建归因树,通过这种方法发现了Transformer内部的信息流,因此可以看到输入词之间的交互以及它们如何对最终的结果进行贡献,可以帮助我们理解Transformer倾向于捕捉什么样的依赖。
- 归因树
本文采用一种贪婪自顶向下的启发式算法来构建归因树,这样的归因树能够指示信息如何从输入的token流向最终的预测。
首先,对于每一层需要计算每个head的归因得分,然后把它们加起来作为这一层的归因得分:
更大的表明在层与有更多的交互。构建归因树的过程按照以下公式进行,需要平衡归因得分的加和(减号左边)和树的边的数量(减号右边):
代表第层的边的数量,是一个平衡的权重,用于过滤具备相对大的归因得分的交互。算法的流程如下图所示:
实验中可以对层设置,更大的将会构建更简单的树。对于分类任务来说,[CLS]
token是信息流的终点,因此对于最后一层设置。实验中观测到对于模型的预测来说,最后一层的[CLS]
token与其他所有token都有正的归因得分。下图展示了在两个数据集上构建的归因树的两个例子:
- 感受野
自我注意机制被认为具有捕获长期依赖的能力。为了更好地理解Transformer中的分层有效感受野,本文绘制了由归因树提取的交互的距离分布:
实验表明模型的最后几层和第一层会更关注长程依赖,而第二层所关注的依赖是更加局部的。而且对于成对的句子输入(比如文本蕴含任务),模型更倾向于首先在每一个句子内进行encoding,然后匹配两个句子之间的交互。
- 用例3:对抗攻击
模型决策更多地归因于注意力连接和更大的归因分数。实验中观察到,模型倾向于过分强调某些单独的pattern来进行预测,而忽略了大部分的输入,因此本文决定采用这些over-confident的pattern来作为用于对抗入侵的trigger来攻击BERT。
实验中从不同的层里提取最大归因得分的注意力依赖,也就是,并且应用这些pattern作为对抗trigger。
举例来说,如下图,在原来的句子中 “floods-ice” 和“Iowa-Florida”对最终的预测“contradict”贡献最大,那么按照在原句子中的相对位置插入其他句子,可以让这些句子的预测结果从“neutral”或者“entailment”变成到“contradict”:
实验中从3000个输入样本中提取了最大归因得分的依赖连接作为trigger,每个trrigger少于5个token,在情感分类数据集上不会使用具有明显情感倾向的词作为trigger。实验结果如下: