解构BERT:从1亿个参数中提取6种模式
谷歌的BERT算法已经成为一种“统治它们的一种模式。”BERT建立在两个关键概念的基础上,NLP的许多最新进展使用了这两个概念:(1)transformer 架构(2)无监督预训练。
2018年标志着自然语言处理领域的转折点,一系列深度学习模型在NLP任务中实现了最先进的结果,从问答到情感分类。最近,谷歌的BERT算法已经成为一种“统治所有人的一种模式”,基于其在各种任务中的卓越性能。
BERT建立在两个关键概念的基础上,NLP的许多最新进展使用了这两个概念:
(1)transformer 架构
(2)无人监督预训练
该transformer是完全基于注意力的方法,放弃了RNN的顺序结构,比如经典的序列模型。
BERT也经过预先训练; 通过两个无监督的任务预先学习它的权重:蒙面语言建模(预测给定左右上下文的缺失单词)和下一个句子预测(预测一个句子是否跟随另一个句子)。因此,对于每个新任务,BERT不需要从头开始训练; 相反,它的重量是微调的。
有关BERT的更多详细信息,请查看 The Illustrated Bert:https://jalammar.github.io/illustrated-bert/
BERT是一个(多头)野兽
Bert不像传统的注意力模型那样在RNN的隐藏状态上使用平坦的注意力结构。相反,BERT使用多层注意力(12或24取决于模型),并且还在每层(12或16)中包含多个注意力“头”。由于模型权重不在层之间共享,因此单个BERT模型有效地具有多达24 x 16 = 384种不同的注意机制。
可视化BERT
由于BERT的复杂性,可能难以直观了解其学习权重的含义。一般而言,深度学习模型是众所周知的不透明的,并且已经开发了各种可视化工具来帮助理解它们。
但是,作者没有找到一个可以阐明BERT正在学习的注意模式。幸运的是,Tensor2Tensor在编码器 - 解码器变换器模型中具有可视化注意力的优秀工具,因此作者使用BERT的PyTorch实现对其进行了修改以使用BERT的架构,改编的界面如下所示。你可以在Github(https://github.com/jessevig/bertviz)上找到它。
该工具将注意力视为连接正在更新的位置(左)与正在关注的位置(右)的线。颜色识别相应的注意头,而线条厚度反映注意力得分。在工具的顶部,用户可以选择模型层,以及一个或多个注意头(通过单击顶部的色块,代表12个头)。
BERT实际上学到了什么?
作者使用该工具探索预训练BERT模型(BERT-Base,无套装版本)的各个层/头的注意模式,尝试了不同的输入值,但出于演示目的,只使用以下输入:
句子A: I went to the store.
句子B: At the store, I bought fresh strawberries.
BERT使用WordPiece标记化并插入特殊分类器([CLS ])和分隔符([SEP])标记,因此实际输入序列为:
[CLS] i went to the store . [SEP] at the store , i bought fresh straw ##berries . [SEP]
作者发现了一些相当独特且令人惊讶的直观注意模式。下面确定了六个关键模式,每个关键模式都显示了展示模式的特定图层/头部的可视化。
模式1:注意下一个词
在这种模式中,特定位置的大部分注意力都指向序列中的下一个标记。下面我们看到第2层头部0的示例。(所选头部由顶部颜色条中突出显示的方块表示。)左边的图显示所有标记的注意力,而右侧显示一个选定标记(“i”)的注意力。在这个例子中,几乎所有的注意力都集中在“去”,即序列中的下一个标记。
左:所有代币的注意力。 右:选定标记的注意权重(“i”)
在左侧,我们可以看到 [SEP] 令牌破坏了下一个令牌注意模式,因为[SEP]的大多数注意力都是针对 [CLS] 而不是下一个令牌。因此,这种模式似乎主要在每个句子中运作。
该模式与后向RNN有关,其中状态更新从右到左依次进行。模式1出现在模型的多个层上,在某种意义上模拟了RNN的周期性更新。
模式2:注意前一个词
在这种模式中,大部分注意力都集中在句子中的前一个标记上。例如,“go”的大部分注意力都指向下图中的前一个单词“i”。这种模式与最后一种模式不同; 一些注意力也分散到其他令牌,尤其是[SEP]令牌。与模式1一样,这与顺序RNN松散相关,在这种情况下是前向RNN。
左:所有代币的注意力。右:所选令牌的注意力(“went”)
模式3:注意相同/相关的单词
在这种模式中,注意相同或相关的单词,包括源词本身。在下面的例子中,第一次出现的“store”的大部分注意力都集中在它自身和第二次出现的“store”上。这种模式并不像其他一些模式那样明显,注意力分散在许多不同的词语上。
左:所有代币的注意力。 右:所选令牌的注意权重(“商店”)
模式4:注意其他句子中相同/相关的单词
在这种模式中,注意另一句中相同或相关的单词。例如,第二句中“store”的大部分注意力都集中在第一句中的“store”。可以想象这对于下一句话预测任务(BERT预训练的一部分)特别有用,因为它有助于识别句子之间的关系 。
左:所有代币的注意力。 右:所选令牌的注意权重(“store”)
模式5:注意预测单词的其他单词
在这种模式中,注意力似乎是针对可预测源词的其他词,不包括源词本身。在下面的例子中,“straw” 的大部分注意力都集中在“##berries” 上,“##berries” 的大部分注意力都集中在“straw” 上。
左:所有代币的注意力。 右:所选标记的注意力(“## berries”)
这种模式并不像其他一些模式那样明显。例如,大部分注意力都集中在分隔符令牌([CLS])上,这是下一个讨论的模式6的定义特征。
模式6:注意分隔符令牌
在这种模式中,大部分注意力都集中在分隔符令牌上,即 [CLS] 令牌或 [SEP] 令牌。在下面的示例中,大部分注意力都集中在两个 [SEP] 令牌上。这可能是模型将句子级状态传播到单个标记的一种方式。
左:所有代币的注意力。 右:所选令牌的注意权重(“store”)
笔记
有人说 ,数据可视化有点像罗夏测验:我们的解释可能会被我们自己的信念和期望所染色。虽然上面的一些模式非常明显,但其他模式有点主观,所以这些解释只应作为初步观察。
此外,上述6种模式描述了BERT的粗略注意结构,并不试图描述注意力可能捕获的语言模式。例如,模式3和模式4中可以表现出许多不同类型的“相关性”,如同义词,共同参照等。看看不同的注意力是否专注于不同类型的语义和句法关系会很有趣。
信息来源:https://www.kdnuggets.com/2019/02/deconstructing-bert-distilling-patterns-100-million-parameters.html
学术头条已建立微信交流群,想进群的同学请加学术君微信:AMiner308,记得备注:名字+单位/学校噢!