论文来源:KDD '23: Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data MiningAugust 2023Pages 3446–3457https://doi.org/10.1145/3580305.3599404
原文链接
摘要
- 前提:由于GNN的流行,人们使用GNN的方法来对KG进行推。但基于GNN的KG推理方法中一个重要的设计组件——”传播路径“。它包含每个传播步骤中涉及的一组实体。
- 现有方法的不足:使用手工设计的传播路径,忽略实体和查询关系之间的相关性。此外,涉及的实体数量将在更大的传播步长下呈爆炸式增长。
- 贡献:学习自适应传播路径,滤掉不相关地实体,保留有希望的目标。
- 做法:首先,设计一种增量采样机制,线性复杂度保留附近的目标和分层链接;其次,设计一种基于学习的采样分布来识别语义相关的实体;
引言
基于GNN的KG推理
知识图谱推理是根据给定图谱中所学习到的证据进行查询问题的回答。KG推理的代表性方法可以分为三类。
- 基于三元组的模型:通过学习实体和关系的嵌入直接给每个答案实体评分。【实体嵌入】
- 基于路径的方法:学习逻辑规则以生成充查询实体开始的关系路径。【路径搜索】
- 基于GNN的方法:通过图神经网络在局部领域之间传播实体的表示【图表示学习=特征信息+结构信息】
基于GNN的方法概述
GNN的方法拥有最先进的性能,其中极具代表性的是R-GCN和CompGCN,但是与GCN的问题一样,容易出现过度平滑的问题(注:过渡平滑(over-smoothing)问题,两个节点的共享邻居过多,从而导致两个节点会变得非常相似);NBFNet和RED-GNN通过将传播范围缩小至“查询实体”的周围,使得其具有比R-GCN和ComGCN更强的推理能力,但缺点在于,多跳之后涉及的实体数目过多。同时,现存GNN的方法还忽略了邻域和查询关系之间的语义相关性。什么是查询关系和邻域之间的语义相关性呢?文章中举了个例子,如下图所示。
当查询LeBron居住在哪里的时候,那么此时最有价值的线索是,他的妻子Savan Nah居住在Los Angeles,他所效力的球队位于Los Angeles。当查询LeBron是谁得父亲得时候,最有价值得线索变成了LeBron.JR是LeBron的儿子。这就是“语义相关性”。本文章中的KG推理过程将与查询关系贴合,从而得到准确的答案。并且有相关可视化结果验证了这一观点的正确性。
上图所示的二维矩阵中,行为查询关系,列为KG中所存在的关系,颜色深度代表关联强度。可以看到,之前提出的渐进式/传播的方法,基本上每一行都是相同颜色的,所以在模型中没有考虑语义相关。但本文提出的AdaProp模型可以很好的识别到语义相关性,例如,当查询关系为"brother"的时候,与男性相关的关系出现不同程度的高亮。
GNN在KG中应用时面临的问题
GNN不可避免地会涉及太多不相关的实体,从而增加了学习的难度和计算成本。尤其是在大规模知识图谱上运行时,所以可以通过在传播过程中进行自适应采样来控制参与GNN的实体数目,这也是本文的动机。文章中认为,GNN在KG中应用需要解决一下几个问题。
- KG结构复杂,体积较大
- KG是多关系的,边和查询具有不同种类的关系,代表不同的语义。
- 没有直接监督和简单的启发式规则来指示实体与给定查询语义的相关性。
其中第一点和第二点很好理解,第三点的意思说白了,就是说目前没有很好的方法来量化这个语义相关的指标。之前的做法非常的粗糙,直接采用注意力机制进行计算,例如Fast Graph Transformer Network那篇文章中也引用了一种采用相似度矩阵(affinity matrix)结合GAE 来计算语义相似度的办法。公式如下所示:
M
(
l
,
k
)
=
(
g
θ
(
H
(
l
,
k
−
1
)
)
g
θ
(
H
(
l
,
k
−
1
)
T
)
M^{(l,k)}=(g\theta (H^{(l,k-1)})g\theta (H^{(l,k-1})^{T})
M(l,k)=(gθ(H(l,k−1))gθ(H(l,k−1)T)
而本文中的计算语义相似度的方法则更加复杂,在下一节将进行详细的介绍。
模型部分
学习语义感知分布
该模块的目标是采用学习到的特征来进行合理性的衡量,实际上就是进行语义相关性的量化。
第一步:先获取各个节点的邻居节点信息,计算每个关系(在KG中表现为连边)的“消息特征”,如下所示
m
(
e
s
,
r
,
e
o
)
l
:
=
M
E
S
S
(
h
e
s
l
−
1
,
h
e
o
l
−
1
,
h
r
l
,
h
r
q
l
)
m_{(e_{s},r,e_{o} ) }^{l}:=MESS(h_{e_{s}}^{l-1 }, h_{e_{o}}^{l-1 },h_{r}^{l },h_{r_{q}}^{l})
m(es,r,eo)l:=MESS(hesl−1,heol−1,hrl,hrql)
相当于利用了上一个传播过程中起始实体特征、终点实体特征、当前传播过程中的关系实体特征,和查询关系特征作为参数进行特征的计算。MESS函数的选择文章附录中也有介绍,但是选取并没有什么考究。
第二步:聚合“消息特征”,更新节点特征向量,如下所示。
h
e
o
l
:
=
δ
(
A
G
G
(
m
(
e
s
,
r
,
e
o
)
l
,
(
e
s
,
r
,
e
o
)
∈
ε
l
)
)
e
o
∈
N
(
V
e
q
,
r
q
l
−
1
)
h_{e_{o}}^{l}:=\delta (AGG(m_{(e_{s},r,e_{o} ) }^{l},(e_{s},r,e_{o})\in \varepsilon ^{l})) e_{o}\in \mathcal{N}(\mathcal{V}_{e_{q},r_{q} }^{l-1})
heol:=δ(AGG(m(es,r,eo)l,(es,r,eo)∈εl))eo∈N(Veq,rql−1)
当前传播步骤中节点的特征向量为,当前步骤消息特征的聚合。第一步、第二部连起来理解就是,首先,通过上一传播步骤的起点实体特征、上一传播步骤中的终点特征(实际上就是起点实体的一阶邻居实体节点)、然后上一传播步骤中起点实体到上一步骤中的终点实体(一阶邻居)的关系实体,与查询关系进行一个信息的计算,得到消息特征。再将消息特征通过AGG函数得到当前传播步骤中的
h
e
o
l
h_{e_{o}}^{l}
heol。有点绕口,那就看看下面这个例子:
如图所示,过程如下。首先得到节点2的特征向量
h
e
s
0
h_{e_{s}}^{0}
hes0,完成后节点2的邻居节点1,3,4,5,6,即为
h
e
o
0
h_{e_{o}}^{0}
heo0,且连接这些邻居节点的连边,视作为
h
r
1
h_{r}^{1}
hr1,以及当前的查询关系为
h
r
q
l
h_{r_{q}}^{l}
hrql。此时,完成了一次更新过程,再进行下一传播步骤。此时1,3,4,5,6的特征,作为
h
e
s
1
h_{e_{s}}^{1}
hes1,1,3,4,5,6的邻居节点7,8作为
h
e
o
1
h_{e_{o}}^{1}
heo1,其他的同理。(注:此处没有结合文章中的”增量采样策略“介绍,仅仅只是阐述更新过程)
第三步:引入线性映射函数,每层都有一个参数
θ
\theta
θ,用于映射变换。然后根据概率分布进行采样,
p
l
(
e
)
:
=
e
x
p
(
g
(
h
e
l
:
θ
)
/
τ
)
/
∑
e
′
∈
V
ˉ
e
q
,
r
q
l
e
x
p
(
g
(
h
e
l
:
θ
)
/
τ
)
p^{l(e)}:=exp(g(h_{e}^{l} :\theta)/\tau )/\sum _{e{}' \in \bar{V}^{l}_{e_{q},r_{q} } }exp(g(h_{e}^{l} :\theta)/\tau )
pl(e):=exp(g(hel:θ)/τ)/e′∈Vˉeq,rql∑exp(g(hel:θ)/τ)其中l是传播步长,
τ
\tau
τ是一个超参数,
θ
\theta
θ是一个可学习的参数,
h
e
l
h_{e}^{l}
hel代表计算语义相似度时当前节点的特征。但是对于每个节点而言,这么做需要大量的计算成本,所以采用Gumbel TopK的方法,(注:Gumbel Logits是一种基于Gumbel分布的技术,会随机生成一组离散概率分布”,随着tan参数的减小,Gumbel Logits,会越来越接近one-hot编码,所以也称作为“拟one-hot编码”),文章中也证明了该方法等同于上式。最终通过Gumbel TopK作为语义相似度大小的衡量指标。具体计算公式如下:
G
e
o
=
g
(
h
e
o
l
:
θ
l
)
−
l
o
g
(
−
l
o
g
U
e
o
)
G_{e_{o}}=g(h_{e_{o}}^{l}:\theta^{l})-log(-logU_{e_{o}})
Geo=g(heol:θl)−log(−logUeo)
这一部分中实际上还涉及了重参数化的概念,从一个分布中进行采样,而该分布式带有参数θ的,直接进行采样的话,采样动作时离散的,没有梯度信息的,那么反向传播的时候就不会对参数梯度进行更新,重参数化技巧可以保证从中采样的同时还保留梯度信息。
增量采样策略
采样策略需要考虑的:有效、高效、抽样等。
文章中提出,只考虑邻居节点是会错失真正的答案节点的。同时,又表明一般答案节点都位于查询实体的附近(这有点矛盾,又或许是我的理解不够到位,最终得出的结论是在周围邻居节点中结合语义进行查询)。文章中对比了GNN的几种采样方式,可以分为以下三类:节点级采样、分层采样、子图采样。
节点级采样
如GraphSAGE、PASS。在每个传播步骤中每个实体e从邻居集合采样K个实体;采样的是全部邻居节点,成本极大。
分层采样
如FastGCN、AS-GCN和LADIES。在每个传播步骤中至多采样K个实体,限制采样邻居的数目,从而提升速度。优点是,相对GCN是线性的速度提升,因为减少了搜索邻域的大小,是数量级别的改进。但是缺点是,实际上的图均为“图大而稀疏”,相邻层样本很可能没有关联,导致无法学习。
子图采样
如ClusterGCN、GraphSAINT等,相当于”断开连边“,将计算图的大小限制在子图中,然后再在子图中做”full-GCN“
控制变量的方式
如S-GCN,将上一层历史嵌入值视作为一个真实值的合理近似,然后控制变量。即每一次的变化,这样是基于一个假设“每次模型的参数没有太大的变化”。
基于KG的采样方法
如RS-GCN、DMPN包含一个完整的传播GNN来学习全局特征,并修剪另一个GNN以分层采样方式进行推理,可以降低在较大KG上传播的内存成本,但没有性能上的提升。
本文提出的增量式采样策略
本文提出的增量式采样策略由以下两个部分组成
候选生成CAND
给出一系列上一步骤的实体集 V l − 1 V_{l-1} Vl−1,将其表示为候选实体。如此,基本上所有 V l − 1 V_{l-1} Vl−1的相邻实体都可以视为采样的候选者。
候选抽样SAMP
用于控制涉及实体的数量。具体做法,将候选实体集合中被选中的实体与第 l − 1 l-1 l−1步骤中的所有实体一起作为下一步的实体涉及集合。选中与否的依据就是之前介绍的语义相似度得分。
下面根据图示进行案例介绍:
假设起始实体为2,可供采样的集合为实体2的邻居{1,3,4,5,6},通过语义相似度TopK的计算方式,采样节点为5,6;到达下一传播步骤时,可供采样的节点集合为5,6的邻居节点集合加上节点2的邻居节点,即{4,7,8}。数学表达式如下:
候选节点的产生:
V
ˉ
e
q
,
r
q
l
−
1
:
=
C
A
N
D
(
V
e
q
,
r
q
l
−
1
)
=
N
(
V
e
q
,
r
q
l
−
1
)
/
V
e
q
,
r
q
l
−
1
\bar{V} _{e_{q},r_{q}}^{l-1}:=CAND({V} _{e_{q},r_{q}}^{l-1}) =\mathcal{N} ({V} _{e_{q},r_{q}}^{l-1})/\mathcal{V}_{e_{q},r_{q}}^{l-1}
Vˉeq,rql−1:=CAND(Veq,rql−1)=N(Veq,rql−1)/Veq,rql−1
每个步骤所涉及的节点集合:
V
e
q
,
r
q
l
−
1
:
=
V
e
q
,
r
q
l
−
1
∪
N
(
V
e
q
,
r
q
l
−
1
)
S
A
M
P
(
V
ˉ
e
q
,
r
q
l
−
1
)
{V} _{e_{q},r_{q}}^{l-1}:={V} _{e_{q},r_{q}}^{l-1} \cup \mathcal{N} ({V} _{e_{q},r_{q}}^{l-1})SAMP({ \bar {V} _{e_{q},r_{q}}^{l-1}} )
Veq,rql−1:=Veq,rql−1∪N(Veq,rql−1)SAMP(Vˉeq,rql−1)
通过以上方法就可以严格的控制每一步骤所涉及的节点数目。文章中也给出了可视化结果,如下所示。
可以看出AdaProp的方法相较于传统的渐进式的方法涉及的节点数目是非常少的。同时也对不同采样方法的搜索空间进行的对比,如下所示,其中不同颜色的框代表传播步骤1/2/3。
总结
关于文章中提实验部分,读者朋友们感兴趣的话可以去看文章原文。文章中做了消融试验以及可视化的图表。特别是实验部分还提出了ToE的概念来阐述是那一部分提升了性能。是一篇质量极高且内容充实的文章。创新性地提出了一种增量式地采样方法,并且给出了一种简化计算语义相似度的方法。当然重点还是增量式的采样方法。从计算成本、效率、性能等几个方面实现了KG推理的提升。
感谢
特别感谢热心市民BIN!!!