Press "Enter" to skip to content

论文浅尝 – ICML2020 | 基于子图推理的归纳式关系预测

论文笔记整理:陈名杨,浙江大学在读博士生,主要研究方向为知识图谱表示学习。

 

 

论文来源:ICML 2020

 

Introduction

 

当前在知识图谱上(Knowledge Graph,KG)进行关系预测的很多方法都依靠在对知识图谱中的实体和关系都学习一个潜在的表示(Latent Representation)也就是嵌入(Embedding)。但是这种方法一般来说有两个缺点,第一,这一类基于嵌入的方法并没有显式对捕获知识图谱中的规则;第二,这一类方法需要对所有的实体都学习一个表示,仅仅局限于transductive的设定,也就是说,只能对训练集中见过的并且已经学习过表示的实体进行关系预测,而无法在inductive的场景,也就是归纳式的场景下,对在训练集中没有见过的实体进行关系预测。这篇论文提出一种基于图神经网络(Graph Neural Network,GNN)的关系预测框架Graph Inductive Learning(GraIL)来解决在知识图谱上进行归纳式关系预测的问题。

 

下面图1中对transductive和inductive的推理进行举例,简单来说inductive可以处理在训练的时候没有见过的实体而transductive则不行。

 

 

图1 Transductive和Inductive推理举例

 

那幺如何才能进行归纳式的关系推理。换一个角度看,关系推理可以是一个逻辑归纳的问题,也就是如何从已有的知识图谱中归纳出关系并且在预测的时候利用关系。下图2中是一个规则的示例。当模型可以捕获到规则的信息,那幺就可以对没有见过的实体进行关系预测了。

 

 

图 2 规则示例

 

Method

 

模型设计的是让该模型可以捕获到KG中潜在的规则,而不用对每一个实体学习一个专门的表示。这里的假设是对于两个需要被预测关系的目标节点(目标实体),它们之间的路径包含了被预测关系的信息。整个模型分为三个步骤

 

1. 对于两个目标关系,采样出它们之间的周围局部路径图结构;

 

2. 对局部图中的节点的表示进行初始化,初始化中包含了相关的结构信息;

 

3. 利用图神经网络进行消息传递,利用得到的节点表示和整个局部图表示进行关系预测。

 

图3是模型整体示例,下面将对每个步骤进行解释。

 

 

图 3 模型整体示例

 

子图挖掘(Subgraph Extraction)。 对两个目标节点,取它们周围k -hop的周围子图,然后对两个子图求交集,最终去掉独立的点以及与两个点距离大于k的点。这样的操作可以得到在两个目标节点距离最长k+1 的所有路径作为子图。

 

节点标签(Node Labeling)。 图神经网络的操作一般需要节点具有特征表示作为初始化,但在这里假设没有任何KG的特征表示。这里通过度量每个点和目标节点的距离对节点进行表示,例如对于目标节点为 u, v 的子图,其中的一点i,用一个元组 (d(i, u), d(i, v)) 表示,其中d (. , .) 表示两点最短距离。特别的u , v 两点分别以 (0, 1) ,( 1, 0) 进行表示。节点的初始化特征表示就用对该特征的one -hot编码进行表示。

 

利用图神经网络打分(GNN Scoring)。 这里借鉴了R -GCN的方法来建模对多关系图的消息传递,区别在于增加了一个注意力机制,该注意力机制不仅仅和两个相邻节点以及它们之间的关系有关,也和需要被预测的目标关系有关。最终利用两个目标节点的表示,整个图的表示,以及被预测被预测关系的表示,对该目标节点之间具有该目标关系进行打分,得分最高的目标关系为被预测关系。

 

Experiments

 

作者在本文中将该方法和一些其他可以利用与归纳式关系预测场景的方法在标准数据集上进行对比,得到如下结果。

 

 

同时作者也在transductive的场景下进行实验,将该模型和一般的KGE模型进行融合说明其方法带来的提升。

 

 

同时,作者还对模型进行消融实验(Ablation Study)来说明各部分的有效性。

 

 

Conclusion

 

这篇文章提出了一种模型可以解决在知识图谱下的归纳式关系预测(Inductive Relation Prediction)。区别于一般的基于嵌入的方法,该方法并不是对每一个实体学习一个表示,则可以处理没有见过的实体。文章的实验证明了作者的观点,inductive relation prediction的方法也有很多值得挖掘的地方。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注