知识推理是从已有的知识出发,得出未知的、隐性的知识,具体到知识图谱中,即利用图谱中现有的知识(三元组),得到一些新的实体间的关系或者实体的属性(三元组)。
其中知识图谱推理主要有以下几种常见方案:
KG补全方法可以分为基于嵌入的和基于PLM的方法。
首先,基于嵌入的方法将实体和关系表示为嵌入向量,并在向量空间中保持其语义关系。例如:
TransE将三元组的头、关系和尾部向量化为一个欧氏空间;DistMult将所有的关系embeddings转换为双线性模型的对角线矩阵;RotatE将每一个关系embedding呈现为复数向量空间中从头实体到尾实体的旋转;
KG-BERT通过在每个三元组中串联头部、关系和尾部来微调PLM,在链接预测任务中优于传统的基于嵌入的方法;PKGC使用人工设计的三元组提示和精心设计的支持提示作为PLM的输入;
2、使用提示的知识探查
LAMA是第一个从PLM中探测知识的框架,提示是手动创建的,有一个主题占位符和一个未填充的空间作为对象。
例如,一个三元组织查询(迈阿密,位置,?)可能有一个提示"迈阿密位于[MASK]",其中"<主体>位于[MASK]"是"位置"关系的模版,训练目标是用PLM的预测来正确填充[MASK];
BertNet提出了一种应用GPT-3的方法,以输入实体对和手动种子提示自动生成一个加权的提示en-semble。然后,再次使用PLM进行搜索,并将排名靠前的实体对与集合体进行配对,以使KG完成补全。
3、提示语挖掘方法
当有多个关系需要解释时,由于需要领域专家的知识,人工提示设计成本很高。此外,提示的质量也无法得到保证。
MINE在大型文本语料库(如维基百科)中搜索给定输入和输出之间的中间词或依赖路径,并通过对提示个体在PLM上的表现进行加权来优化挖掘出来的提示的合集。
了解现在大模型用于知识推理工作之外,我们依旧需要从一些底层的方法来进行讲述,本文进一步从理论和实践的角度出发,完成一次知识推理的模型训练和推理小任务,增进大家对知识推理的了解,主要从知识推理的三个主流方法与基础任务、基于TransE模型的知识推理的训练、基于TransE模型的知识补全推理实验三个方面进行介绍,供大家一起参考。
1、知识推理的几个基础任务
知识推理的几个基础任务主要包括知识补全、知识纠错、推理问答等,其中:
知识补全,即通过算法,补全知识图谱中缺失的属性或者关系。实际构建的知识图谱,通常存在不完备的问题,即部分关系或属性会缺失。
知识图谱的纠错,即发现图谱中的错误知识进行修正。例如,实际构建的知识图谱还可能存在错误知识。实体的类型、实体间的关系、实体属性值均可能存在错误。
基于知识图谱的推理问答,即KBQA,通常应用于涉及多个实体,多个关系,多跳,比较等相对复杂的问答任务。
1)知识推理任务示例
如上图所示,以“姚沁蕾的妈妈是谁“为例。有一条常识是“父亲的妻子是妈妈”,则可依据该常识,推理出姚沁蕾的妈妈是叶莉,进而补全”姚沁蕾”和“叶莉”之间的关系,提升知识图谱的完备性。
2)知识纠错任务示例
如上图所示,在某个影视知识图谱中,虚线框中的实体《春光灿烂猪八戒》,其类型为“电影“。它的属性有集数,主题曲、片尾曲等。而其他同为”电影“类别的实体,其属性多包含上映时期、票房,且大多没有集数这个属性。则推理可知,《春光灿烂猪八戒》这个实体的类型大概率存在错误,其正确类型应该是电视剧。
3)推理问答任务示例
如上图所示,面对“刘德华主演的电影中豆瓣评分大于8分的有哪些?“这样的问题,需要机器对该问题进行解析、理解,在知识图谱中完成查询、推理、比较动作,找到《天下无贼》和《无间道》作为答案返回。
2、知识推理的三个主流方法
知识推理的方式主要包括基于本体的推理、基于规则的推理、基于表示学习的推理等几种方式。
其中:
基于本体的推理思想在于:利用本体已经蕴含的语义和逻辑,来对实体类型以及实体之间的关系进行推理,例如,RDFS定义了一组用于资源描述的词汇:包括class,domain,range等。其本身就蕴含了简单的语义和逻辑。我们可以利用这些语义和逻辑进行推理。
基于规则的推理的思想在于:可以抽象出一系列的规则,将这些规则应用于知识图谱中,进行补全纠错。这种思路很简单、直观的。基于规则的推理的优点是,推理结果精准,并且具有可解释性。
基于知识表示的推理的思想在于:基于表示学习的推理,通过映射函数,将离散符号映射到向量空间进行数值表示,同时捕捉实体和关系之间的关联,再在映射后的向量空间中进行推理。其用于解决本体体推理和规则推理不易于扩展的缺点。
1)基于本体的推理示例
如上图所示,谷歌的类型是一家人工智能公司,而人工智能公司又是高科技公司的子类,那么可推理,谷歌的也是一家高科技公司。右侧例子中,定义了投资这种关系的domain是投资人,range是公司。可以简单的认为,投资这种关系的头节点都是投资人这种类型、尾节点都是公司这种类型。假设现在有一条事实是<大卫切瑞顿,投资,谷歌>。则可以推理出,大卫切瑞顿的类型是投资人。
2)基于规则的推理示例
如上图所示,人工定义了一些规则,包括“B是A的妻子,则A是B的丈夫”、“B是A的女儿,则A是B的父亲”等等。运用这些规则来进行推理,进而补全知识图谱的缺失关系。我们可以利用这些规则,推理出“米歇尔的丈夫是奥巴马”、“玛利亚的父亲是奥巴马”等新的知识。
3)基于表示学习的推理示例
1、TransE基本算法
对于每个正确的三元组的优化目标是:
对于一个三元组的评分函数为:
TransE的损失函数:
因此,我们可以定义出模型的代码结构:
这个示例中,我们使用的是一个人工构造的小的中文数据集(主要来自于参考文献2),示例图谱可视化如下:
train.csv:包含28个训练三元组,文件的每一行每一行表示一个三元组,按头实体、关系、尾实体顺序,并用’,’分隔。
在模型训练阶段,我们以参考文献4为实验脚本进行处理,train阶段的代码如下,其思想在于,以训练集中的所有样本作为正样本,并使用gen_neg_batch,随机替换头尾实体,生成负样本进行训练。
我们训练迭代一千次后,可以发现,devscore已经达到0.5584765374660492,并不算高。
1、根据头实体和关系预测尾实体
根据头实体和关系预测尾实体思想在于,给定
a.算法实现
根据头实体和尾实体预测关系思想在于,给定
根据关系和尾实体预测头实体思想在于,给定<,r,t>,要求求其中的h,这时候,可以将所有的关系作为候选头实体h,根据模型公式||h+r-t||,求其距离,并经归一化后将其作为预测的概率。可以根据概率的大小进行排序,得到预测结果。
验证给定三元组的成立性,给定
本文充分参考了参考文献中的几个开源的项目,在此表示感谢。