当前位置 博文首页 > 韦全敏的博客:论文笔记-DIRECT MULTI-HOP ATTENTION BASED GRAP
论文标题:DIRECT MULTI-HOP ATTENTION BASED GRAPH NEURAL NETWORKS
论文链接:
更多图神经网络和深度学习内容请关注:
在图神经网络(GNN)中引入自注意力机制(self-attention)
可以实现图表示学习的最先进(state-of-the-ar)性能。 然而自注意力机制仅在两个相互连接的节点之间进行计算,且图表示仅取决于两个相互连接节点。
自注意力机制缺点为: 这种注意力计算不能考虑提供了图结构上下文信息的多跳邻居(跳数大于等于2的邻居)对节点表示学习的影响。 这篇论文提出了用于图表示学习的基于直接多跳注意力机制的图神经网络(DAGN)
,这是将多跳邻接的上下文信息融入注意力值计算的方法,可在每一层进行远程交互。
DAGN将注意力分值从相邻节点扩展到非相邻节点(多跳邻居),增加每个消息传递层的感受野。与以前的方法不同,DAGN在注意力分值时采用扩散优先
(diffusion prior)的方法,可有效地计算节点对之间的所有路径权重。这有助于DAGN捕捉每一层的更大范围结构信息,并了解更多信息的注意力分布。
图注意力网络(Graph Attention Network,GAT)等相关模型将注意机制应用于图神经网络。它们根据某条边直接连接的节点计算注意力分数,使得模型能够根据它们的注意力分数处理边上的消息,注意力分数可理解为是一种权重。
然而,这种仅计算某条边连接的节点的注意力意味着一个节点可以只关注它的近邻(一跳邻居,即直连邻居)来计算它的下一层表示, 即单个消息传递层的感受野仅限于单跳图结构。虽然叠加多个图注意力网络层可以扩大对多跳邻居的感受野,学习非单跳邻居的相互作用,但这些深层图注意力网络通常存在过度平滑问题。此外,单个GAT层中的边注意力权重仅基于节点表示本身,不依赖于图结构的邻域上下文。总之,单跳注意机制限制了它们探索图结构信息与注意力权重之间相关性的能力。以前的工作(Xu et al.,2018;Klicpera et al.,2019b)已经显示出在单层中执行多跳消息传递的优势,表明了在单层中探索图结构信息是有益的,同时这些方法不是基于图注意力机制的。
本文提出了一种基于直接多跳注意力机制的图神经网络(DAGN),它通过一个新颖的图注意力扩散层(下图)对关系图数据进行高效的多跳自注意力(multi-hop self-attention)计算。
图注意力扩散层计算过程为:
论文提出的DAGN模型主要有两个优点 :
DAGN建立在GNN的基础上,同时融合了图注意力机制和扩散技术(Graph Attention and Diffusion technique)的优势,DAGN的核心是多跳注意力扩散(Multi-hop Attention Diffusion)。DAGN体系结构如下图所示。
每个DAGN块均由注意力计算组件,注意力扩散组件,两个层归一化组件,前馈层组件和2个残余连接组件组成。DAGN块可以堆叠以构成一个深度模型。在下图右边子图,展示的是通过注意力分散过程实现了与上下文有关的注意力。其中
v
i
,
v
j
,
v
p
,
v
q
∈
V
v_i,v_j,v_p,v_q∈V
vi?,vj?,vp?,vq?∈V是图中的节点。
我们首先介绍注意力扩散,它作用于DAGN每一层的注意力分数。扩散操作算子的输入是一组三元组 ( v i , r k , v j ) (v_i,r_k,v_j) (vi?,rk?,vj?),其中 v i , v j v_i,v_j vi?,vj?为节点 i i i和节点 j j j, r k r_k rk?为节点 i i i和节点 j j j之间边类型。 DAGN首先计算所有边上的注意力得分,然后注意力扩散模块通过扩散过程,基于边注意力分数计算未被边直接连接的节点对之间的注意力值。
在第 l l l层,为每个三元组 ( v i , r k , v j ) (v_i,r_k,v_j) (vi?,rk?,vj?)计算一个向量消息。为了计算结点 v j v_j vj?在 l + 1 l+1 l+1层的表示,所有从三元组到 v j v_j vj?的所有消息被聚合成一个消息,然后将其用于更新 v l + 1 v_{l+1} vl+1?。
首先,一条边
(
v
i
,
r
k
,
v
j
)
(v_i,r_k,v_j)
(vi?,rk?,vj?)的注意力得分由以下公式计算
每个参数意义如下
在图G的每一条边上应用上述公式,我们可得到一个注意力得分矩阵
S
(
l
)
S^{(l)}
S(l)
随后通过对注意力得分矩阵
S
(
l
)
S^{(l)}
S(l)执行行式softmax
来获得注意力矩阵
A
(
l
)
A^{(l)}
A(l):
A
(
l
)
=
s
o
f
t
m
a
x
(
S
(
l
)
)
A^{(l)}= softmax(S^{(l)})
A(l)=