Do Pre-trained Models Benefit Knowledge Graph Completion? A Reliable Evaluation and a Reasonable Approach.(Finding of ACL 2022)
论文开源代码-github
提出背景
预训练模型被证明可以从文本中获得真实的知识,这促使着基于PLM的知识图谱补全(Knowledge graph completion, KGC)模型的提出,然而这些模型在性能上远远落后于KGC任务的SOTA。
比KGE的Hits@10中的SOTA模型低约20.8%
作者认为主要有以下两个原因:
1.封闭世界假设(Closed World Assumption, CWA)的设置会限制基于PLM的KGC模型,预训练模型引入了很多的外部知识。
2.大多数基于PLM的KGC模型只是简单拼接实体和关系的标签作为输入,导致句子不连贯,没有充分利用PLM中的隐性知识。
封闭世界假设 (Closed-world assumption, CWA)认为, 在给定的知识图谱中没有出现的三元组是错误的。我们可以很容易在 CWA 下评估没有标注的模型的性能。然而,CWA 本质上是一种近似,不能保证评估结果的准确性。
开放世界假设 (Open-world assumption, OWA)认为知识图谱中包含的三元组是不完备的。因此,开放世界假设下的评估更准确、更接近真实场景,但需要额外的人工标注,仔细验证知识图谱中不存在的完整三元组是否正确。
模型介绍
基于PLM的KGC模型PKGC,可以更好的诱导隐藏在PLM参数中的隐性知识和KGs中的结构化知识。
给定一个三元组,我们将它的信息填入到三元组模板(triple prompts)和支持模板(support prompts)中。
最终模板T = [CLS] P^T P^S[SEP],[CLS]的输出用来预测给定三元组的类别(label)。
另一方面我们将正/负例的三元组输入到我们的模型中进行三元组分类。
三元组模板 P^T :对于每个关系,手动为其设计了一个hard模板,以关联三元组的语义。例如体育关系成员的hard模板为“[X] plays for [Y]”,将[X]和[Y]替换成头实体和尾实体,同时在其中添加一些soft提示。
支持模板P^S:除了知识图谱本身的三元组信息,我们还为模板中添加如定义和属性的支持信息。为了避免模型过于复杂,为实体随机选择一个属性。模型并不要求所有支持信息都要呈现。如果不存在,就不要添加相应的信息。
数据集构建及实现细节
在实验中,本文使用了两个主要的数据集,分别来自 Wikidata 和 Freebase。
Wiki27K构建的详细步骤:
(1)从四个方面对实体进行评分:实体出现频率、实体是否有英文维基百科链接、实体是否有非英文维基百科链接、实体是否有 Freebase链接,从得分排名前3万个实体中随机选取27122个实体形成我们的实体集 E。
(2)将关系按频率由高到低选出前 200 个关系,与CoDEx和LAMA中的数据集中的关系并在一起组成关系集合R。
(3)在wikidata里选择在存在于E和R中的句子中提取三元组。
(4)随机洗牌它们,并以8:1:1的比例组成训练集/验证集/测试集。
(5)R中如果存在对称关系(即如果(h, r, t)成立,那么(t, r, h)也成立),如果(h, r, t)存在于训练集,(t, r, h)存在于验证集或测试集,模型就能够轻松做出预测。为了避免这种信息泄露,对于每个对称关系 r,如果(t, r, h)在 验证集或测试集,我们从训练集中删除(h, r, t)。
FB15K-237和FB15K237-N构建的详细步骤:
(1)Freebase中存在许多CVT节点(CVT可以被认为是一个不需要展示名称的主题),这些节点会不恰当地提高模型的准确性。文中通过去除FB15K-237中的CVT节点获得数据集FB15K237-N。
(2)为了增加三分类的难度,我们在FB15K-237-N的基础上增加负例三元组构建数据集FB15K237-NH。该数据集仅用于三元分类。具体来说,对于验证集和测试集中的每一个正例三元组(h, r, t),我们使用TransE做链接预测,并使用概率最高的非答案实体替换缺失实体,做负例。
召回和重排序框架
链接预测需要大量的计算,基于PLM的模型的运行效率远远低于KGE模型。为了缓解这一问题,对于三元组查询(h, r, ?),我们首先使用KGE模型(实验中使用TuckER)来获得头尾部实体的排序。之后,我们选择排名前X的实体,并使用基于PLM的KGC模型重新计算得分。基于这些分数,我们可以对排名前X的实体重新排序。
训练任务及评价方法
知识图谱补全认为旨在为知识图谱补全缺失的三元组,评估这一任务主要有两种方法,即链接预测和三元组分类,前者主要为三元查询(h, r, ?)或(?, r, t),后者旨在判断给定的三元组(h, r, t)是否正确。
模型在包含正例/负例的三元组数据集上进行任务。
负例三元组由两种类别的数据组成:(1)随机替换原三元组中的头实体或尾实体。(2)通过将头实体或尾实体替换为KGE模型认为概率高的另一个实体。
用一个超参数α来控制两种负例的比例,同时用一个超参数K来控制正例和负例的比例。
链接预测任务:给出每个实体为缺失实体的概率的降序排列,使用MRR、Hits@N、CR@1(新的基于开放世界假设的评估方法)作为评价指标。
三元组分类任务:本质上是一个二元分类任务,使用准确率和 F1 作为评价指标。
分析与展望
Q1:PLMs 在海量的文本中看到了很多事实。是不是因为它们记住了这些事实,才帮助我们的模型取得了更好的结果?
A:有一定的原因
设计一个基于远程监督的实验,具体的来说,对于一个三元组(h, r, t),如果h和t出现在Wikipedia的一个句子中,我们认为这句话暗示了(h, r, t)的事实。
使用BERT-large作为模型的基座模型,因为它主要是在Wikipedia上预训练。
将测试集分成几个不相交的部分,并测试PKCG、ConvE和TuckER在测试集上的性能。PLMs见过更多的三元组所以表现更好。
Q2:引入的PLMs能使我们的模型对训练数据量不那么敏感吗?
A:是的
本文的模型是基于PLMs。因此我们推测基于PLMs的模型对训练数据量不敏感。为了验证这一点,我们使用不同比例的训练集训练模型,并测试其性能。
PKCG只是随着用于训练的数据量的减少而略有下降,具有用于稀疏知识图谱补全的潜力。作为对比, KGE 模型ConvE和TuckER的性能都显著下降。
Q3:近年来出现了一些包含知识的PLMs。使用它们能给我们的模型带来更好的结果吗?
A:有一定作用的
我们通过改变基座模型在 FB15K-237-N和 Wiki27K上进行实验。
BERT 主要在维基百科语料库上训练,包含更多的事实知识。
KEPLER:结合掩蔽语言建模和知识表示学习这两个训练目标,基座模型Roberta。
LUKE:大量实体注释语料,提出实体感知自注意力机制,基座模型Roberta。