技术总结:知识图谱推理中的常用方法、关键问题、评测指标与开放数据总结
知识推理,即根据已知知识来预测未知知识是知识图谱应用的一个典型场景,同时也是知识图谱构建过程中的一个重要技术,可进一步约定成根据已知的三元组来生成新的三元组信息或者进行图谱知识治理。
例如,在知识抽取过程中经常会出现数据不完备的情况,如定义了一个人的身高属性,但实际上该属性值是缺失的,即一个三元组中存在着成分缺失;
又如,在抽取过程中,会抽取得到许多错误的数据,如中国的首都是哈尔滨等。
又如,在知识问答环节,如询问“王菲女儿的妹妹”这个问题时,由于知识图谱中没有现成的答案,需要间接地获取王菲的女儿,得到窦靖童,然后再查询窦靖童的妹妹获取窦家媛,这个间接查询的过程可以视为一个推理过程【粗浅的看法】。
本文主要围绕知识图谱推理中的常用方法、关键问题、评测指标与开放数据进行介绍。
一、知识图谱领域中的知识推理
知识图谱中的推理知识推理是指根据知识图谱中已有的知识,采用某些方法,推理出新的知识(知识图谱补全)或识别知识图谱中错误的知识(知识图谱去噪),前者专注于扩充知识图谱,后者专注于知识图谱内部已有三元组正确性的判断。
进一步的,知识图谱补全,是给定三元组中任意两个元素,试图推理出缺失的另外一个元素。包括连接预测、实体预测、关系预测、属性预测。
其中:实体预测指给定头实体和关系(关系和尾实体),找出与之形成有效三元组的尾实体(头实体)。例如,已知(h,r)预测t,一种是在原KG中h存在r这条边,但在测试集的t不在(h,r)后(缺失答案实体)。
关系预测指给定头实体和尾实体,找出与之形成有效三元组的关系。原KG中的h不存在r这条边(缺失边)。
不过,无论实体预测还是关系预测,最后都转化为选择与给定元素形成的三元组更可能有效的实体/关系作为推理预测结果,这种有效性可以通过规则的方式推理或通过基于特定假设的得分函数计算。而知识图谱去噪,实际上是在判断三元组的正确与否。
知识图谱补全任务模型主要有基于表示学习和基于规则两种。基于表示学习的方法先通过表示学习得到知识图谱中实体和关系的表示,然后利用得分函数对候选实体进行打分排序,选取得分最高的候选实体作为正确实体。
二、符号化推理中的规则生成
基于规则路径的方法对路径建模并进行路径查找补全图谱。前者有较强的特征表示能力,后者有较强的推理能力,其思想在于将推理的过程变成推理规则的应用过程,包括推理规则学习(推理规则库)和推理规则的执行(推理机)两个组成部分。
如何将推理规则进行符号化和规模化,是推理规则库建设的核心工作,传统的归纳推理方法,根据部分对象所具有的性质来推出一类事物中所有对象都具备这类性质,从实例抽象到一般规律,就是其中的一个重要方法。
例如,通过“金受热后体积膨胀”、“银受热后体积膨胀”、“铜受热后体积膨胀”、“铁受热后体积膨胀”等例子,得到“金属受热后体积膨胀”的规则,这种从大量实例中总结出推理规则是实现规则扩充的重要手段,既可以通过专业人员手工定义、编辑,也可以通过机器挖掘,如频繁子图挖掘的方法进行处理。
1、基于手工定义的规则生成
经典的Cyc项目是人工构造推理规则的一个经典案例,该项目最开始的目标是采用CycL(基于一阶关系的知识表示语言,采取谓词代数描述,语法上与Lisp程序设计语言类似),将上百万条知识编码成机器可用的形式,用以表示人类常识。
Cyc知识库中表示的知识一般形如“每棵树都是植物”、“植物最终都会死亡”,当提出“树是否会死亡”的问题时,推理引擎可以得到正确的结论,并回答该问题。
Cyc推理引擎支持一般的逻辑演绎推理,包括肯定前件假言推理、否定后件假言推理、全称量化、存在量化等,例如:
(relationAllExists biologicalMother ChordataPhylum$FemaleAnimal)
这条规则可解释为:对于脊索动物(chordate)集合ChordataPhylum中的所有实例,都存在一个母性动物(为FemaleAnimal的实例)作为其母亲(通过谓词biologicalMother描述)。
1986年,Douglas Lenat预测如果想要完成Cyc这样庞大的常识知识系统,这将涉及25万条规则,并将要花费350个人年才能完成。截止到目前,该知识库中包含了320万条人类定义的断言,涉及30万个概念,15000个谓词。
2、基于频繁挖掘的规则生成
频繁子图等机器挖掘规则方式,其思想在于获取知识图谱的规则实例,通过将规则实例中的实体替换成变量(或者叫符号化),同时设定一些约束条件,以快速生成推理规则集合。
推理模式的挖掘,后续成为了Boostrapping信息抽取方法以及“事理图谱”概念提出的重要来源。
事理图谱,一个事理逻辑知识库,描述了事件之间的演化规律和模式,在知识抽取上来看,本质上就是在进行事件推理规则的挖掘,如学习到事件之间的条件关系、因果关系之后,就可以通过给定的条件,判定在该条件下可能产生的结果,通过得到原因事件,来推断结果事件或者通过结果事件来推断造成该事件的可能原因。
事件之间的推理规则,可以通过构造明显式的因果模式,如“因为A所以B”、“A导致B”、“A是造成B的原因”等抽取因果规则,如“如果A,那么B”,“要是A,就B”等条件因果模式,抽取条件逻辑规则。
不过,与确定性的归纳推理不同,事理图谱中所挖掘的推理结果是不确定的,而是带着概率性。
三、代表性规则推理系统
目前,已经出现了一些典型的知识图谱推理系统,如基于OWL的推理规则引擎Apache-Jena、使用专门的逻辑编程语言,如LISP、Prolog等的编程推理、有使用Neo4j图数据库的查询推理三种。
其中,Carlson等(2010)提出的NELL采用一阶关系学习算法进行推理,推理组件学习概率规则,经过人工筛选过滤后,带入具体的实体将规则实例化,从已经学习到的其他关系实例推理新的关系实例。
YAGO采用Spass-YAGO丰富知识图谱内容,通过抽象化YAGO中的三元组到等价的规则类,并采用链式叠加计算关系的传递性,通过迭代性规则完成YAGO数据扩充。
1、基于OWL本体的规则推理
本体类似于知识库中的模式, 用来定义类和关系以及类层次和关系层次结构等。本体作为语义丰富的知识描述,可以根据这一信息进行推理,例如TrOWL、Chainsaw、jcel、MORe、ELepHant、ELK、HermiT8、PAGOdA等系统。
基于OWL网络本体语言的大规模分布式推理系统通过在构建知识图谱本体时定义本体,设计了类、属性或者关系间的传导关系,自动对实例进行推理操作。
Apache-Jena是这类推理系统的典型代表,是由美国HP实验室为语义网研究项目所开发的一个开放式Java语言框架工具包,用于语义网(Semantic Web)环境下的应用系统的创建开发。
它为OWL、RDF、RDFS等本体描述语言提供一个程序开发环境,并配有较完整的对本体进行解析、存储、推理和查询的函数调用和处理接口。例如,下图可以通过使用OWL语言利用规则的定义规范:[规则名称:(旧知识三元组)->(新知识三元组)],添加推理规则:
@prefix : <http://www.movie_kg.com#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <XML Schema> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
[ruleInverse: (?p :ActedIn ?m) -> (?m :ActedBy ?p)]
[ruleInverse: (?p :Directed ?m) -> (?m :DirectedBy ?p)]
[ruleInverse: (?p :HasRole ?m) -> (?m :RoleOf ?p)]
[ruleInverse: (?p :Taked ?m) -> (?m :TakedBy ?p)]
利用电影与演员之间、电影与导演之间关系的互逆性,一个导演导演了某个电影,那么这个电影则被该导演导演,如果一个演员饰演了某个角色,那么这个角色就形成了被饰演的关系。
2、基于逻辑编程语言的编程推理
利用推理语言在知识推理也得到了很广泛的应用,例如LISP和PROLOG。其中,PROLOG是最具代表性应用最广的人工智能语言之一,只要给出事实和规则,它会自动分析其中的逻辑关系,然后给出答案。
例如,给定三男三女,来判定男女是否为人时,可以利用prolog进行处理:先定义6名嫌疑犯:
man(george).man(john).man(robert).woman(barbara).woman(christine).woman(yolanda)
用2条规则来约定男人属于人,女人属于人:
person(X):- man(X).person(X):- woman(X)
来判断john是否为人,person(john),可以得到true的结果。
3、基于Neo4j子图信息的查询推理
使用Neo4j等图数据库来解决推理问题是当前业务推理问题的重要问题,但与本体推理组件Apache jena不同,Neo4j图数据库本身不具备推理能力,而是以查询的方式来对推理过程进行建模,需要人工定义好推理模式,完成子图匹配推理。
例如,在判定两个给定人物张三和李四之间是否存在未知关系时候,可以通过构造以下查询语句:
“match path = (p1:Person{“name”:”张三”})-[ *1..5]-(p2:Person{“name”:”李四”}) return path”
来检测张三和李四之间在5个层数内是否存在1到5度的关系边来加以判定。
又如,在公安警务领域,如果两个人同时参与了一项抢劫活动,那么两个人很有可能是同伙关系,可以通过构造子图模式加以判定,如:
“
Match (p1:Person)-[:take-part-in]-(:crime)- (p2:Person) return p1, p2”,
可以将满足该模式的结果p1,p2作为犯罪同伙作为推理结果返回。
四、基于学习的知识图谱推理
基于分布式表示的推理首先通过表示模型学习知识图谱中的事实元组, 得到知识图谱的低维向量表示;然后, 将推理预测转化为基于表示模型的简单向量操作。
1、基于转移的表示知识推理
基于转移的表示推理。基于转移的表示推理根据转移假设设计得分函数,衡量多元组有效的可能性,得分越高,多元组越可能有效。也即正例元组的得分高,负例元组的得分低。由于关系数量相对较少,负例常常通过替换头实体或尾实体得到(部分工作也替换关系构建负例)。
基于上述原则建模知识图谱中的事实元组及其对应的负例元组,最小化基于得分函数的损失,得到实体和关系的向量表示。推理预测时,选取与给定元素形成的多元组得分高的实体/关系作为预测结果。基本的转移假设将关系看成实体间的转移,后续发展出更复杂的转移假设,将关系看成经过某种映射后的实体之间的转移。
1)TransE
TransE的主要思想是:如果三元组(头实体,关系,尾实体)成立,头实体向量h与关系向量r的和与尾实体向量t相近,否则远离。由上述基本转移假设得到得分函数−||r+h−t||L1/L2 即,用L1或L2范数衡量距离。学习过程替换头实体或尾实体得到负例,类似支持向量机,最小化一个基于Margin的损失,使正例的得分比负例的得分至少高一个Margin。在进行推理时,得分函数取值大的候选实体/关系即为推理结果。
而TransE这种假设存在多种问题,后续的方法在此基础上进行了更改,例如:
2)TranH、TransM、TransD
TransE严格要求有效的三元组满足头实体加关系在向量空间中与尾实体足够靠近,可以很好地处理一对一关系,但在处理多映射属性关系时,存在多个实体竞争一个点的现象。
TransH,在TransE的基础上为每个关系多学一个映射向量,用于将实体映射到关系指定的超平面;然后在该超平面,与TransE一样,关系表示向量看成映射后的实体之间的转移。映射向量使得对于不同关系,同一个实体在不同关系指定的超平面有不同的表示,一定程度上缓解了不能很好地处理多映射属性关系的问题。
TransM,直接根据关系的映射属性预先计算每个训练三元组的权重,用于加权损失函数。
TransD中,实体和关系均用两个向量表示,第1个指示含义,第2个动态构建映射矩阵,由此,实体的映射矩阵为对应关系和实体的第2个向量的乘积,同时考虑实体和关系的多样性。
3)TKRL
TransE只专注于满足知识图谱中的三元组约束,然而知识图谱中存在大量层级关系,例如在知识图谱WordNet的子集WN18中,大约有50%的层级关系。
实体的层级表示。具体地,基于知识图谱构建实体层级结构,实体作为叶节点,上层概念作为内部节点,构成有向无环图。
TKRL(type-embodied knowledge representation learning)学习知识图谱实体和关系的表示,将层级类型信息用于映射矩阵、训练时负例的选择和评估时候选的过滤。
TKRL同样根据知识图谱构建层级结构,内部节点也关联一个矩阵,称为映射矩阵。实体的映射矩阵通过组合实体对应的层级结构上一级一级的内部节点的映射矩阵得到,组合可以是连乘形式或者加权和的形式。头尾实体再根据各自对应的组合映射矩阵映射到对应的关系类型空间,与关系向量进行转移
4)SSE
TransE没有考虑丰富的语义信息,缺乏对空间中向量分布位置的进一步调整。
SSE(semantically smooth embedding)学习知识图谱实体和关系的表示,利用实体语义类信息强制表示空间几何结构语义平滑。TransE-NMM(TransE-neighborhood mixture modeling),在TransE的基础上定义基于邻居的实体表示,引入邻居实体信息进行实体和关系的表示学习。
5)TEKE、cross-KG
TransE在单个知识图谱上进行学习推理,而单个知识图谱知识量有限。
TEKE(text-enhanced knowledge embedding),引入文本语料中丰富的上下文信息扩展知识图谱的语义结构,学习知识图谱实体和关系的表示。TEKE通过标注文本语料中的知识图谱实体,构建实体和词的指定共现窗口的共现网络,将文本语料和知识图谱联系起来。
跨知识图谱的表示方法cross-KG,同时学习两个不同知识图谱的表示。通过映射语义相关的两个知识图谱中的实体和关系到统一的语义空间,cross-KG借助更大和更稠密知识图谱的知识,促进稀疏知识图谱的表示学习,
6)TransA
TransE参数的选取与知识图谱数据独立,不能反映数据的特点,并且未考虑知识的时间约束。
TransA将Margin参数分为实体和关系指定的局部Margin的加权和。Margin和实体、关系的表示相关,不同知识图谱自适应学习,而不是从指定的候选集选取。AE(time-aware embedding),用三元组和时间信息预测知识图谱中的连接,即:给定三元组中的两个元素与时间区间,预测另一个元素。
2、基于神经网络的推理
基于神经网络的推理利用神经网络直接建模知识图谱事实元组,得到事实元组元素的向量表示,用于进一步的推理。
该类方法依然是一种基于得分函数的方法,区别于其他方法,整个网络构成一个得分函数,神经网络的输出即为得分值。
代表性的,张量网络NTN(neural tensor network),用双线性张量层代替传统的神经网络层,在不同的维度下,将头实体和尾实体联系起来,刻画实体间复杂的语义联系。
其中,实体的向量表示通过词向量的平均得到,充分利用词向量构建实体表示。
具体地,每个三元组用关系特定的神经网络学习,头尾实体作为输入,与关系张量构成双线性张量积,进行三阶交互,同时建模头尾实体和关系的二阶交互。
最后,模型返回三元组的置信度,如果头尾实体之间存在该特定关系,返回高的得分,否则,返回低的得分。
五、知识图谱推理评测指标
知识图谱补全任务用来预测三元组(h,r,t)中缺失实体h,t或r的任务,对于每个待测试三元组,每个评测三元组,移去头部实体(迭代的方式替换尾部实体)、轮流替换成词表中的其他实体,构建错误的三元组实体。利用关系函数计算头部实体和尾部实体的相似度,对于这个相似度来讲,正确的三元组的值应该比较小,而错误样本的相似度值会比较大。
用关系函数对所有的三元组(包括正确的三元组和错误的三元组)进行计算,并按照升序排序。因此,针对这个结果,就延伸出来了以下几种评价指标:
1、MR
对于一个好的知识图谱表示来说,正确三元组的得分(即头部实体和尾部实体的关系函数值)会小于错误三元组的得分,排名会比较靠前。因此,排的越前越好,每个测试元组中正确答案也就是真实的t到底能在上述序列中排多少位,比如说t1排100,t2排200,t3排600,对这些排名求平均,即可以得到Mean rank值。
2、MRR
MRR(Mean Reciprocal Rank, 平均倒数排名) 是一个国际上通用的对搜索算法进行评价的机制,即第一个结果匹配,分数为1,第二个匹配分数为0.5,第n个匹配分数为1/n,如果没有匹配的句子分数为0,最终的分数为所有得分之和
3、Hit@R
Hits@R,它衡量e2在排名列表的前N个中出现的次数。还是按照上述进行f函数值排列,然后去看每个测试元组正确答案是否排在序列的前十,如果在的话就计数+1。最终,排在前十的个数/总个数,就是Hit@10。
六、知识图谱推理常用数据集
知识图谱补全任务,是为了评测知识图谱表示学习的重要途径,当前,已经陆续出现了一些具有代表性的评测数据集。
1、FB15k
整个Freebase知识图谱共有19亿个三元组,FB15k是FreeBase的子集,15k表示其中有15k(14951)个实体。FB15k数据集中包含很多反向关系,训练集中大约有70%的比例,例如:(Avatar, film/directed_by, James Cameron)和 (James Cameron, director/film, Avatar)是一对反向三元组。
地址: https://web.informatik.uni-mannheim.de/pi1/kge-datasets/fb15k.tar.gz
2、FB15k-237
FB15k-237是知识图谱Freebase的子集,移除了FB15K中的逆三元组,即反向关系三元组。
地址: https://web.informatik.uni-mannheim.de/pi1/kge-datasets/fb15k-237.tar.gz
3、WN18
WN18是wordNet的子集,包含18种关系和40k种实体。WN18也存在反向关系的问题,18种关系中14种关系构成了7对反向关系对。
例如(europe, has_part, republic_of_estonia)和(republic_of_estonia, part_of, europe)是反向三元组,它们涉及到的反向关系是has_part和part_of。WN18中还有三种自反关系:verb_group、similar_to和derivationally_related_form。
地址: https://web.informatik.uni-mannheim.de/pi1/kge-datasets/wn18.tar.gz
4、WN18rr
WN18rr是从WordNet抽取的子集,共40943个实体、11种关系。在WN18的基础上移除了逆三元组。WN18RR有层级结构导致对所有不处理传递关系的补全模型都提出了很大的挑战。
地址: https://web.informatik.uni-mannheim.de/pi1/kge-datasets/wnrr.tar.gz
5、YAGO3-10
YAGO3-10是YAGO数据集的子集,共123182个实体,37种关系。 地址: https://web.informatik.uni-mannheim.de/pi1/kge-datasets/yago3-10.tar.gz
6、ogbl-biokg
Open Graph Benchmark (OGB)图学习基准数据集代表,ogbl-biokg基于多个生物医学知识库,节点类型涵盖疾病、蛋白质、药物、副作用及蛋白质功能等生物医学概念,涉及了从分子规模到整个种群的近10万结点之间的51种异构相互作用,构成500多万个三元组。
地址: https://github.com/snap-stanford/ogb
7、ogbl-wikikg2
ogbl-wikikg2数据采集于Wikidata知识库,描述现实世界中约250万个实体间的500多种关系,构成1700多万个事实三元组,其主要难点在于从海量且复杂的已知事实中进行学习,并精准预测实体间的潜在关系。
地址: https://github.com/snap-stanford/ogb
8、其他数据集
此外,还存在如下可用的实体推理数据集。
七、总结
本文主要围绕知识图谱推理中的常用方法、开放数据与关键问题等进行总结性介绍。
本文论述了几种方法,包括基于规则的推理、基于学习的推理。前者核心在于规则的挖掘,后者核心在于如何学习到合理的实体表示。
不过,需要想到的是,后者进行知识图谱补全是存在应用问题的。例如,怎么知道哪些三元组是缺失并需要补全的,这部分不好确定,因为判断模型好坏的时候可以使用测试集。
例如,在实际应用的过程中,这些补全出的信息是凭借模型的判断,如TransE模型中针对每个关系都会保存一个阈值,在判断一个新三元组(h,r,t)的时候需要根据新三元组的距离和阈值进行比较来判断这个新三元组的正确性。而这部分会因为训练集中h,r,t出现次数较少训练程度不够,以及模型本身能力的限制可能会出现一些错误信息的推理。
本文以两点来结尾:
1、现在工业界不少人会将neo4j中的路径发现说成推理,这是较为浅显的说法,只是个搜索过程,并没有产生新知识。
2、正确的存量远比增量更重要。无论是知识图谱补全、知识图谱去噪,但本质上都是评估三元组的有效性,后者在知识图谱治理环节十分重要,如何利用这种方式去做既有数据的错误发现,是保证知识图谱质量的一个重要手段。
七、参考文献
1、https://blog.csdn.net/a493823882/article/details/120125762
2、https://www.zhihu.com/question/403056317/answer/1303360180
3、https://blog.csdn.net/TgqDT3gGaMdkHasLZv/article/details/105190084
4、https://arxiv.org/pdf/2002.00819.pdf
5、https://blog.csdn.net/weixin_46987878/articl e/details/107057452
6、http://jos.org.cn/html/2018/10/5551.htm
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
就职于360人工智能研究院、曾就职于中国科学院软件研究所。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。