论文名称:Graph Attention Networks
论文地址:https://arxiv.org/abs/1710.10903
本文介绍GATs算法,它是一种对当前网络结构的一种创新,使用masked self-attention layers解决当前图卷积的不足。通过stacking layers能够聚合邻居节点的特征,不需要进行复杂的矩阵运算和图结构的先验知识。通过这种方式,我们解决spectral-based graph一些挑战,使得我们模型适用于inductivte和tansductive任务。
1.GAT ARCHITECTURE
接下来,我们介绍一下graph attention networks的block layer(可以进行 stack),以及他们相关理论集实践中好处、相对于之前工作一些限制。
1.1 GRAPH ATTENTIONAL LAYER
接下来,介绍一下graph attentional layer。
输入一组节点特征
h
=
{
h
?
1
,
h
?
2
,
…
,
h
?
N
}
,
h
?
i
∈
R
F
\mathbf{h}=\left\{\vec{h}_{1}, \vec{h}_{2}, \ldots, \vec{h}_{N}\right\}, \vec{h}_{i} \in \mathbb{R}^{F}
h={h
1?,h
2?,…,h
N?},h
i?∈RF,其中
N
N
N是指node的数量,
F
F
F是每个node特征的数量。经过 该层,会输出新的节点特征集合
h
′
=
{
h
?
1
′
,
h
?
2
′
,
…
,
h
?
N
′
}
,
h
?
i
′
∈
R
F
′
\mathbf{h}^{\prime}=\left\{\vec{h}_{1}^{\prime}, \vec{h}_{2}^{\prime}, \ldots, \vec{h}_{N}^{\prime}\right\}, \vec{h}_{i}^{\prime} \in \mathbb{R}^{F^{\prime}}
h′={h
1′?,h
2′?,…,h
N′?},h
i′?∈RF′。
将输入特征转化为输出特征,为了获得更高的特征表达,我们至少进行可学习的线性转换。为了实现这个目的,我们初始化、共享一个weight matrix
W
∈
R
F
′
×
F
\mathbf{W} \in \mathbb{R}^{F^{\prime} \times F}
W∈RF′×F,应用到每个node上。然后,我们对节点进行self-attention, 这个self attention机制
a
a
a是共享的:
R
F
′
×
R
F
′
→
R
\mathbb{R}^{F^{\prime}} \times \mathbb{R}^{F^{\prime}} \rightarrow \mathbb{R}
RF′×RF′→R, attention coefficients计算方式如下:
e
i
j
=
a
(
W
h
?
i
,
W
h
?
j
)
(1)
e_{i j}=a\left(\mathbf{W} \vec{h}_{i}, \mathbf{W} \vec{h}_{j}\right)\tag{1}
eij?=a(Wh
i?,Wh
j?)(1) 该值意味着node
j
j
j的特征对node
i
i
i的重要性。通常来说,如果不考虑结构信息,模型需要对计算所有节点对该节点的权重。我们考虑了图的结构信息,加入masked attention, 我们只计算
e
i
j
e_{ij}
eij?, 其中
j
∈
N
i
j\in\mathcal{N_i}
j∈Ni?,
N
i
\mathcal{N}_i
Ni?指node
i
i
i的邻居节点。在我们的实验中,我们只考虑节点
i
i
i的一阶邻居(包括节点
i
i
i自己), 为了使得不同邻居节点
j
j
j 可以比较,我们对其进行softmax操作:
α
i
j
=
softmax
?
j
(
e
i
j
)
=
exp
?
(
e
i
j
)
∑
k
∈
N
i
exp
?
(
e
i
k
)
(2)
\alpha_{i j}=\operatorname{softmax}_{j}\left(e_{i j}\right)=\frac{\exp \left(e_{i j}\right)}{\sum_{k \in \mathcal{N}_{i}} \exp \left(e_{i k}\right)}\tag{2}
αij?=softmaxj?(eij?)=∑k∈Ni??exp(eik?)exp(eij?)?(2) 我们对其进行扩展,使用的注意力机制
a
a
a是单层前向的神经网络,使用的参数化矩阵
a
→
∈
R
2
F
2
\overrightarrow{\mathrm{a}} \in \mathbb{R}^{2 F^{2}}
a
∈R2F2, 采用LeakyReLu非线性变换(with negative input slope
α
=
0.2
\alpha=0.2
α=0.2),如Figure 1(left)所示,公式如下:
α
i
j
=
exp
?
(
LeakyReLU
?
(
a
→
T
[
W
h
?
i
∥
W
h
?
j
]
)
)
∑
k
∈
N
i
exp
?
(
LeakyReLU
?
(
a
→
T
[
W
h
?
i
∥
W
h
?
k
]
)
)
(3)
\alpha_{i j}=\frac{\exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{j}\right]\right)\right)}{\sum_{k \in \mathcal{N}_{i}} \exp \left(\operatorname{LeakyReLU}\left(\overrightarrow{\mathbf{a}}^{T}\left[\mathbf{W} \vec{h}_{i} \| \mathbf{W} \vec{h}_{k}\right]\right)\right)}\tag{3}
αij?=∑k∈Ni??exp(LeakyReLU(a
T[Wh
i?∥Wh
k?]))exp(LeakyReLU(a
T[Wh
i?∥Wh
j?]))?(3) 其中
?
T
\cdot ^T
?T代表转置,
∥
\|
∥代表concatenation操作
我们将标准化的attention权重系数对邻居特征进行线性组合,使用
σ
\sigma
σ进行非线性变换,生成每个节点的最终特征:
h
?
i
′
=
σ
(
∑
j
∈
N
i
α
i
j
W
h
?
j
)
(4)
\vec{h}_{i}^{\prime}=\sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j} \mathbf{W} \vec{h}_{j}\right)\tag{4}
h
i′?=σ???j∈Ni?∑?αij?Wh
j????(4) 为了使得模型的效果更加稳定,我们对attention机制进行扩展,使用multi-head attention.
K
K
K个独立的attention机制进行类似Equation 4的转换,然后将特征进行拼接,得到输出特征:
h
?
i
′
=
∥
k
=
1
K
σ
(
∑
j
∈
N
i
α
i
j
k
W
k
h
?
j
)
(5)
\vec{h}_{i}^{\prime}=\|_{k=1}^{K} \sigma\left(\sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \vec{h}_{j}\right)\tag{5}
h
i′?=∥k=1K?σ???j∈Ni?∑?αijk?Wkh
j????(5) 其中,
∥
\|
∥表示concatention,
α
i
j
k
\alpha_{ij}^k
αijk?表示
k
-th
k\text{-th}
k-th attention机制的标准化权重系数,
W
k
W^k
Wk是指进行线性转化的权重矩阵。最后每个节点输出
h
′
h^\prime
h′, 特征的维度是
K
F
′
KF^\prime
KF′而不是
F
′
F^\prime
F′。
如果我们在最后一层使用multi-head attention,concatenation就毫无意义了,取而代之,我们一般使用averaging,然后进行非线性变换:
h
?
i
′
=
σ
(
1
K
∑
k
=
1
K
∑
j
∈
N
i
α
i
j
k
W
k
h
?
j
)
(6)
\vec{h}_{i}^{\prime}=\sigma\left(\frac{1}{K} \sum_{k=1}^{K} \sum_{j \in \mathcal{N}_{i}} \alpha_{i j}^{k} \mathbf{W}^{k} \vec{h}_{j}\right)\tag{6}
h
i′?=σ???K1?k=1∑K?j∈Ni?∑?αijk?Wkh
j????(6) multi-head的汇总过程如Figure 1(right)。
|