来源:2021 KDD
模型代码: https://github.com/sharkmir1/T-GAP
主要贡献
1、提出了一种新的GNN编码器能够从时序知识图谱中有效地捕捉查询相关的信息。
2、通过分析推理的注意力分布,我们展示了T-GAP能在它的推理过程中提供可解释性。
一、方法overview
给定 GKG 和查询,在编码阶段,T-GAP首先使用PGNN去创造 GKG 中所有实体节点的初始特征 hi 。接下来,在每个解码步骤t=1,...,T,从 GKG 中迭代地采样一个子图 Gsub(t) ,子图中只包含了查询相关的节点和边。对于每个子图中包含的实体i,SGNN创建查询相关节点的特征 gi(t) ,该特征融合了查询向量q和初始特征 hi 。使用 hi 和 gi(t) ,注意力流计算转移概率去将每个节点的注意力值传播到它可以到达的邻居节点上,以得到下一步的节点注意力分布 ai(t+1) 。在最后的传播步骤,输入查询的答案可以被推理出,为具有最高注意力值 aiT 的节点。
二、具体模块方法
2.1Preliminary GNN
对于给定的 GKG ,首先对其中的实体都进行随机初始化。然后,为了用实体的上下文信息来表征实体,PGNN的每一层都通过聚合实体的邻居节点信息来表示实体。对于每个每个边 eij 之间的时间戳 tij ,我们提出了分别编码时间差 Δtij=tij−tquer y 的符号和距离,具体地,PGNN计算节点i和j之间的信息 mij 如下式:
mij=Wλ(Δtij)(hi+ρij+τ|Δtij|) where Wλ(Δtij)={Wpast if Δtij<0Wpresent if Δtij=0Wfuture if Δtij>0
其中 ρij 是关系嵌入。 τ|Δtij| 是时间差的嵌入。在这里,考虑了时间差的符号。
接下来,新节点的特征 hj′ 被以下式计算(实际上是多头注意力机制):
hj′=∑i∈N←jaijmijaij=softmaxi(αij)αij=LeakyReLU((WQhj)⊤(WKmij))
最后进行多头注意力机制的拼接:
hj′=‖k=1K∑i∈N¯jaijkmijk
其中K是多头注意力的头数。
2.2 Subgraph GNN
在每一个解码步骤t,SGNN为当前步骤子图中所有实体更新特征 gi 。SGNN不仅融合了实体的邻接节点信息,也融合了查询上下文向量。最初,子图中实体的特征都是他们的初始特征 hj 。接下来,SGNN使用与PGNN一样的方式进行信息传播,只不过该部分拥有独立的参数。如下式:
g~j′=‖k=1K∑i∈N←jaijkmijk
最终的特征 gj′ 还要将 g~j′ 与查询向量q拼接起来。如下式:
gj′=Wg[g~j′‖q]q=Wc× LeakyReLU (Wpresent (hquer y+ρquer y))
2.3Attention Flow(注意力传播)
最初,查询节点的权重值是1,其他实体都是0,之后,在步骤t,权重流传播边权重 a~ij(t) 并且将它们聚合到节点权重 ()aj(t) 上。如下式:
a~ij(t+1)=Tij(t+1)ai(t),aj(t+1)=∑i∈N←ja~ij(t+1)
其中,要保证在图中所有节点的权重和保持初始的1不变。即:
s.t. ∑iai(t+1)=1,∑ija~ij(t+1)=1
转移概率计算方式定义如下:
Tij(t+1)=softmaxj(score(gi(t),gj(t),ρij,τ|Δtij|)+score(gi(t),hj,ρij,τ|Δtij|))score(i,j,r,τ)=σ((WQi)⊤(WK(j+r+τ)))
2.4 Subgraph Sampling
上部分是子图采样的权重传播过程,下部分是采样后的子图结果
子图采样的过程:
1、找到t-1步中,x个有最高节点注意力的核心节点。
2、对于每个核心节点,采样y个从该节点出发的边。
3、在x*y个采样的边中,找到z个在当前步骤中具有最高分的边。
4、将这z个边添加到
其中,x,y,z是超参数,且x最大为2,y最大为3,z最大为2。