标签: Jd_Paperweekly
时间:2020.11.05
来源: COLING 2020
关键词:预训练模型,knowledge-Enhanced NLP, Knowledge Embedding,GNN
1.背景及问题描述
之前的一些knowledge-Enhanced预训练语言模型,一般都是使用浅层的、静态的并且独立训练的实体embedding,如TransE等,直接融入到预训练模型中,并且实体embedding也不参与训练,他们之间是天然存在gap的。而一些task,比如实体链接、关系抽取,通常把相关的结构化知识放进模型中,会有更好的表现。所以,本文作者试图同时预训练非结构化文本和结构化知识。作者提出了 Contextualized Language and Knowledge Embedding (CoLAKE),即在同一语境中,将文本、实体和关系构造成一个图结构,然后使用MLM(Mask Language Model)来同时预训练文本和知识。
2.已有的解决方案
- Knowledge Representation Learning.
Knowledge Embedding (KE),传统的方法就是使用实体和关系的三元组(h,r,t),学习一个静态的低维向量,比如TransE,TranR等。这些方法的思路即使用前件(h)和关系(r)向量之和来预测后件(t)向量,向量之和从某种程度是表示的是信息的叠加,但是实体和关系或许不仅仅是信息的叠加而已。
因此最近出现的一些方法,比如:K-adapter,KEPLER,同样也是这个领域较新的两个模型。开始考虑引入语境信息,使用子图或者路径作为训练预料,在一些KG任务上取得了SOTA的效果。
- Joint Language and Knowledge Models
ERNIE 中使用的entity-embedding是直接使用TransE的结果,是静态的。KnowBert只得到语言模型没有同时训练实体表示。KEPLER,也是联合学习语言模型和知识表示,但是 KEPLER 不是直接学习每个实体的表示,而是从实体描述(entity descriptions)中使用语言模型学习实体表示。
重要的是,上面的方法都没有利用语境知识(contextualized knowledge)的潜力,这也是与本文方法的最大不同。
3.解决方案概述
1.构建word-knowledge graph
给定一段文本,首先对其分词,然后文本转化为多个单词节点全链接构成的word graph。然后,我们其中的提及实体(mentions)的单词节点替换成对应的实体节点,然后定义这类节点为anchor node。
然后以这个anchor node为中心可以从图谱中抽取出一个子图,然后将这个子图和word graph在anchor node的位置拼接成一个完整的大图,就得到了WK graph。实际操作中,最多选取15个实体和关系来构建子图,并且只考虑anchor node作为三元组的head(subject)的情况,并且子图中实体不可以重复关系可以重复。
2.在graph上构建模型
构建好WK graph之后,送到transformer中解码。在embedding-layer和最后的目标函数相比较BERT有所改变:
1.Embedding Layer
模型的输入层是三个embedding做拼接。
- token embedding,包含了词、实体、关系三者,这也是本文模型可以直接学习entity-embedding和relation-embedding的设计。
- type embedding,就是用来区分词、实体、关系的类别。
- position embedding,这里作者采用soft-position,允许重复position的出现,并且保证相同三元组的token在连续的位置。
2.Pre-Training Objective
- Masking word nodes,与BERT的MLM相同,只是因为实在WK graph上解码,所以预测时,除了有语境只是还可以应用到实体和关系的知识。
- Masking entity nodes,如果mask的是anchor node,就是根据语境预测它,这样可以把结构知识和语境信息发给你在同一空间中学习。比如:图中Harry_Potter实体的embedding与他的文本Harry Potter是相似的。如果不是anchor node,就是一些传统的方法来学习entity-embedding。
- Masking relation nodes,如果遮挡的relation是两个anchor node之间,这就是一个监督式关系抽取任务。否则,就是预测两个相邻实体之间的关系,一些传统的方法。这个任务作用:(1)学习实体关系(2)学习语境相关的relation-embedding。
4.结果分析
- 需要知识的下游文本任务上对CoLAKE进行了测试,在Open Entity(Entity Typing), FewRel(Relation Extraction)等任务上都取得了不错的结果:
- 在GLUE任务上表现一般:
5.创新点或贡献
- 在预训练语言模型的同时也学习一套知识表示,以在需要知识的下游文本任务上表现更好,例如实体链接、关系抽取等。
- 在加入实体的同时也加入它的上下文(context),允许模型在不同语境下关注实体的不同邻居,同时学习文本和知识的上下文表示。
- 为了完成上述目标,作者提出来word-knowledge graph,提供了一种将文本和知识库想结合表示成图的思路,然后可以在图上做MLM或者GNN的学习。
6.个人思考
- 提供了一种将文本结合结构化知识来构建图的思路,可以在此基础上构建GNN网络。可以试试在这种思路来构建sku的sku graph。
- 这类knowledge-Enhanced的语言模型在GLUE任务上没有明显的提升,我猜想是GLUE里的NLU任务,对结构化知识没有那么依赖,更多需要是学习语境和推理的规律。