本文是Bert系列论文解读第六篇
TinyBert:超细节应用模型蒸馏,有关蒸馏的疑问看他就够了
[论文分享] | RoBERTa:喂XLNet在吗,出来挨打了
导读
自从BERT推出之后,在文本理解领域取得了非常好的效果。之后很多工作都是关注模型本身和模型输出,为什么预训练模型可以取得这么好的效果,我们对此的了解并不多。了解这些不仅可以让我们更好的理解模型,而且可以让我们发现模型的缺陷,同时帮助我们去设计更好的模型。本文将为大家介绍两篇文章,这两篇文章分别从语法分析的角度和Attention map的角度做了大量的实验,以分析是什么,让BERT变得这么强。
What does BERT learn about the structure of language
本文主要研究了BERT不同层之间学习到的语法句法的内容,文章采用**bert-base-uncased模型,共12层,hidden size为768,共12个注意力头,共110M参数。**作者设计了4个不同的实验来分析BERT对文本中文法和句法的理解。
实验1:Phrasal Syntax
首先作者研究了BERT对短语的理解,作者计算了不同层的输出的结果中的span representation,计算方式就是截取文本的某一段,然后将段首和段尾拼接。然后作者采用t-SNE的方式进行展示。
结论:随着层数的加深,模型对短语信息的获取也逐渐被稀释。
实验2: Probing Tasks
探测任务是设计一些特定的分类任务(一般会包括一些语言学信息),将这些任务作为辅助分类器加在BERT的不同输出层之后,来判断模型对语言学信息学习的程度。
本文设计了10个探测任务,分别是:SentLen(判断句子长度),WC(词语在句子中是否出现),BShift(对词语顺序的敏感程度),TreeDepth(语法树),TopConst(语法书top level的顺序),Tense(文法任务),SubjNum(subject数量),ObjNum(object数量),SOMO(对动词,名词替换的敏感度),CoordInv(协作分句连词的随机交换)。
实验结果如下:
结论:结果表明BERT编码了丰富的语言学层次信息。表层信息特征在底层网络,句法信息特征在中间层网络,语义信息特征在高层网络。
实验3: Subject-Verb Agreement
主谓一致目标是为了探测神经网络是否可以正确编码语法结构。研究发现当句子中有更多和主语,谓语有关但是相反的名词插入之后预测动词的数量变得困难。这部分的做法同样是为每一层设计了辅助分类器。实验结果如下,列数表示在主谓之间插入的混淆名词的平均距离。
结论:结果表明在大多数情况下,中间层网络表现得更好,这也印证了上一部分句法特征主要在BERT中间层进行编码的假设。另外,随着插入名词的增多,BERT更高层的网络也逐渐能够处理长程依赖问题,效果要比低层网络更好,这证明BERT只有有更深的层数才能在大多数自然语言处理(NLP)上更有竞争力。
实验4: Compositional Structure
作者采用TPDN(Tensor Product Decomposition Networks)来探索BERT是否可以学习到文章中整体的组成结构。TPDN通过基于使用向量乘积和的预先选择的方案(role scheme)来组合输入符号表示。一个单词的方案是从根节点到他自身的语法树的路径,作者对于一个给定的角色设计,如果一个TPDN模型能够很好地被训练去估计一个神经网络学到的表征,那么这个角色设计就很可能能够确定这个神经网络模型学到的组合性特征。
作者设计了5种不同的角色方案,left-to-right,right-to-left,bag-of-words,bidirectional以及tree实验结果如下:
结论:BERT高层的网络学习到了语法树结构。
What Does BERT Look At? An Analysis of BERT’s Attention
- 论文链接: arxiv.org/abs/1906.04…
本文主要从attention map的角度来探索BERT的可解释性,因为attention的权重表示当计算下一个词的时候当前词的重要程度。本文针对BERT的144个attention头,来分析为什么BERT可以打到这么好的效果。
Surface-Level Patterns in Attention
作者首先通过可视化attention的权重,得到了几种不同的attention的pattern。如下图所示有的attention关注所有的词(broadly),有的attention关注下一个token,有的attention关注SEP符号,有的attention关注标点符号。
Probing Individual Attention Heads
作者还分析了BERT对词语之间依存关系的识别效果。什么是依存关系呢?我们可以简单理解成词语和词语之间的依赖关系,依存关系认为“谓语”是一个句子的中心,其他成分与动词或直接或间接的产生关系。
通过对词语之间依存关系的分析,作者发现BERT无法对所有的依存关系有比较好的处理,但是特定的层会对特定的依存关系识别的比较好。
Probing Attention Head Combinations
作者还设计了一个分类器探寻BERT对词语之间的dependency的学习情况。从实验结果来看BERT对英语语法和词语之间的依赖还是有一定的感知能力的。
Clustering Attention Heads
同一层不同的attention head学习到的行为是否相同?为了探究这个问题作者对attention head的输出进行的聚类,聚类结果如下。可以看出同一层的attention head倾向于有类似的行为特征。
结论与思考
以上两篇文章分别从文法角度和Attention的角度对BERT做了一些分析,文中可以看到
- BERT可以学到语言学的信息,而且深层的BERT学习到的信息较浅层的BERT更为丰富
- 但是BERT无法在一层非常全面的学习到文本中的语言学信息,特定的层可能会学到一些特定的语言学信息
除此之外,我还了解到了语言学里比较常见的探测实验,以及如何语言学中比较常见的分析方法如文法分析,依存关系分析等。真是让人迷茫。
当然本文只是简单地介绍了两篇文章的一些结论,论文里还非常详细的介绍了实验方法和实验的一些细节感兴趣的同学可以去阅读原文。