论文笔记《Knowledge Enhanced Contextual Word Representations》
Motivition
作者的出发点有几个:
- 尽管BERT这种预训练模型取得了state-of-art的成绩。但是、因为他们没有包含真实世界的实体,所以导致这些模型也很难覆盖真实世界的知识。
没有实体没有知识怎么办呢?Knowledge bases、知识库有。 - 知识库不仅拥有丰富的高质量、人类产生的知识,而且他们包含与原始文本中互补的信息,还能够编码事实性的知识。所以用知识库可以解决因不频繁出现但是常识的mention或者长距离依赖造成的难以学习选择偏好的问题
一些解释
- 实体(Entity):知识库中完整定义的,唯一存在的条目,每一个实体都可以看作是指代它的名词短语或代词构成的集合
例:(巴拉克-奥巴马={美国总统,奥巴马,第44任美国总统,他})。 - 指称(mention):实体在自然语言文本中的别名或另一种指代形式。
例:美国总统(名词词组)、奥巴马(命名实体)、第44任美国总统、他(代词)等。 - 选择偏好(Selectional Preference):动词的倾向性。谓语(Predicate)对其论元(Argument)是有一定选择倾向性的,不是什么词语都可以通过简单排列组合进行搭配的。[百度百科]
KnowBert
KAR
关键思想
关键思想:在输入文本中显式建模实体跨度(Entity spans),并使用实体链接器(Entity Linker)从KB中检测mention、检索相关的实体嵌入(Entity embeddings),以形成知识增强的实体跨度表示形式。然后使用word-to-entity attention将单词的表示重新上下文化,以携带全部的实体信息。
优点
- 不针对特定任务,可以fine-tune
- 轻量,增加了少量的参数和运行时间
- 便于融合其他KB
方法
1、他人工作:从KB中检测mention、检索相关的实体嵌入(Entity embeddings)
输入:文本
输出:候选实体列表与之对应的先验概率
例: Prince sang Purple Rain, she …
[Prince] sang [Purple [Rain]],[she]…
检测mention的方法是2017年的共指消解文章中提及的方法,这里就不展开介绍了,作者也是拿来直接用。2017年的文章做了这两个事情,1、mention检测。2、共指消解。举个例子,输入文本Prince sang Purple Rain, she …,通过mention检测可以获得[Prince] sang [Purple [Rain]],[she],这几个mention,然而这句话当中,Prince和she共同指代同一个实体,那在传统的embedding方式中这个Prince和she的编码可能不太一致,共指消解的目的就是消除这样的不一致。
至于检索相关的实体,作者使用的是基于规则的方式,也是前人的工作。
Entity embeddings呢,对于不同的数据库作者的做法不完全一致,作者使用三类数据库中的知识,对于图结构的数据库,作者使用了2019年知识图谱embedding的最新工作获得实体嵌入,对于仅有实体元数据的数据库,作者在实验部分介绍到他们使用doc2vec的方式直接从Wikipedia描述中学习Wikipedia页面标题的300维嵌入。两种融合在一起的数据库作者也介绍了他们使用的方法。
总之,在本文中,输入一段文本,作者可以检测其中的mention,检索获得对应的Entity Embedding列表,同时也获得实体对应的先验概率。这些是不参与训练的。
KAR
KAR插入在BERT层间,是整个KAR的输入,是BERT的层间的隐状态。
- 第一步为了与Entity Embedding维度一致,对做了一个线性投影,得到了
- 第二步作者使用之前提到过的共指消解的方法,检测到Prince、Purple Rain和Rain这三个mention,并进行了消解,得到了消解后的编码。这个是mention跨度的表示。
- 第三步,作者通过一个多头self attention,使得mention可以获得全局信息,进而影响到后续的链接决策中,这一步得到了。
- 第四步,也就是之前提到的Entity Linker,作者希望通过训练得到一个可以将mention正确连接到对应实体embedding的连接器。首先、他将每个mention对应的候选实体列表中的实体embedding依次打分。打分的方式是这个公式
如果我们有ground truth,也就是这个mention所应该真正对应的实体,那么我们就可以对连接器进行训练。
Loss使用的是这两个当中的之一:
都是希望groundtruth对应的打分应该高。Max-margin loss还希望除了groundtruth的其他打分应该比较低。
在回到我们的第四步,作者将mention对应的打分列表作为了权重,加权实体embedding求和和得到了。 - 第五步就是将和做一个相加,得到。整体上就是,这也就是将知识加入到了实体跨度的表示当中。
- 第六步类似transformer的解码过程,Attention中的Q是 、K,V是。
训练过程
实验
- KnowBert+Wiki。知识库来源与CrossWikis和YAGO dictionary,实体embedding方式是使用doc2vec直接从Wikipedia描述中学习Wikipedia页面标题的300维嵌入,在这个模型中,作者没用到知识库中的图结构,他说早期的实验证明,在这个知识库中,图结构没用。
- KnowBert+WordNet,知识库来源于WordNet中的同义词和词根,embedding方式是TuckER,2019年比较新的知识图谱embeding方式,通过图结构获得同义词和词根的200维表示,然后对于每个同义词的释义,通过一个sentence embedding的方式获得2048维的表示,拼接在一起再线性变化到200维。