图卷积对图中节点的特征和图结构建模,本文中作者首先移除图卷积中的非线性变换,发现在GCN中起关键作用的是传播层,而不是感知层。然后提出AGNN模型,在传播层引入attention机制,使中心节点特征的聚合过程中,对邻居节点的注意力产生差异。模型在benchmark测试用的文献引用数据集上的效果优于其他state-of-the-art的方法。并且,通过传播矩阵计算节点之间的关联强度,得到了一些更有趣的信息。在预测目标节点类别时,与预测类别相同的邻居节点将会在此过程中,承担了比其他邻居节点更重要的角色。
Graph Neural Network
GNN模型的向前传播是典型的传播层和感知层的交替。模型第l层的隐含状态
H
(
l
)
∈
R
n
×
d
h
H^{(l)} \in \mathbb{R}^{n\times d_h}
H(l)∈Rn×dh,隐含状态的第i行
H
i
(
l
)
H^{(l)}_i
Hi(l),表示节点i的
d
h
d_h
dh维特征。传播矩阵
P
∈
R
n
×
n
P\in \mathbb{R}^{n\times n}
P∈Rn×n传播层定义为
H
~
(
l
)
=
P
H
(
l
)
\tilde{H}^{(l)}=PH^{(l)}
H~(l)=PH(l)
回顾半监督GCN,交替叠加两次,传播层和感知层
H
(
1
)
=
R
e
L
U
(
(
P
X
)
W
(
0
)
)
,
Z
=
f
(
X
,
A
)
=
s
o
f
t
m
a
x
(
(
P
H
(
1
)
)
W
(
1
)
)
H^{(1)} = \mathrm{ReLU}((PX)W^{(0)}), \\ \\ Z = f(X, A) = \mathrm{softmax}((PH^{(1)})W^{(1)})
H(1)=ReLU((PX)W(0)),Z=f(X,A)=softmax((PH(1))W(1))
其中,
P
=
D
~
−
1
/
2
A
~
D
~
−
1
/
2
P=\tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2}
P=D~−1/2A~D~−1/2,
A
~
=
A
+
I
\tilde{A}=A+\mathbb{I}
A~=A+I。参数
W
(
0
)
和
W
(
1
)
W^{(0)}和W^{(1)}
W(0)和W(1)通过最小化损失函数L,训练得到
L
=
−
∑
i
∈
L
∑
c
=
1
d
y
Y
i
c
l
n
Z
i
c
\mathcal{L}= -\sum_{i\in L}\sum_{c=1}^{d_y}Y_{ic}\mathrm{ln}Z_{ic}
L=−i∈L∑c=1∑dyYiclnZic
为了更好的理解GCN,作者将GCN中的非线性变换剔除,只保留传播层,称为GLN。这样GLN模型就是一个简单的线性模型。
Z
=
f
(
X
,
A
)
=
s
o
f
t
m
a
x
(
(
P
2
X
)
W
(
0
)
W
(
1
)
)
Z = f(X, A) = \mathrm{softmax}\Big((P^2X)W^{(0)}W^{(1)}\Big)
Z=f(X,A)=softmax((P2X)W(0)W(1))
如表2,比较GCN和GLN,GLN的准确度甚至更高,这表明对提升模型表现至关重要的是传播层,而不是感知层。其他不使用图卷积的方法对比,GLNN模型在准确度上有明显差距。
AGNN
原始的GCN和其他图神经网络使用的是静态,无法自适应的传播法则。无法捕捉中心节点的哪个邻居节点对于中心节点的分类贡献更大。真实数据并非所有的边都是代表着相同的关联强度,其中必然有一些才是至关重要的。
作者提出的AGNN,简单的在每层加入一个参数 β ( t ) \beta^{(t)} β(t)。作用在邻居节点集上的注意力机制,学习哪些邻居与中心节点关联更强,权衡他们对分类目标节点的贡献度。
AGNN第一层网络与原始GCN一样,参数矩阵
W
(
0
)
∈
R
d
x
×
d
h
W^{(0)}\in \mathbb{R}^{d_x \times d_h}
W(0)∈Rdx×dh将节点特征
X
X
X转化为长度为
d
h
d_h
dh的特征向量,激活函数使用ReLU。
H
(
1
)
=
R
e
L
U
(
X
W
(
0
)
)
H^{(1)} = \mathrm{ReLU}(XW^{(0)})
H(1)=ReLU(XW(0))
在每个传播层加入参数化的注意力引导机制,参数为
β
(
t
)
∈
R
\beta^{(t)}\in \mathbb{R}
β(t)∈R
H
(
l
+
1
)
=
P
(
l
)
H
(
l
)
,
H^{(l+1)} = P^{(l)}H^{(l)},
H(l+1)=P(l)H(l),
这样,对于节点i的输出向量为
H
i
(
l
+
1
)
=
∑
j
∈
N
(
i
)
∪
{
i
}
P
i
j
(
l
)
H
i
j
(
l
)
,
P
i
(
l
)
=
s
o
f
t
m
a
x
(
[
β
(
l
)
c
o
s
(
H
i
(
l
)
,
H
j
(
l
)
)
]
j
∈
N
(
i
)
∪
{
i
}
)
H^{(l+1)}_i = \sum_{j\in N(i) \cup \{i\}}P^{(l)}_{ij}H^{(l)}_{ij}, \\ \\ P_i^{(l)}=\mathrm{softmax}([\beta^{(l)} \mathbb{cos}(H^{(l)}_{i}, H^{(l)}_{j})]_{j\in N(i) \cup \{i\}})
Hi(l+1)=j∈N(i)∪{i}∑Pij(l)Hij(l),Pi(l)=softmax([β(l)cos(Hi(l),Hj(l))]j∈N(i)∪{i})
其中传播矩阵
P
i
(
l
)
P_i^{(l)}
Pi(l)也是关于第l层状态和参数
β
(
l
)
\beta^{(l)}
β(l)的函数。attention中的softmax函数是确保传播矩阵每行的和为1,代表邻居节点对中心节点的影响力总和为1。这样从节点j到i的注意力为
P
i
j
(
l
)
=
(
1
/
C
)
e
β
(
l
)
c
o
s
(
H
i
,
H
j
)
C
=
∑
j
∈
N
(
i
)
∪
{
i
}
e
β
(
l
)
c
o
s
(
H
i
,
H
j
)
P^{(l)}_{ij}=(1/C)e^{\beta^{(l)}cos(H_i, H_j)} \\ \\ C=\sum_{j\in N(i) \cup \{i\}}e^{\beta^{(l)}cos(H_i, H_j)}
Pij(l)=(1/C)eβ(l)cos(Hi,Hj)C=j∈N(i)∪{i}∑eβ(l)cos(Hi,Hj)
计算节点i和节点j在第l层隐含状态的余弦距离,它捕捉了节点j到节点i的关联程度。注意力机制更倾向于选择那些与中心节点相同类别的邻居节点,给予更强的关联强度。
Experiments
在benchmark数据集上,作者设计了三个对比试验,验证AGNN模型的半监督分类精度。与其他baseline方法的结果对比,见下表。无论是只包含传播层的GLN模型还是基于attention的AGNN模型,都取得了优于其他方法的精度。
定性分析
之所以将attention引入模型,有一部分是因为,它提供了一定的解释性。学习得到的传播矩阵P,反映特征聚合过程中,中心节点i,对邻居节点j的关注度,它代表在对节点i分类过程中,节点j起到的作用。
图1,作者提供了基于Cora和CiteSeer数据集的节点对邻接矩阵attention统计。展示了来自
c
1
c_1
c1c1的节点到来自
c
2
c_2
c2c2的节点的平均attention。将其定义为
c
2
c_2
c2到
c
1
c_1
c1的相关性。
R
e
l
e
v
a
n
c
e
(
c
2
→
c
2
)
=
1
∣
S
c
1
,
c
2
∣
∑
(
i
,
j
)
∈
S
c
1
,
c
2
R
(
j
←
i
)
,
\mathrm{Relevance}(c_2\rightarrow c_2) = \frac{1}{|S_{c_1,c_2}|}\sum_{(i,j)\in S_{c_1,c_2}} R(j \leftarrow i),
Relevance(c2→c2)=∣Sc1,c2∣1(i,j)∈Sc1,c2∑R(j←i),
每个边的相关性得分即为:
R
(
j
←
i
)
=
(
P
i
j
(
l
)
−
1
∣
N
(
i
)
∣
+
1
)
/
1
∣
N
(
i
)
∣
+
1
R(j \leftarrow i) = \Big(P^{(l)}_{ij}-\frac{1}{|N(i)|+1}\Big)\Big/\frac{1}{|N(i)|+1}
R(j←i)=(Pij(l)−∣N(i)∣+11)/∣N(i)∣+11
上式中,
∣
N
(
i
)
∣
|N(i)|
∣N(i)∣表示节点i的度,
S
c
1
,
c
2
=
{
(
i
,
j
)
∈
E
s
,
Y
i
=
c
1
,
Y
j
=
c
2
}
S_{c_1,c_2}=\{(i,j)\in E^s, Y_i=c_1,Y_j=c_2\}
Sc1,c2={(i,j)∈Es,Yi=c1,Yj=c2},
E
s
E^s
Es表示包含self-loop在内的所有边的集合。如果不使用任何attention,那么,传播中对中心节点的每个邻居的关注度是均匀的,
P
i
j
=
1
∣
N
(
i
)
∣
+
1
P_{ij}=\frac{1}{|N(i)|+1}
Pij=∣N(i)∣+11。加入attention之后,上式中的归一化attention
R
(
j
→
i
)
R(j\rightarrow i)
R(j→i)需要为0,所以
P
i
j
P_{ij}
Pij要减去这个基础误差。并且,使用
1
∣
N
(
i
)
∣
+
1
\frac{1}{|N(i)|+1}
∣N(i)∣+11做归一化。这样,attention度量的是中心节点与其邻居节点之间的相对强度,而不是绝对差异。
Fig1 展示了CiteSeer和Cora数据集的相关性得分。对于两个数据集,对角线上的元素占主导地位,这表明注意力机制正在学习为同一类别的节点增加权重。如果
c
2
→
c
1
c_2\rightarrow c_1
c2→c1的相关性很高,那说明,平均来看,类别
c
1
c_1
c1的节点更加关注邻居集合中那些类别
c
2
c_2
c2的节点。
剔除self-loops,分析相关性得分较高和较低的边。对相关性得分进行排序,分别取top100和个bottom100,计算这些边中,两端节点是相同类型节点的边的占比。如表5,这表明作者提出的模型结构倾向于更关注来自相同类型的两个节点。
最后,分析那些测试集中,GCN没有分类正确,但AGNN正确分类的节点。展示注意力机制如何加权局部邻居节点的贡献。Fig2中作者展示了三个实例,目标节点二阶邻居节点的大小,代表目标节点对邻居节点的注意力强度。同样可以发现,AGNN对目标节点分类时,邻居节点中的某一类节点会受到更多的关注,这帮助模型将给目标节点打出正确的标签。