基于知识图谱的图神经网络推理
导读 本次分享题目为基于知识图谱的图神经网络推理,首先会介绍知识图谱相关的背景。第二部分GNN for KG会以CompGCN为基础,介绍将图神经网络迁移到知识图谱上面的工作。第三部分主要介绍针对知识图谱所设计的GNN的结构。最后是总结和展望。
全文目录:
-
知识图谱的背景
-
GNN for KG
-
KG for GNN
-
总结与展望
分享嘉宾|张永祺 第四范式 算法科学家
编辑整理|张琛 蚂蚁金服
内容校对|李瑶
出品社区|DataFun
01/知识图谱背景介绍
1. 知识图谱背景
本质上,知识图谱主要目标是用来描述真实世界中存在的各种实体和概念,以及他们之间的关系,因此可以认为是一种语义网络。它既包含结构信息也包含语义信息,两种信息都很重要。
- 实体和关系:表示自然界的抽象概念,具有可区别性且独立存在的某种事物。如某一个人、某一座城市、某一种植物、某一件商品等等。实体是知识图谱中的最基本元素,不同的实体间存在不同的关系。
- 知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Object)。包括head entity,relation,tail entity,缩写为(h,r,t)。
2. 知识图谱的典型应用场景
- KGQA:基于知识图谱的问答,目前来看大模型在这一领域会占据更大的优势。
- 个性化推荐
- 药物发现:基于知识图谱发现药物之间的作用关系。
- 事件推理:在事件知识图谱上进行事件演化预测。
3. 知识图谱的建模思路
知识图谱一部分是知识,一部分是图。从知识的角度来说,可以做一些语义的建模,比如对称性、相反性、反对称性等等,常以三元组、路径为基本输入单元。从图的角度来说,知识图谱是一个有向图,包含多种复杂关系,因此可以从多源异质的角度去利用图结构进行建模。
4. 知识图谱的训练框架
如果给定了如图所示的一个知识图谱,那么已知的图上每一个边我们都把它认为是一个正样本,然后我们会去采样一些负样本,获得了正负样本之后可以进行建模以获得正负样本的打分,最后通过打分函数进行迭代更新。整体优化的目标就是尽可能保留图上的信息,并且能够很好地迁移到一些未知的三元组/实体上。
知识图谱上的学习问题分为两类,一类是表示学习,一类是知识图谱的推理。表示学习更侧重于如何把实体和关系映射到一个具体的向量空间。而知识图谱的推理更强调通过结构来进行推理,通常来说这类问题的复杂度更高,但其具备较好的可解释性和更好的效果。
在表示学习中我们通常会碰到数据稀疏、数量级大、不够完整的实际问题,常见的解决方式是利用GNN的结构来设计一些打分函数,比如CompGCN结合TransE等模型。而推理问题,可以看成是组合优化问题,需要去学习路径或者子图,去挖掘离散的规则,这里的难度其实是更高的。
02/GNN for KG
接下来介绍如何将一个图神经网络应用到知识图谱中。
这一部分的方法主要基于Encoder-Decoder框架,在Encoder阶段产生对实体/关系的高维表示,在decoder阶段可以外接多种不同的任务,例如实体分类(接分类器)、链接预测(接打分函数)、实体融合等等。
1. GNN
GNN通常采用Message passing框架,对多层网络进行逐层聚合。例如我们想获得节点A的表示,那么我们可以利用其邻居节点BCD的representation去更新A节点的信息,而BCD节点的信息则是由二阶邻居的信息进一步聚合而成。代表性的GNN网络有:GCN、GraphSAGE、MPNN、GAT等等。
2. GNN应用于知识图谱
GNN应用于知识图谱需要考虑两个主要因素:
- 边关系信息如何建模
- 实体和边的embedding需要同时更新
3. 典型算法
- R-GCN
最基础的R-GCN结构非常简单。给不同的边关系赋予不同的权重W,这样就区分开了不同的关系。另外,通过添加反向边来增加图的连通性。
- Weighted GCN
将不同的边关系看成不同的邻接矩阵,不同的邻接矩阵具有不同的权重α,这是另一种将边的信息融入到图形网络建模的方法。
- CompGCN
CompGCN是一个非常经典的工作,解决了R-GCN只学习实体表达但没有学习边的表达,以及参数过多的问题。CompGCN提出了用打分函数来建模边关系的方法,如图所示的TransE、DistMult、HolE等等。且CompGCN可以泛化到各种普通的GCN网络上。
下图展示了CompGCN的效果,不同的message function的选择对其影响不大,影响较大的是最外层的function如TransE、DistMult、ConvE等,比如ConvE的表达能力更强,因此CompGCN+ConvE效果会相对更好。整体上,相比于其它GCN效果都有提升。
- 综合对比
下图中对不同的方法进行了对比。可以看到CompGCN对实体embedding、方向、关系以及关系embedding都是有考虑的,并且复杂度相对R-GCN也有所降低。这些方法最主要的区别就在于message function如何建模边的信息的设计不同。
我们也可以将这些工作抽象成一个encoder-decoder的框架。给了浅层的embedding之后,通过图神经网络,得到更高层的实体/关系的表示,后面可以再接其它任务,比如分类器、打分函数等等。
这些方法的可解释性都不强,因为它们主要是聚合representations,而不是挖掘其中的符号信息。
03/KG for GNN
接下来介绍在知识图谱上的一些比较特殊的图形网络设计。
1. Logic Rules
首先来回顾一下逻辑规则的概念。逻辑规则能够提高推理的可解释性和精度,此外,逻辑规则还可以重复利用和一般化到其他领域和数据。对于在训练集中没有出现过的实体,前面提到的TransE或者CompGCN等模型是无法得到它们有意义的embedding的,但如果能够学习到这些规则,就可以做归纳式的学习inductive learning。然而由于搜索空间大,推断出高质量的逻辑规则用于知识图的推理是一项具有挑战性的任务。
2. Logic Rules和representation learning对比
Representation learning能够处理较大数据量,但它不可解释且不能做inductive。而logic rules的方法一般应用于比较小的数据量上,具备可解释性且可以做inductive。因此为了结合两者的优势,基于子图的方法是比较好的解决方案。下面会分别介绍GraIL算法、NBFNET算法和我们自研的RED-GNN。
3. GraIL
**基本思想:**设要输入的三元组为。其中和为目标节点,为目标关系。首先做子图提取,在整个图谱中获取和节点的跳邻居集合。取其并集并去掉孤立的节点和目标节点之间长度超过的路径(剪枝)得到其封闭子图。第二步使用双半径顶点标记法对节点进行标注,以获得节点表示,获取子图特征矩阵,最后通过GNN获得对三元组的打分即可。
GNN scoring的做法如下图所示:
Inductive的推理场景有两个知识图谱,在训练和验证状态下只看到第一个图谱KG1,在预测时是第二个KG2。要求这两个图谱上的实体是不相交的,但关系是一样的,或者第二个图谱的关系是第一个的子集。因此只能通过关系去推理。
GraIL方法在Inductive上测试的结果会优于基于规则的方法。
GraIL的核心要点就是提出了用子图去建模,以及inductive推理,并通过注意力机制,将不同的边区分开。它的缺点也比较明显,就是效率比较低且可解释性不够.
4. RED-GNN设计思路
RED-GNN提出了一个新的结构,该结构是基于关系路径path的优化。如图所示,如果我们要预测节点a到节点f的信息,那么在做完添加反向边和自环这些预处理之后,我们可以抽取从节点a到节点f的所有路径。之后再合成一个规整的关系子图结构,即relational digraph,之后可以基于这个子图结构去预测节点a和节点f之间是否存在链接关系。
具体来说,将头节点a0直接赋予0向量,依次建模一跳路径和二跳路径,并做聚合,最后在尾节点f3处进行聚合之后打分。这样能够充分保留图谱的逻辑结构和拓扑结构信息,并且不需要特殊的实体嵌入。
但该做法的时间代价依然很高,我们碰到的现实问题通常是给定了头实体和关系,需要去对所有的尾实体做打分排序,因此这个方法也比较难应用到实际问题中。所以我们进一步对该方法做了改进,运用递归的思路,对节点a的邻居展开去建模,经过一次传播可以获得多个实体的子图表示,具体比较如下图所示。
在transductive和inductive数据集上测试效果均有显著提升。
效率方面,不仅参数量级大幅下降,同时耗时也大幅降低。
参数方面,也减少了很多。
可解释性方面,对于相同的头实体和尾实体,不同的关系,我们选出来子图这个结构是不一样的,也证明了该方法的推理能力。
模型随深度方面的表现变化如下,红色线条为RED-GNN效果:
应用方面,我们也进行了很多拓展探索。比如对于时序推理,在现有时间内的预测和未来时间的推理上都有非常好的效果。
在药物相互作用负反应预测方面,也进行了探索。
当然RED-GNN还是存在规模上的局限,考虑到其强大的性能,扩展其规模是非常有意义的。
04/总结和展望
未来的发展方向包括如下一些方面:
- 探索更多的应用场景,比如药物研发、时间空间上的预测等等。
- 将子图结构作为prompts,用于大模型。
- 是否可以用tansformer去建模子图结构。
- 能否用大语言模型来解释子图。
- 在CPU/GPU之间进行调配,实现高效的计算。
最后对全文进行一个简要的总结:
- 图神经网络在KG结构表达上有着强大的能力。
- 利用注意力机制可以获得更好的可解释性。
- 在微观方面设计改造GNN的聚合函数等。
- KG for GNN核心是如何构建子图结构。
- Inductive learning的场景,在没有实体标签的情况下做预测。
- 应用场景:KG链接预测、事件预测、药物相互作用预测等等。
今天的分享就到这里,谢谢大家。