本文翻译自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面板 解决TP3.2 404

    在配置文件中加入一下配置: location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1; } } location ...

  2. ArcEngine 调用GP里面的Merge工具

    这两天,为ArcEngine中的Merge工具的调试伤头脑筋,明明很简单的事情,就是搞不掂儿.今天忽然想到是否是中文的关系,果然,把中文修改成英文成功了.真是快郁闷死了! public static ...

  3. java练习-判断字符串是否都是数字

    方法1: package everyDayPratise; public class IsAllNumber { public static boolean method1(String s) { i ...

  4. Guava - Ordering

    guava中Ordering类是对Compartor接口的实现,但它也只是一个抽象类. 当调用Ordering.natural()方法时,它就会返回一个NaturalOrdering的对象,Natur ...

  5. js中的数据类型、以及浅拷贝和深拷贝

    一.js中的数据类型 1.基本类型(值类型):Undefined.Boolean.String.Number.Symbol 2.引用类型:函数.数组.对象.null.new Number(10)都是对 ...

  6. android 版本号大小比较

    https://www.jianshu.com/p/ee1990270ee1 网上找了很多方法都不太靠谱,有问题,自己改了改,亲试可以 大家都知道,版本号一般由以下几部分组成: 1. 主版本号 2. ...

  7. 初次使用BAT,请检查Chrome浏览器和ChromeDriver兼容性

    ChromeDriver可以理解为Chrome驱动,它是架在BAT程序和Chrome之间的桥梁.但是ChromeDriver的问题是,每个版本的兼容范围很窄,通常只能兼容3个Chrome版本. 因此, ...

  8. mybatis与Spring

    提问1:如果没有spring-mybatis,我们如何在spring中使用定义bean,如何使用事务? mybatis-Spring为我们带来多种方式的Mapper接口的注册,扫描,识别. 如果不使用 ...

  9. ABAP笔记

    ABAP程序开发,经常会遇到报表开发需求.使用ABAP的Report类型程序开发报表十分便利,用很少的代码就可以快速开发出一个报表.这种报表需求,抛开各种细枝末节,都可以归结为“三步走”:1.选择屏幕 ...

  10. NLTK——常用函数

    1.Functions Defined for NLTK's Frequency Distributions Example Description fdist = FreqDist(samples) ...