电子说
导读
在finetune BERT的时候发生了什么?
2019年可以被称为NLP的Transformer之年:这种架构主导了排行榜并激发了许多分析研究。毫无疑问,最受欢迎的Transformer是BERT(Devlin, Chang, Lee, & Toutanova, 2019)。除了其众多的应用,许多研究探索了各种语言知识的模型,通常得出这样的结论,这种语言知识确实存在,至少在某种程度上(Goldberg, 2019; Hewitt & Manning, 2019; Ettinger, 2019)。
这项工作的重点是补充的问题:在finetune BERT的时候发生了什么?特别是,有多少可从语言学角度解释的自注意力模式被认为是它的优势,可以实际用来解决下游的任务?
为了回答这个问题,我们用BERT finetune了以下GLUE (Wang et al., 2018)的任务和数据集:
语义检测 (MRPC and QQP);
文本相似度 (STS-B);
情感分析 (SST-2);
文本蕴含 (RTE);
自然语言推理 (QNLI, MNLI).
BERT的简单介绍
BERT代表Transformer的双向编码器表示。该模型基本上是一个多层双向Transformer编码器 (Devlin, Chang, Lee, & Toutanova, 2019),有多个关于它的工作原理的优秀指南,包括图解的Transformer.。我们关注的是Transformer架构的一个特定组件,即self-attention。简而言之,它是一种衡量输入和输出序列组件的方法,以便对它们之间的关系(甚至远程依赖关系)进行建模。
作为一个简单的例子,让我们假设我们需要创建一个句子“Tom is a black cat”的表示。BERT在对“cat”进行编码时,可能会选择更多地关注“Tom”,而较少关注“is”、“a”、“black”。这可以表示为权重向量(对于句子中的每个单词)。当模型对序列中的每个单词进行编码时,就会计算出这些向量,从而得到一个方阵,我们称之为“自注意力图”。
现在,我们还不清楚“Tom”和“cat”之间的关系是否总是最好的。要回答关于猫的颜色的问题,模特最好关注“black”而不是“Tom”。幸运的是,它不必选择。BERT(和其他Transformer)很强大很大程度上归功于这样一个事实:在多层中有多个头,它们都学会了构建独立的自注意力图。理论上,这可以赋予模型“在不同位置关注来自不同表示子空间的信息”的能力(Vaswani et al., 2017)。换句话说,模型将能够在当前任务的几个备选表示之间进行选择。
自注意力权重的计算大部分发生在BERT的预训练中:该模型(预)针对两项任务(Masked语言模型和下一个句子预测)进行训练,然后针对个别下游任务(如情绪分析)进行finetune。这种分离的基本思想训练过程分为semi-supervised训练和finetune阶段,其中finetune阶段是监督学习:迁移任务的数据集通常太小,一般不够了解整个语言,但大型文本语料库可以通过语言建模用于此目的(和其他类似的)。因此,我们可以获得独立于任务的句子和文本的信息表示,然后这些句子和文本可以“适应”后续任务。
让我们在这里指出,“适应”应该工作的确切方式在BERT论文或GPT技术报告(其中强调了预训练/finetune方法)中都没有详细描述。然而,如果注意力本身是为了提供一种对部分的输入序列“链接”,增加信息量,多头,多层架构需要提供多个可选择的自注意力图,可能finetune过程会教模型依靠对手头的任务更有用的自注意力图。例如,在情感分析任务中,名词和形容词之间的关系比名词和介词之间的关系更重要,因此,finetune会理想地教会模型更多地依赖更有用的自注意力图。
学到的自注意力模式是什么类型的,每种类型有多少?
那么BERT的自注意力模式是什么呢?我们找到了五个,如下图所示:
图1,BERT自注意力模式的类型。每个图像上的两个轴表示输入样本的BERT标记,颜色表示绝对注意力权重(深色表示更大的权重)。
垂直模式表示对单个标记的关注,它通常是[SEP]标记(表示句子结束的特殊标记)或[CLS]标记(作为提供给分类器的完整序列表示使用的特殊BERT标记)。
对角线模式表示注意前面/后面的单词;
块模式表示对序列中所有标记的关注或多或少是一致的;
从理论上讲,异构模式是唯一能够对应输入序列各部分之间的任何有意义的关系的模式(尽管不一定如此)。
以下是BERT在七项GLUE任务中五种注意力的比例(每一列代表所有层中所有头部的100%):
图2所示。在选定的GLUE任务上,BERT的自注意映射类型的比例进行了微调。
虽然具体的比例因任务而异,但在大多数情况下,可能有意义的模式占BERT所有自注意力权重的不到一半。至少有三分之一的BERT head只关注[SEP]和[CLS] —— 这种策略不能为下一层的表示提供很多有意义的信息。它还表明,该模型严重参数化过度,这解释了最近蒸馏方法的成功尝试 (Sanh, Debut, Chaumond, & Wolf, 2019; Jiao et al., 2019)。
值得注意的是,我们使用的是BERT-base,即较小的模型,在16层中有12个头。如果它已经被过度参数化了,这就意味着BERT-large和所有后来的模型,都是过度参数化的,其中一些是30倍大(Wu et al., 2016)。
这样对[SEP]和[CLS]的依赖也可能表明,要么BERT以某种方式“吸收”了前面层获得的信息表示,后续的self-attention图并不需要太多,要么BERT某种程度上整体不依赖于self-attention。
fine-tuning的时候发生了什么?
我们的下一个问题是BERT的微调过程中发生了什么变化。下面的热图显示了在finetune之前和之后,每个头和每一层扁平的自注意映射矩阵之间的余弦相似性。较深的颜色表示在表现上有更多的差异。对于所有的GLUE任务,进行了3个epochs的finetune。
图3所示,在经过训练和调整的BERT中,平展的自注意图之间存在余弦相似性。颜色越深表示差异越大。
我们发现,大多数注意力的权重并没有发生太大的变化,对于大多数任务来说,最后两层变化最大。这些变化似乎不支持任何特定类型的有意义的注意力模式。相反,我们发现这个模型基本上更依赖于垂直注意力模式。在SST的例子中,在最后一层中较厚的垂直注意模式是由于对最终[SEP]和它之前的标点符号的联合注意,我们观察到这是垂直注意模式的另一个常见目标。
图4,自注意力图的一个单独的例子,在SST上对BERT进行finetune。
这有两个可能的解释:
垂直模式在某种程度上是足够的,也就是说,标记表示在某种程度上吸收了前一层的有意义的注意力模式。我们确实发现最早的层更关注[CLS],然后[SEP]开始主导大多数任务(见图6)
手头的任务实际上并不需要细粒度的、有意义的注意力模式,而这种模式本应是Transformers的主要特征。
finetune会造成多大的区别?
考虑到在预训练和调优中使用的数据集的巨大差异,以及非常不同的训练目标,研究调优实际上产生了多大的差异是很有趣的。据我们所知,这个问题以前没有人提出过。
我们对每个选择的GLUE数据集进行了三个实验:
预训练模型的权重冻结,并使用特定任务的分类器,看看BERT的表现
从正态分布中随机初始化模型,并对任务数据集进行3个epochs的finetune,然后看看BERT的表现
使用官方的预训练BERT-base模型,在任务数据集上finetune3个epochs,然后看看BERT的表现
实验结果如下:
虽然很明显,预训练+finetune设置可以产生最高的结果,但随机+finetune的BERT在所有任务上都表现得令人不安,除了文本相似性。事实上,对于情绪分析来说,随机初始化和finetune BERT可以得到80%的准确率,而且不需要任何预训练。考虑到大型预训练变压Transformer的规模,这就提出了一个严重的问题:昂贵的预训练是否能带来足够的经济效益。它还提出了关于NLP数据集的严重问题,这些数据集显然可以在没有太多任务无关的语言知识的情况下解决,而这些任务无关的语言知识是预xunl+finetune设置应该提供的。
18.01.2020更新:感谢Sam Bowman指出,随机BERT结果总体上可与预训练Transformer的GLUE基线相当,并且可以很好地解释为这些任务在没有深入语言知识的情况下可以解决的程度。NLP社区在更困难的数据集上需要更多的工作,实际上需要这样的知识,在过渡期间,我们至少应该切换到SuperGLUE。请注意,对于这些任务,GLUE基线和大多数发布的结果都使用单词嵌入或基于计数的单词向量作为输入,而我们的随机BERT是完全随机的。因此,直接比较并不完全公平。然而,特别是对于SST,这种比较可以与原始的递归神经张量网络进行比较(Socher et al., 2013)。这个2013年的模型相比之下很小,而且也采用随机向量作为输入表示,但是它在二进制分类上比我们的随机+finetuneBERT多7点。
有没有可以在语言学上解释的自注意力头?
在这一点上,有几项研究试图找出自注意力的头编码特定类型的信息,但大多数集中在语法上。我们做了一个实验,关注框架语义元素:我们从FrameNet 1.7抽取了473个句子,最多12个标记的长度,并且核心框架元素距离目标词至少2个标记。在下面的例子中,是体验者和分词之间的关系唤起了emotion_directframe。可以说,这种关系对于理解一个给定的句子所描述的情况是至关重要的,任何声称能够提供语言信息的自注意力图的机制都应该反映出这些关系(可能包括许多其他关系)。
我们通过预训练的BERT得到这些句子的表示法,计算与标注的框架语义关系对应的标记对之间的最大权值。图5表示FrameNet数据集中所有示例的这些分数的平均值。我们发现两个头(第1层的头2,第7层的头6)比其他头更关注这些框架语义关系。
但是,在推理的时候,到底是什么信息在起作用呢?
我们认为,通过对训练前的BERT权值进行探查,得出某些信息实际上是编码的结论,未免过于草率。考虑到模型的大小,可能会发现任何其他关系的编码的类似证明(事实上,Jawahar等人发现在那个方向上的不同分解方案之间没有显著的差异)。真正的问题是,模型在推理时是否真的依赖于这些信息。
为了确定我们认为对帧语义关系编码有用的两个头是否真的被finetune过的BERT使用,我们进行了一项消融研究,一次禁用一个头(即用统一注意力替换习得的注意力权重)。图6显示了在我们的示例中所有GLUE任务的热图,每个单元格显示的是总体性能,当给定的头被关闭。很明显,虽然整体模式不同任务之间,我们最好随机删除头 —— 包括那些我们确认为编码有意义的信息,应该为最相关的任务。许多头也可以在不影响任何性能的情况下关闭,这再次表明,即使是BERT-base也严重参数化了。
图6,模型的性能,一次禁用一个头,蓝色线表示没有禁用头的基线性能。较深的颜色对应较高的性能分数。
机器翻译任务也得出了类似的独立结论,即将注意力权重归零,而不是用统一注意力代替它们(Michel, Levy, & Neubig, 2019)。我们进一步表明,这种观察不仅扩展到头,而且扩展到整个层:根据任务的不同,整个层可能对模型性能有害!
图7,禁用一个层的模型的性能。
讨论
我们的主要贡献在于,虽然BERT的大多数研究都集中在探索预训练好的模型上,但我们提出了一个问题,即在微调过程中会发生什么,以及通过自注意力机制获得的表征有多大意义。到目前为止,我们还没有找到语言上有意义的自注意力图对微调BERT的表现至关重要的证据。我们的研究结果有助于从以下几个方向对基于Transformer模型的属性进行持续的讨论:
a)BERT过度参数化了。在我们的实验中,我们一次只禁用一个头,而在大多数情况下,模型的性能并没有受到影响,这一事实表明,许多头具有功能重复,即禁用一个头不会损害模型,因为相同的信息可以在其他地方获得。这个结果指向了过度参数化,并解释了像ALBert和TinyBERT这样的小型BERT的成功。
这种过度参数化意味着,BERT可能会有一些非常重要的头,它们在语言上具有有意义的自注意力模式,但为了证明这一点,我们必须尝试禁用所有可能的头组合(这是不可行的)。在同一时期的一项研究中提出了一个很有前途的替代方案:(Voita, Talbot, Moiseev, Sennrich, & Titov, 2019)通过使用具有修剪效果的正则化目标对模型进行finetune,确定了基础Transformer的“重要”头。
b)BERT不需要那么聪明来完成这些任务。BERT在没有预训练的情况下可以很好地完成大多数GLUE任务,这一事实表明,在很大程度上,不需要太多的语言知识就可以解决这些问题。与口头推理不同,它可能学会依靠数据集中的各种捷径、偏见和人为因素来做出正确的预测。在这种情况下,它的自注意力图不一定对我们有意义。这一发现支持了当前许多数据集问题的最新发现(Gururangan et al., 2018; McCoy, Pavlick, & Linzen, 2019)。
另一种解释是BERT的成功是由于玄学,而不是由于自注意力。例如,在finetune之后对标点符号的高度关注可能意味着该模型实际上学会了依赖于某些其他组件,或者存在一些我们无法理解的深层模式。此外,注意力在多大程度上可以用来解释模型预测的原则目前正在辩论(Jain & Wallace, 2019;Serrano & Smith, 2019;Wiegreffe & Pinter, 2019)。
全部0条评论
快来发表一下你的评论吧 !