本文翻译自Are BERT Features InterBERTible?

从词袋模型到BERT

​ Mikolov等人提出Word2Vec已经过去很长时间了。当时似乎每一个玩机器学习的人都能背出“国王减去男人加上女人等于女王”这条“咒语”。如今,这些可解释的词嵌入已经成了许多基于深度学习的NLP系统的核心部分。

​ 去年10月份,Google AI放出了BERT模型,即 Bidirectional Encoder Representations from Transformers (论文, 代码)。 看来Google的研究人员又提出了一种能够学习语境的词表示模型,而且刷新了11向自然语言处理任务的记录,甚至在问答任务上超越了人类水平。但是问题还是摆在面前:这些语境词表示到底把什么信息编码进去了?它们也像一开始说的Word2Vec这种词嵌入具有可解释性吗?

​ 在本文中,我们会探究BERT表示的可解释性。我们发现我们并不需要走得很深就能窥见一些有趣的现象。

分析BERT表示

不考虑上下文的方法

​ 让我们从一个简单的例子说起,这个例子将不考虑任何上下文信息。这里,我们忽略了一个事实:我们不去管BERT本来是在连续的词上训练的,而要直接去评估单独每一个词的BERT表示。于是,在实验的剩余部分,我们会:

  1. 抽取目标词的表示

  2. 计算词之间的余弦距离

抽取 “man”, “woman”, “king”,和 “queen”的向量后,我们发现一旦采用经典的 (king - man + woman) king 实际上离queen 更远了。

Word2Vec的特性,也许在BERT上不那么奏效

但是也许我们这样实验是和领域无关的。BERT本来是训练来完成诸如Masked-LMNext-Sentence-Prediction*的。换言之,BERT的权值的训练,为每个词的表示带入了上下文的信息,而不仅仅是作为一个损失函数来帮助模型学习上下文独立的表示。

考虑语境的方法

为了减少脱离领域的影响,我们可以构建一些句子,用恰当的上下文信息,例如 “the king passed a law”, “the queen passed a law”, “the refrigerator was cold”。在这样的条件下,我们开始新的探索:

  1. 一个词放到不同的语境下,它的表示是如何变化的 (例如是在句子中做主语还是宾语,形容词是什么感情色彩的等等).
  2. 当我们从适当的上下文上抽取词语表示,语义向量空间假设还是否成立

我们先从一个简单的实验开始,用 “refrigerator”,我们生成了5个句子:

  • refrigerator (不适用任何上下文)
  • the refrigerator is in the kitchen (把 refrigerator 作为句子的主语)
  • the refrigerator is cold (再次把 refrigerator 作为句子的主语)
  • he kept the food inside the refrigerator (把 refrigerator 作为介词 ‘inside’的宾语)
  • the refrigerator passed a law (把refrigerator 放在一个不恰当的上下文中)

那么,我们确认了我们之前的假设,并发现不使用上下文的情况下返回的表示和使用上下文返回的表示时有很大差别的。此外,把 refrigerator 作为句子的主语的时候(第2,3句)返回的表示与当宾语的时候(第4句)和在一个不恰当的上下文中返回的表示也有很大差异。

你家冰箱还能用吗

让我们来看看另一个例子,这一次用 pie 生成5个句子:

  • pie (不带任何上下文)
  • the man ate a pie (把pie作为宾语 )
  • the man threw a pie (把 pie 作为宾语)
  • the pie was delicious (把 pie 作为主语)
  • the pie ate a man (把 pie 放到不恰当的上下文中)

我么能够观察到,距离比较的结果和上面 refrigerator 类似。

打仗不如做派

下面,让我们看看原本用 king, queen, manwoman的例子。我们构建了4个差不多的句子,就是主语不同。 We construct 4 nearly identical sentences, swapping out their subjects.

  • the king passed a law
  • the queen passed a law
  • the man passed a law
  • the woman passed a law

从这些句子中,我们抽取主语的BERT表示。我们获得了更好的结果:king - man + woman 的结果离 queen 近了一些。

稍微有一点效果上的提升,但是也不是很有说服力

最后,我们在看看保持句子的结构一致,但是感情色彩不同的语境下,词的表示是如何变化的。我们构建了三个句子:

  • math is a difficult subject
  • math is a hard subject
  • math is a simple subject

用这些句子,我们想要探究主语和形容词的表示会发生什么变化。非常有趣的是,我们发现是近义词的形容词(i.e. difficult and hard)有着相似的表示,而反义词(i.e. difficultand simple) 的表示则有着很大的差别。

近义词 vs. 反义词

另外,由于我们设置了不同的感情色彩,我们发现主语 math 在相同感情的语境(i.e. difficult and hard)下的表示更相似。 is more similar when the contexts have the same sentiment (i.e. difficult and hard) than if the contexts have different sentiments (i.e. difficult and simple).

主语的表示发生了变化

结论

​ 总结起来,效果还是很明显的,如同Word2Vec一样, BERT 也能学习到语义向量表示 (尽管没那么明显)。BERT真的十分依赖语境信息: 不带任何上下文的词和带上下文的词的表示有着很大的差别。

​ 请记住,总是存在用有限的证据进行过度概括的危险。以上的实验并不完整而且仅仅只是一个开始。我们仅使用了非常少的样本,而且仅仅在一种距离度量上进行评估,进行几个特定的实验。在之后 对BERT表示的研究中,应该从这几个方面展开更深入的分析。

【译】BERT表示的可解释性分析的更多相关文章

  1. [译]使用Continuous painting mode来分析页面的绘制状态

    Chrome Canary(Chrome “金丝雀版本”)目前已经支持Continuous painting mode,用于分析页面性能.这篇文章将会介绍怎么才能页面在绘制过程中找到问题和怎么利用这个 ...

  2. BERT源码分析

    一.整体 整个代码文件如下: 二.tensorflow基础 1.tf.expand_dims 作用:给定张量“ input”,此操作将在“ input”形状的尺寸索引“ axis”处插入尺寸为1的尺寸 ...

  3. C语言全局未初始化数据段分析

    前言: 在分析C语言全局未初始化变量时,发现在目标文件中全局未初始化变量并不是直接放在bss段中. 再后来发现在两个.c文件中定义同名的全局变量,链接时居然没有发生符号重定义错误.才知道C语言弱定义的 ...

  4. NNs(Neural Networks,神经网络)和Polynomial Regression(多项式回归)等价性之思考,以及深度模型可解释性原理研究与案例

    1. Main Point 0x1:行文框架 第二章:我们会分别介绍NNs神经网络和PR多项式回归各自的定义和应用场景. 第三章:讨论NNs和PR在数学公式上的等价性,NNs和PR是两个等价的理论方法 ...

  5. Bert实战---情感分类

    1.情感分析语料预处理 使用酒店评论语料,正面评论和负面评论各5000条,用BERT参数这么大的模型, 训练会产生严重过拟合,,泛化能力差的情况, 这也是我们下面需要解决的问题; 2.sigmoid二 ...

  6. 机器学习可解释性系列 - 是什么&为什么&怎么做

    机器学习可解释性分析 可解释性通常是指使用人类可以理解的方式,基于当前的业务,针对模型的结果进行总结分析: 一般来说,计算机通常无法解释它自身的预测结果,此时就需要一定的人工参与来完成可解释性工作: ...

  7. Abductive Commonsense Reasoning —— 溯因推理

    Abductive Commonsense Reasoning(溯因推理) 介绍 溯因推理是对不完全观察情境的最合理解释或假设的推论. 上图给出的是一个简明扼要的例子: 给定不同时间节点上的情境观测值 ...

  8. DataPipeline | 享物说产品负责人夏凯:数据驱动的用户增长实战

    夏凯 卡内基梅隆大学计算机系毕业,曾供职于Evernote数据团队和微软Bing.com搜索引擎广告部门.回国后作为早期成员加入小红书,先后从事大数据,用户增长,项目和团队管理等工作. 我最初是在美国 ...

  9. KNN PCA LDA

    http://blog.csdn.net/scyscyao/article/details/5987581 这学期选了门模式识别的课.发现最常见的一种情况就是,书上写的老师ppt上写的都看不懂,然后绕 ...

随机推荐

  1. linux的基本操作(一)

    一.Linux组成 1.1:Linux各模块介绍 内核:是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序. Shell:是系统的用户界面,提供了用户和内核进行交互操作的一种接口.它接收 ...

  2. linux Table is marked as crashed and should be repaired

    linux Table is marked as crashed and should be repaired 2014-07-28 10:34 1282人阅读 评论(0) 收藏 举报  分类: da ...

  3. 常用java的正则表达式

    package everyDayPratise; import java.util.regex.Pattern; public class RegexExample { public static v ...

  4. python基础知识15---三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

    阅读目录 一 三元表达式.列表推导式.生成器表达式 二 递归与二分法 三 匿名函数 四 内置函数 五 阶段性练习 一. 三元表达式.列表推导式.生成器表达式 1 三元表达式 name=input('姓 ...

  5. [css选择器]总结:IE6不支持的CSS选择符

    转载地址:https://www.wenjiwu.com/doc/zvsbii.html.此文最后也给出了原文地址,但是我点击过去发现是什么赌博彩票的地址,360也弹出小心的提示,所以这里只给出了我转 ...

  6. About Gnu Linker2

    3.5.1 Simple Assignments symbol = expression ; symbol += expression ; The first case will define sym ...

  7. windows环境 springboot+docker开发环境搭建与hello word

    1,下载安装 docker toolbox 下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ docker t ...

  8. scala中Either的一种使用场景

    用scala有一年多了,对于scala中的Option和Try使用的较为频繁,对其应用场景相对熟悉一些.而对于Either,仔细回想一下却发现几乎(完全)没有使用过,其实并不是没有遇到过Either的 ...

  9. 傻瓜学编程之block_1

    1.引出 1.1.int pp = 3;for循环为dd赋值并 调用 finprint(int ,int)函数 获取pp*dd的乘积,输出 void finalValue(int d, int sca ...

  10. postgis创建空间数据库,导入shp数据

    使用向数据库中导入数据