K-BERT论文解读

一、前言

这篇文章将bert同knowledge graph(KG) 结合在一起。一解决了Heterogeneous embedding space问题(KG的实体向量与word embedding 不连续的问题。)解决了knowledge Noise知识噪音.

北大的团队一直有做KG的,上次在EMNLP中看到的一个本科生还是硕士?就是做了一个KG局部更新方法,使得KG能够更快速的更新知识。这次的这篇论文就把BERT跟KG结合在一起了。

二、相关工作

论文中介绍了一下BERT, ERNIE, BERT-WWM, RoBERTa, XLNet 等耳熟能详的pretrained方法。值得一看的是这篇:

THU-ERNIE (Zhang et al. 2019) modified the encoder of BERT to an aggregator for the mutual integration of word and entities.

上述文章里在KG与BERT的方向上做了一个pioneer, 但是没有把实体之间的关系,也就是KG的边包含进来。还有一个在这个方向上的尝试是:

COMET (Bosselut et al. 2019) employed the triples in KG as corpus to train GPT (Radford et al. 2018) for common sense learning, which is very inefficient。

KG跟word embedding的结合实际上有很多种方法。从2014年起就有很多偏论文在做这方面的工作了。Wang et al. (2014)把 KG跟embedding的信息参考W2v的ideal映射到两个方向上去。剩下的不列举。作者指出,这些方法实际上都是有问题的,因为他们都遵循同一种思路:“word2vec + transE”, THU-ERNIE其实也是这样,就是把两个embedding 拼在一起。

三、方法

介绍方法前, 有一下几个定义。
定义句子:

image.png

这里w就是汉字。且
image.png

V这里是指vocabulary 也就是单词。KG,这里由K进行表示,对于一个三元组ε ∈ K,
image.png

wiwk是实体的名字,rj ∈ V 就是两个实体之间的关系。

好了,K-BERT咋做的呢,如下图:


图1

一共有knowledge layer, embedding layer, seeing layer and mask-transformer共四个模型

1. knowledge layer:

这个部分就是输入一个sentence, 得到一个sentence tree。


图2

比如,我输入一个

Tim Cook is currently visiting Beijing now

那我会得到以下的Tree,这时候上面的红色的标记还没有:


图3

这个tree会转化为两个东西,一个是visible矩阵,一个是embedding Representation. visalbe矩阵给Seeing layer, embedding representation给embedding层。

2.Embedding layer

这里k-bert跟bert的embedding基本一致,他们这里把bert用的postion embedding扩展了。 有一个soft 和 hard position。这样model就能够在一定程度上识别sentence tree的结构了。

3.Seeing layer

这个是本篇文章的重点,核心ideal。大家注意看那个Tree. 如果这个tree新长出来的枝条太茂密,就有可能冲淡主干本来的意思,这也就是Knowlage noise的问题。visable矩阵跟这个seeing layer就是用来解决这个问题的。下图中,每个word只能看到同一个branch上的词。比如position index=3的 CEO这个词, 其实也就只能看到1234.


image.png

4.Mask-Transformer

这个Seeing layer 就会用来控制后续的这个masked attention layer. 如下图所见,这也就解决了KN问题。


image.png

三、实验部分
这部分没细看,总体来说,作者拿了很多数据库来跑这个实验,效果很好,很香。不得不说,北大还是有钱做实验的。


image.png

这里的Ablation studies 值得注意:
这里他做了一个有效性验证。就是embedding层的两个position encoding.验证了有效性。

你可能感兴趣的:(K-BERT论文解读)