扰动掩码,你没玩过的BERT全新用法

举报
kourei 发表于 2020/07/31 09:33:47 2020/07/31
【摘要】 论文标题:Perturbed Masking: Parameter-free Probing for Analyzing and Interpreting BERT论文链接:https://arxiv.org/abs/2004.14786简介BERT在各大leaderboard上的横扫带火了几个大的研究方向,一是如何训练一个更强、更快的语言模型,二是如何在下游任务上加入BERT来提升模型的表...

论文标题:Perturbed Masking: Parameter-free Probing for Analyzing and Interpreting BERT

论文链接:https://arxiv.org/abs/2004.14786


简介

BERT在各大leaderboard上的横扫带火了几个大的研究方向,一是如何训练一个更强、更快的语言模型,二是如何在下游任务上加入BERT来提升模型的表现,以及一个相对小众的,但是大家都比较感兴趣的问题:为啥BERT效果这么棒?

 

在最近召开的ACL会议上,华为诺亚方舟实验室语音语义团队提出了一种无监督的探索BERT可解释性的方法——扰动掩码(Perturbed Masking)。这里对该文章进行解读,我们会首先概述一下相关背景知识并介绍有监督的可解释性研究的做法及其弊端,然后以一个例子来介绍文中提出的扰动掩码的具体做法,并在文末展望一下这项技术的可能的应用。

 

背景:预训练语言模型中蕴藏的语言学知识

人类的沟通交流是通过一段一段的文字来实现的,但是在这简单的从左往右的序列背后,其实包含了很多复杂的语言结构。比如说最简单的断句,“一位友好的哥谭市民”,你既可以断成“一位/友好的/哥谭/市民”,也可以断成“一位/友好/的哥/谭市民”。更复杂的结构还有比如依存句法(下图),和成分句法。

image.png

过往的很多研究表明,将这些语言学知识引入到神经网络当中,能够显著地提升模型的性能。于是有的研究者不禁想:BERT这么强大,有没有可能就是它通过自监督(self-supervised)训练从纯文本中学到这些知识?

 

背景:基于有监督Probing的可解释性研究

为了验证上面这个想法,研究者们提出了一种叫做probing的技术。我们延续上面那个例子来看看如何利用probing探究BERT有没有学习到依存句法知识。具体做法如下图:

image.png

1.   首先是把这个句子输入到BERT当中,并拿到每个词的向量表达。

2.   假设我们想知道BERT有没有捕捉到“一位”和“友好”这两个词之间的关系,我们就把他俩的向量
,输入到一个多层感知机当中。

3.   我们的目标是经过训练之后,看这个简单的感知机能不能正确地分类识别出他们之间的主谓关系。

研究者们认为,如果经过训练之后,这个网络能达到很高的分类准确率,就可以说明BERT确实是学到了句法的依存知识。这里面蕴含的一个假设是:这个多层感知机只含有很少量的参数,并不足以完全学会这种依存关系,所以高准确率要被归功于模型本身。

但是最近的一些研究(John Hewitt et al., 2019)表明,事情并没有那么简单。

他们在EMNLP2019的论文中指出,尽管这些引入的网络只含有非常少量的参数,但它们完全有可能记住需要probing的任务。换句话说,如果使用这样有监督的形式来解释BERT的话,你很难界定到底是BERT本身,还是你引入的参数学到了这些语言学知识。为了避免这个问题,我们提出了一种完全无监督的基于BERT的句法分析方法 —— 扰动掩码(Perturbed Masking)

 

扰动掩码(Perturbed Masking)

整体思想很直接,句法结构,其实本质上描述的是词和词之间的某种关系,如果我们能从BERT当中拿到词和词之间相互“作用”的信息,就能利用一些算法解析出句法结构。具体的做法可以参照下面这张图:

image.png

比如说你想知道“谭”这个字对 “哥”这个字有多大影响。

1.   我们先把“哥”从原始的句子中mask掉(左图),然后拿到BERT基于上下文生成的“哥”的向量

2.   接下来我们再次去改动句子,这次我们把“谭”和“哥”同时mask掉(右图)。然后再次拿到“哥”对应的向量表达

3.   通过计算这两个向量之间的差异,比如向量距离:
,我们能够得到这么一个信息:在缺失了“谭”这个字的上下文中,BERT是如何model“哥”这个字的。我们在文中把这个信息称做“谭”对“哥”的影响

把上面这个过程在每两个字之间重复一遍,我们可以得到一个描述了这个句子中,字和字之间关系的矩阵。之后我们就可以利用一些经典的基于图的parsing算法从这个矩阵里解析出句法结构。通过把我们生成的树和语言学家们标注好的句法树进行比较,我们就可以量化地知道BERT到底学到了什么程度的句法知识。

那么
有什么直观上的解释吗:

想象一下,如果BERT对“友好的哥谭市民”的理解是“友好/的哥/谭市民”,那么
这个距离不会特别大,因为“谭”对于预测“哥”来说不是特别重要,后面完全可以是张市民,李市民,陈市民。而如果BERT将其理解为“友好的/哥谭/市民”,那么显而易见的,缺失了“谭”会对“哥”的向量产生比较大的影响,导致
的增大。


实验

我们在一些常见的句法分析数据集上进行了大量实验(详见论文)。

实验结果表明,BERT确实从纯文本中通过自监督学习到了一定程度的句法知识。但是我们也注意到,BERT所“理解”的句法结构,似乎和语言学家们定义好的结构有些出入。比如在PTB10上(Penn Treebank中长度小于10的句子),用我们的无监督方法推导出来的句法树UAS分数只有58.6(得分范围是0-100)。

但考虑到BERT训练过程中并没有接受到任何句法相关的监督信息,并且其训练规模如此之大(训练语料包含330亿个单词,约36万本书)我们不禁产生了一个新的疑问:鉴于BERT在很多任务上的强势表现,有没有可能它学到了某种比语言学家们定义的还要好的句法结构?

为了验证这个想法,我们选择了实体(aspect-level)情感分类这个任务。过往的研究表明,在这个任务中加入依存信息能够有效地提高分类准确率。研究者们使用训练好的解析器(在PTB上UAS得分约为93)来从语料中抽取依存句法树,并作为先验知识将其加入到模型中。

与之相对的,我们把这些解析器提供的句法树替换成用我们的无监督方法推导出来的句法树来进行对比实验。结果如下图:

image.png

注:PWCN是模型名称,+Dep表示使用解析器提供的句法树,+Eisner表示用BERT+扰动掩码+Eisner解析算法得到句法树(以下简称BERT树)

我们可以看到,在Laptop这个数据集上,使用BERT树的效果并不比使用更贴近人类定义的句法树(由解析器提供)差。在restaurant这个数据集上,使用BERT树甚至对分类准确率提升还要更大。

这让人不禁遐想,BERT在很多下游任务上效果如此之好,有没有可能就是因为它学到一种可能和人类的定义不太相同的,但是在实际应用上效果非常显著的句法结构?


应用

那么,这个技术除了用来解释BERT之外,还有什么用处呢?

1.   无监督的依存分析,成分分析。对于很多低资源语言来说(比如藏语),根本没有语料让你用于句法分析的训练,这个时候无监督的句法分析就尤其意义重大了。无监督的句法分析目前仅靠词性标注的信息就已经取得了不错的表现,在BERT的加持下,是不是有一些新的机会。比如说用我们的方法抽取出一些依存树来作为distant-supervision。

2.   中文分词。已经有网友尝试把Perturbed Masking应用于无监督的中文分词 (苏剑林, 2020),下图展示了他们的一些分词效果

image.png

3.   对下游任务进行数据增强。我们在前文说到,在下游任务中加入BERT提取到句法信息能够提高模型的表现,那么这以后是不是能够作为一种实用的数据增强的手段?毕竟BERT is all you need :)

 

Bibliography

苏剑林. (2020, June 10). 无监督分词和句法分析!原来BERT还可以这样用.

Retrieved from https://kexue.fm/archives/7476



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。