解构BERT,揭示其在NLP任务中的最新性能

点击上方关注,All in AI中国

解构BERT,揭示其在NLP任务中的最新性能

Transformer体系结构模型,特别是BERT,通过对一个在大型语料库上以非监督方式预先训练的模型进行微调,已经证明在许多NLP任务中非常有效。BERT模型将一系列单词作为输入,并生成一系列跨层的词嵌入向量。这些词嵌入向量考虑了单词的上下文。

最近发表的两篇论文

(1篇Finding Syntax with Structural Probes · John Hewitt

2篇Language, trees, and geometry in neural networks)

它们提供了一些几何上的见解,解释了为什么BERT表现得这么好。

下面是这些论文的一些重要发现

  • BERT的词向量输出编码了丰富的语言结构。BERT在词嵌入向量中对抽象语法树进行了大致的编码,然后将其输出到一个句子中。通过词嵌入向量的线性变换可以恢复这些树。
  • BERT似乎在互补子空间中对词向量的语法和语义特征进行了编码。
  • 一个单词的不同含义有表示形式(由句子上下文决定),它们在空间上以细粒度的方式分隔

解构BERT,揭示其在NLP任务中的最新性能

从BERT词向量中恢复句子中的解析树

语言是由离散的结构组成的,符号(单词)序列和句子的句法结构被捕捉到树状结构中。相比之下,神经网络模型对连续数据进行操作——它们将符号信息转换成高维空间中的向量。这些向量(词嵌入向量)在长度/方向(例如word2vec、fasttext等)上捕获语义相似性。

如上所述,最近的发现表明BERT字向量输出了丰富的语言结构。在一个句子的向量输出中编码的是语法树的几何近似副本。句子中的单词在高维空间中被给定位置,如果我们对这些单词向量进行特定的转换,这些位置之间的欧氏距离会映射到语法树距离。从本质上讲,我们可以通过使用特定的线性变换对单词向量进行变换,然后在单词向量之间的距离上找到最小生成树,从而恢复句子的语法树(以及具有方向边的依赖树)。

语法树中的树距(两个节点之间的树距是它们之间路径上的边数)和欧氏距离(最小生成树中节点之间的距离由词嵌入得到)之间的映射不是线性的。两个单词之间的语法树距离对应于所提取的最小生成树中相应节点之间的欧式距离的平方。第二篇论文给出了一个原因,为什么它是欧氏距离的平方,而不是欧氏距离的平方(本节剩余部分不是理解BERT模型的核心——可以跳过)。

解构BERT,揭示其在NLP任务中的最新性能

由于树枝的关系,用等距法(映射保留距离)将一棵树映射到欧几里德空间是不可能的。

例如,左边节点A和B之间的树距离为2 - d(A,X) + d(X,B)

由于d(A,B) = d(A,X) + d(X,B),在到欧几里德空间的等距映射中,A,X,B必须共线(X必须在连接A和B的直线上,才能满足上述条件)

将同样的参数应用到点A X C d(A,C) = d(A,X) + d(X,C) A X C也必须是共线的。但这意味着B = C,这是一个矛盾的结论。

然而,从树到平方距离有一个等距映射(勾股定理的嵌入),如下图所示

解构BERT,揭示其在NLP任务中的最新性能

博客中也有更多的例子

解构BERT,揭示其在NLP任务中的最新性能

因此

解构BERT,揭示其在NLP任务中的最新性能

这个博客还有一些有趣的结果。例如,随机分支的树,如果映射到一个足够高维的空间,其中每个子节点与父节点被一个随机的单位高斯向量偏移,就近似于勾股定理的嵌入。一个实际的含义是上下文嵌入近似于勾股定理对句子依赖关系解析树的嵌入。从距离的平方性质来看,我们可以从向量中恢复嵌入树的整体形状。

恢复树的形状(受节点间边缘长度的影响)只近似于理想树—这种差异有一些模式。依赖关系之间的平均嵌入距离相差很大。目前还不清楚这些差异意味着什么。可能是BERTs表示,除了依赖解析树之外还有其他信息。

解构BERT,揭示其在NLP任务中的最新性能

顺便提一句,如果我们对基因/蛋白质序列做同样的实验来检查其中是否包含信息,不一定能证实实际的三维几何配置,我们将会很有趣地看到一些异常的边缘是接近的(部分/相同的/如上图所示)。

语法树也被捕获在一个句子的attention 矩阵中

第二篇论文还显示了句子的attention矩阵捕获语法树。比如我们看看这句“the old fox saw the new dog”,其中的单词对“old,fox”。 我们可以通过从所有层中的attention矩阵获取其对的标量值来构造向量(BERT基础的12个层,每层有12个 attention heads),我们训练线性分类器作为输入model-wide 的attention 向量,如果两个单词之间存在关系以及关系的类型,则这些分类器表现得相当好(即使不是最先进的结果)表明句法信息在句子的attention 矩阵中可编码。

解构BERT,揭示其在NLP任务中的最新性能

BERT似乎在它的嵌入中编码语义特征

通过简单地可视化die这样的单词在不同的上下文中的嵌入,我们可以看到词义是如何影响嵌入的。

解构BERT,揭示其在NLP任务中的最新性能

一般情况下,embeddings这个词表示

  • 单词的不同含义是分开的(上面三个集群表示单词"die")。词义消歧就是通过这种分离来实现的
  • 在聚类中,似乎存在着更细微意义的分离(参见下面的嵌入词"lie")。

解构BERT,揭示其在NLP任务中的最新性能

  • 与前面看到的位置表示语法类似,这里的位置表示语义

第二篇论文声称,词的感觉是在一个较低的维度空间中捕捉到的,尽管还不清楚这是如何做到的。根据这一观察,它出现了一个向量,在互补子空间中同时编码句法和语义信息

使用已发布代码的实验

第一篇论文的Github存储库有代码,可以从上面描述的句子中恢复语法树GitHub - john-hewitt/structural-probes: Codebase for testing whether hidden states of neural networks encode discrete structures.

从上面句子的词嵌入向量中恢复的解析树以及相同句子的依赖解析器输出如下所示

解构BERT,揭示其在NLP任务中的最新性能

结论

今后将按照上述思路解构模型

是否可能揭示更多的语言结构(如解析树)或更多的子空间

了解内部表示的几何结构可能会发现改进模型体系结构的领域

相关推荐