解构BERT:从1亿个参数中提取6种模式

栏目: 编程工具 · 发布时间: 5年前

内容简介:BERT建立在两个关键概念的基础上,NLP的许多最新进展使用了这两个概念:(1)transformer 架构

解构BERT:从1亿个参数中提取6种模式

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) 上找到它。

解构BERT:从1亿个参数中提取6种模式

该工具将注意力视为连接正在更新的位置(左)与正在关注的位置(右)的线。颜色识别相应的注意头,而线条厚度反映注意力得分。在工具的顶部,用户可以选择模型层,以及一个或多个注意头(通过单击顶部的色块,代表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”)的注意力。在这个例子中,几乎所有的注意力都集中在“去”,即序列中的下一个标记。

解构BERT:从1亿个参数中提取6种模式

左:所有代币的注意力。右:选定标记的注意权重(“i”)

在左侧,我们可以看到  [SEP]  令牌破坏了下一个令牌注意模式,因为[SEP]的大多数注意力都是针对  [CLS]  而不是下一个令牌。因此,这种模式似乎主要在每个句子中运作。

该模式与后向RNN有关,其中状态更新从右到左依次进行。模式1出现在模型的多个层上,在某种意义上模拟了RNN的周期性更新。

模式2:注意前一个词

在这种模式中,大部分注意力都集中在句子中的前一个标记上。例如,“go”的大部分注意力都指向下图中的前一个单词“i”。这种模式与最后一种模式不同; 一些注意力也分散到其他令牌,尤其是[SEP]令牌。与模式1一样,这与顺序RNN松散相关,在这种情况下是前向RNN。

解构BERT:从1亿个参数中提取6种模式 左:所有代币的注意力。右:所选令牌的注意力(“went”)

模式3:注意相同/相关的单词

在这种模式中,注意相同或相关的单词,包括源词本身。在下面的例子中,第一次出现的“store”的大部分注意力都集中在它自身和第二次出现的“store”上。这种模式并不像其他一些模式那样明显,注意力分散在许多不同的词语上。

解构BERT:从1亿个参数中提取6种模式

左:所有代币的注意力。 右:所选令牌的注意权重(“商店”)

模式4:注意其他句子中相同/相关的单词 

在这种模式中,注意另一句中相同或相关的单词。例如,第二句中“store”的大部分注意力都集中在第一句中的“store”。可以想象这对于下一句话预测任务(BERT预训练的一部分)特别有用,因为它有助于识别句子之间的关系  。

解构BERT:从1亿个参数中提取6种模式

左:所有代币的注意力。 右:所选令牌的注意权重(“store”)

模式5:注意预测单词的其他单词

在这种模式中,注意力似乎是针对可预测源词的其他词,不包括源词本身。在下面的例子中,“straw” 的大部分注意力都集中在“##berries” 上,“##berries” 的大部分注意力都集中在“straw” 上。

解构BERT:从1亿个参数中提取6种模式

左:所有代币的注意力。 右:所选标记的注意力(“## berries”)

这种模式并不像其他一些模式那样明显。例如,大部分注意力都集中在分隔符令牌( [CLS] )上,这是下一个讨论的模式6的定义特征。

模式6:注意分隔符令牌

在这种模式中,大部分注意力都集中在分隔符令牌上,即  [CLS]  令牌或  [SEP]  令牌。在下面的示例中,大部分注意力都集中在两个  [SEP]  令牌上。这可能是模型将句子级状态传播到单个标记的一种方式。

解构BERT:从1亿个参数中提取6种模式

左:所有代币的注意力。 右:所选令牌的注意权重(“store”)

笔记

有人说  ,数据可视化有点像罗夏测验:我们的解释可能会被我们自己的信念和期望所染色。虽然上面的一些模式非常明显,但其他模式有点主观,所以这些解释只应作为初步观察。

此外,上述6种模式描述了BERT的粗略注意结构,并不试图描述注意力可能捕获的语言模式。例如,模式3和模式4中可以表现出许多不同类型的“相关性”,如同义词,共同参照等。看看不同的注意力是否专注于不同类型的语义和句法关系会很有趣。

信息来源:https://www.kdnuggets.com/2019/02/deconstructing-bert-distilling-patterns-100-million-parameters.html


以上所述就是小编给大家介绍的《解构BERT:从1亿个参数中提取6种模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Rust

Programming Rust

Jim Blandy / O'Reilly Media / 2016-8-25 / GBP 47.99

This practical book introduces systems programmers to Rust, the new and cutting-edge language that’s still in the experimental/lab stage. You’ll learn how Rust offers the rare and valuable combination......一起来看看 《Programming Rust》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具