目录
论文:Semi-Supervised Classification with Graph Convolutional Networks
使用图卷积网络进行半监督节点分类
作者:Thomas N. Kipf, Peter Bloem, Rianne van den Berg, Ivan Titov, Max Welling
荷兰阿姆斯特丹大学
来源:ICLR 2017
论文链接:https://arxiv.org/abs/1609.02907
TensorFlow版本代码: https://github.com/tkipf/gcn
pytorch版本代码:https://github.com/tkipf/pygcn
本文提出了一种图卷积网络(graph covolutional networks, GCNs),该网络是传统卷积算法在图结构数据上的一个变体,可以直接用于处理图结构数据。从本质上讲,GCN 是谱图卷积(spectral graph convolution) 的局部一阶近似(localized first-order approximation)。GCN的另一个特点在于其模型规模会随图中边的数量的增长而线性增长。总的来说,GCN 可以用于对局部图结构与节点特征进行编码。
文章创新有两点:
- 对直接操作于图结构数据的网络模型根据频谱图卷积(Hammond等人于2011年提出的Wavelets on graphs via spectral graph theory)使用一阶近似简化计算的方法,提出了一种简单有效的层式传播方法。
- 验证了图结构神经网络模型可用于快速可扩展式的处理图数据中节点半监督分类问题,作者通过在一些公有数据集上验证了自己的方法的效率和准确率能够媲美现有的顶级半监督方法。
1 为什么GCN是谱图卷积的一阶局部近似?- GCN的推导
从本质上说,GCN是谱图卷积的一阶局部近似。那么,什么是谱图卷积呢?
谱图卷积
考虑信号 x ∈ R N x∈\mathbb{R}^N x∈RN(通常就是节点的特征向量)与以参数为 $θ∈\mathbb{R}^N $的滤波器 $g_θ=diag(θ) $在傅里叶域的谱卷积。
g
θ
∗
x
=
U
g
θ
U
T
x
(
3
)
g_\theta * x = Ug_\theta U^Tx \qquad (3)
gθ∗x=UgθUTx(3)
其中
- U 是对称归一化的拉普拉斯(normalized graph Laplacian)算子 L = I N − D − 1 / 2 A D − 1 / 2 = U Λ U T L=I_N−D^{−1/2}AD^{−1/2}=UΛU^T L=IN−D−1/2AD−1/2=UΛUT的特征向量矩阵,Λ是由L的特征向量构成的对角矩阵。
L
=
D
−
1
2
(
D
−
A
)
D
−
1
2
=
D
−
1
2
D
D
−
1
2
−
D
−
1
2
A
D
−
1
2
=
I
N
−
D
−
1
2
A
D
−
1
2
\begin{aligned} L &= D^{-\frac{1}{2}}(D - A)D^{-\frac{1}{2}} \\ &= D^{-\frac{1}{2}} D D^{-\frac{1}{2}} - D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \\ &= I_N - D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \end{aligned}
L=D−21(D−A)D−21=D−21DD−21−D−21AD−21=IN−D−21AD−21
由于L是实对称矩阵, 因此其特征向量矩阵U是正交矩阵,即
U
U
T
=
I
N
UU^T=I_N
UUT=IN
- U T x U^Tx UTx是x的傅里叶变换。
- g θ g_θ gθ是由参数θ构成的对角矩阵diag(θ)。由于参数θ的确定与L的特征值有关,作者认为 g θ g_θ gθ是特征值 Λ的一个函数,即令
g θ = g θ ( Λ ) g_θ=g_θ(Λ) gθ=gθ(Λ)
式(3)的计算量很大,因为特征向量矩阵U 的复杂度是
O
(
N
2
)
O(N^2)
O(N2)。此外,对于大型图来说,L特征值分解的计算量也很大。
为了解决这个问题,Hammond et al.(2011) :Wavelets on graphs via spectral graph theory指出
g
θ
(
Λ
)
g_θ(Λ)
gθ(Λ)可以很好的通过Chebyshev多项式
T
k
(
x
)
T_k(x)
Tk(x) 的Kth-阶截断展开来拟合,并对Λ进行scale使其元素位于[−1,1]:
g
θ
(
Λ
)
≈
∑
k
=
0
K
θ
k
T
K
(
Λ
~
)
(
4
)
g_{\theta}(Λ) \approx \sum^{K}_{k=0} \theta_kT_K(\tilde Λ) \qquad (4)
gθ(Λ)≈k=0∑KθkTK(Λ~)(4)
其中
- Λ ~ = 2 Λ / λ m a x − I N \tilde Λ = 2Λ / λ_{max}− I_N Λ~=2Λ/λmax−IN(为缩放后的特征向量矩阵,缩放后范围是[−1,1],单位矩阵的特征值是n重1),缩放的目的是为了满足Chebyshev多项式 T k ( x ) T_k(x) Tk(x) 的 K t h K^{th} Kth 阶截断展开的条件:自变量范围需要在[−1,1]之间
- λ m a x λ_{max} λmax是L 的最大特征值,也叫谱半径。
- θ ∈ R K θ∈\mathbb{R}^K θ∈RK 是切比雪夫系数的向量
- Chebyshev多项式递归定义为 T k ( x ) = 2 x T k − 1 ( x ) − T k − 2 ( x ) T_k(x) = 2xT_{k−1}(x) − T_{k−2}(x) Tk(x)=2xTk−1(x)−Tk−2(x), 其中 T 0 ( x ) = 1 , T 1 ( x ) = x T_0(x)=1, T_1(x)=x T0(x)=1,T1(x)=x 。
回到对信号x与滤波器 g θ g_{θ} gθ的卷积的定义,现在有:
g
θ
∗
x
=
∑
k
=
0
K
θ
k
T
K
(
L
~
)
x
(
5
)
g_{\theta} * x = \sum^{K}_{k=0} \theta_kT_K(\tilde L)x \qquad (5)
gθ∗x=k=0∑KθkTK(L~)x(5)
其中
- L ~ = 2 L / λ m a x − I N = U Λ ~ U T \tilde L= 2L / λ_{max}− I_N=U \tilde \Lambda U^T L~=2L/λmax−IN=UΛ~UT
- 易证 ( U Λ U T ) k = U Λ k U T (UΛU^T)^k=UΛ^kU^T (UΛUT)k=UΛkUT
注意,此表达式现在是K-localized,因为它是拉普拉斯算子中的Kth-阶多项式,即它仅取决于离中央节点(Kth阶邻域)最大K步的节点。上式的复杂度是O(|E|),即与边数呈线性关系。Defferrard et al. 2016:Toward an Architecture for Never-Ending Language Learning使用这个K-localized卷积来定义图上的卷积神经网络。
公式(4)到公式(5)的补充证明如下:
(1)先用数学归纳法证明
U
T
k
(
Λ
~
)
U
T
=
T
k
(
U
Λ
~
U
T
)
U T_k (\tilde{\Lambda}) U^T = T_k (U \tilde{\Lambda} U^T)
UTk(Λ~)UT=Tk(UΛ~UT)
数学归纳法思路:当n=1时显然成立,假设n=k时成立,只需证n=k+1时成立
证明:
根据切比雪夫多项式的定义, 已知
U
T
0
(
Λ
~
)
U
T
=
U
U
T
=
1
=
T
0
(
U
Λ
~
U
T
)
U
T
1
(
Λ
~
)
U
T
=
U
Λ
~
U
T
=
T
1
(
U
Λ
~
U
T
)
\begin{aligned} &U T_0(\tilde{\Lambda}) U^T = UU^T =1 = T_0(U \tilde{\Lambda} U^T) \\ &U T_1(\tilde{\Lambda}) U^T = U\tilde{\Lambda}U^T = T_1(U \tilde{\Lambda} U^T) \end{aligned}
UT0(Λ~)UT=UUT=1=T0(UΛ~UT)UT1(Λ~)UT=UΛ~UT=T1(UΛ~UT)
假设对于任意k>1, 满足
U
T
k
−
2
(
Λ
~
)
U
T
=
T
k
−
2
(
U
Λ
~
U
T
)
U T_{k-2} (\tilde{\Lambda}) U^T= T_{k-2} (U \tilde{\Lambda} U^T)
UTk−2(Λ~)UT=Tk−2(UΛ~UT)
与
U
T
k
−
1
(
Λ
~
)
U
T
=
T
k
−
1
(
U
Λ
~
U
T
)
U T_{k-1} (\tilde{\Lambda}) U^T= T_{k-1} (U \tilde{\Lambda} U^T)
UTk−1(Λ~)UT=Tk−1(UΛ~UT)
则
U
T
k
(
Λ
~
)
U
T
=
2
U
Λ
~
T
k
−
1
(
Λ
~
)
U
T
−
U
T
k
−
1
(
Λ
~
)
U
T
=
2
(
U
Λ
~
U
T
)
[
U
T
k
−
1
(
Λ
~
)
U
T
]
−
U
T
k
−
1
(
Λ
~
)
U
T
=
2
(
U
Λ
~
U
T
)
T
k
−
1
(
U
Λ
~
U
T
)
−
T
k
−
1
(
U
Λ
~
U
T
)
=
T
k
(
U
Λ
~
U
T
)
\begin{aligned} U T_k (\tilde{\Lambda}) U^T &= 2U \tilde{\Lambda} T_{k-1}(\tilde{\Lambda})U^T - U T_{k-1}(\tilde{\Lambda}) U^T \\ &= 2 (U \tilde{\Lambda} U^T) \left[U T_{k-1}(\tilde{\Lambda})U^T \right] - U T_{k-1}(\tilde{\Lambda}) U^T \\ &= 2 (U \tilde{\Lambda} U^T) T_{k-1} (U \tilde{\Lambda} U^T) - T_{k-1} (U \tilde{\Lambda} U^T) \\ &= T_k (U \tilde{\Lambda} U^T) \end{aligned}
UTk(Λ~)UT=2UΛ~Tk−1(Λ~)UT−UTk−1(Λ~)UT=2(UΛ~UT)[UTk−1(Λ~)UT]−UTk−1(Λ~)UT=2(UΛ~UT)Tk−1(UΛ~UT)−Tk−1(UΛ~UT)=Tk(UΛ~UT)
因此,根据数学归纳法, 证毕。
(2)已知
L ~ = U Λ ~ U T \tilde L= U \tilde{\Lambda} U^T L~=UΛ~UT
(3)将(1)、(2)两式带入卷积公式:
g θ ∗ x = U g θ U T x = U g θ ( Λ ) U T x = U ( ∑ k = 0 K θ k T K ( Λ ~ ) ) U T x = ( ∑ k = 0 K θ k T K ( U Λ ~ U T ) ) x = ∑ k = 0 K θ k T K ( L ~ ) x ( 5 ) \begin{aligned} g_\theta * x & = Ug_\theta U^Tx \\ & = U g_{\theta}(Λ) U^Tx \\ & =U (\sum^{K}_{k=0} \theta_kT_K(\tilde Λ)) U^Tx \\ & = (\sum^{K}_{k=0} \theta_kT_K(U\tilde Λ U^T)) x \\ & = \sum^{K}_{k=0} \theta_k T_K(\tilde L) x \qquad (5) \end{aligned} gθ∗x=UgθUTx=Ugθ(Λ)UTx=U(k=0∑KθkTK(Λ~))UTx=(k=0∑KθkTK(UΛ~UT))x=k=0∑KθkTK(L~)x(5)
Layer-wise Linear Model(逐层线性模型)
简化:K=1(2个参数的模型)
因此可以通过堆叠多个形式为式(5)的卷积层来建立基于图卷积的神经网络模型。现在,文中将分层卷积操作限制为K=1(式(5)),即关于L是线性的,因此在图拉普拉斯谱上具有线性函数。
(以上展示了改进后的卷积的形式,都是前人的工作,本文的工作如下)
在GCN的这个线性公式中,作者进一步近似 λ m a x ≈ 2 λ_{max}≈2 λmax≈2 , 可以预测到GCN的参数能够在训练中适应这一变化。根据这些近似,式(5)简化为:
g θ ∗ x = ∑ k = 0 K θ k T K ( L ~ ) x = ∑ k = 0 K θ k ′ T k ( 2 λ m a x L − I N ) x = ∑ k = 0 K θ k ′ T k ( L − I N ) x ( λ m a x ≈ 2 ) = [ θ 0 ′ T 0 ( L − I N ) + θ 1 ′ T 1 ( L − I N ) ] x = θ 0 ′ x + θ 1 ′ ( L − I N ) x = θ 0 ′ x + θ 1 ′ ( I N − D − 1 2 A D − 1 2 − I N ) x ( L = I N − D − 1 2 A D − 1 2 ) = θ 0 ′ x − θ 1 ′ D − 1 2 A D − 1 2 x \begin{aligned} g_\theta * x & = \sum^{K}_{k=0} \theta_k T_K(\tilde L) x \\ & = \sum_{k=0}^K \theta_k^{'} T_k(\frac{2}{\lambda_{max}} L - I_N )x \\ & = \sum_{k=0}^K \theta_k^{'} T_k( L - I_N )x \quad\quad\quad\quad(λ_{max}≈2) \\ & = \left[ \theta_0^{'} T_0 (L-I_N) + \theta_1^{'} T_1 (L-I_N) \right] x \\ & = \theta_0^{'} x + \theta_1^{'} (L-I_N)x \\ & = \theta_0^{'} x + \theta_1^{'} (I_N - D^{-\frac{1}{2}} A D^{-\frac{1}{2}} - I_N)x \quad\quad\quad\quad (L=I_N - D^{-\frac{1}{2}} A D^{-\frac{1}{2}} )\\ & = \theta_0^{'} x - \theta_1^{'} D^{-\frac{1}{2}} A D^{-\frac{1}{2}} x \end{aligned} gθ∗x=k=0∑KθkTK(L~)x=k=0∑Kθk′Tk(λmax2L−IN)x=k=0∑Kθk′Tk(L−IN)x(λmax≈2)=[θ0′T0(L−IN)+θ1′T1(L−IN)]x=θ0′x+θ1′(L−IN)x=θ0′x+θ1′(IN−D−21AD−21−IN)x(L=IN−D−21AD−21)=θ0′x−θ1′D−21AD−21x
即
g
θ
′
∗
x
≈
θ
0
′
x
+
θ
1
′
(
L
−
I
N
)
x
=
θ
0
′
x
−
θ
1
′
D
−
1
/
2
A
D
−
1
/
2
x
g_{θ^{'}} * x ≈ θ_0^{'} x + θ_1^{'} (L − I_N ) x = θ_0^{'} x − θ_1^{'} D^{− 1/2} AD^{− 1 /2} x
gθ′∗x≈θ0′x+θ1′(L−IN)x=θ0′x−θ1′D−1/2AD−1/2x
有两个自由参数
θ
0
′
θ_0^{'}
θ0′和
θ
1
′
θ_1^{'}
θ1′。滤波器参数可以被整个图上共享。连续应用这种形式的滤波器,然后有效地卷积节点的kth-阶邻域,其中k是神经网络模型中连续滤波操作或卷积层的数目。
简化:1个参数的模型
实际上,进一步限制参数的数量以解决过拟合并最小化每层的操作数量(例如矩阵乘法)会是有益的。具体来说, 文中令 θ = θ 0 ′ = − θ 1 ′ θ=θ_0^{'}=-θ_1^{'} θ=θ0′=−θ1′(假设参数共享), 则有:
g
θ
∗
x
≈
θ
(
I
N
+
D
−
1
/
2
A
D
−
1
/
2
)
x
g_θ * x ≈ θ (I_N + D^{− 1 /2} AD^{− 1 /2} ) x
gθ∗x≈θ(IN+D−1/2AD−1/2)x
其中
- 而 I N + D − 1 / 2 A D − 1 / 2 I_N+D^{−1/2}AD^{−1/2} IN+D−1/2AD−1/2是有范围[0,2]的特征值。因此,如果在深度神经网络模型中使用该算子,则反复应用该算子会导致数值不稳定(发散)和梯度爆炸/消失。
为了解决该问题, 引入了一个renormalization trick(归一化技巧):
I
N
+
D
−
1
/
2
A
D
−
1
/
2
⟶
A
~
=
A
+
I
N
D
~
−
1
/
2
A
~
D
~
−
1
/
2
I_N+D^{−1/2}AD^{−1/2} \stackrel{\tilde A=A+I_N}{\longrightarrow} \tilde D^{−1/2} \tilde A \tilde D^{−1/2}
IN+D−1/2AD−1/2⟶A~=A+IND~−1/2A~D~−1/2
其中
- A ~ = A + I N , D ~ i i = ∑ j A ~ i j \tilde A=A+I_N,\tilde D_{ii}=∑_j \tilde A_{ij} A~=A+IN,D~ii=∑jA~ij,即图中加上自环
再加上一个激活函数,最后就可以得到公式(6)的快速卷积公式了:
H
(
l
+
1
)
=
f
(
H
l
,
A
)
=
σ
(
D
~
−
1
/
2
A
~
D
~
−
1
/
2
H
(
l
)
W
(
l
)
)
(
6
)
H ^{(l+1)} =f(H^l,A)=\sigma (\tilde D^{-1/2} \tilde A \tilde D^{ − 1/2} H^{(l)}W^{(l)} ) \qquad (6)
H(l+1)=f(Hl,A)=σ(D~−1/2A~D~−1/2H(l)W(l))(6)
- W W W就是参数 θ \theta θ参数矩阵
推广:特征映射公式
可以将这个定义推广到具有C个输入通道(即每个节点的C维特征向量)的信号 X ∈ R N × C X∈\mathbb{R}^{N×C} X∈RN×C和 F 个滤波器或特征映射如下:
Z
=
D
~
−
1
/
2
A
~
D
~
−
1
/
2
X
Θ
Z = \tilde D^{− 1 /2} \tilde A \tilde D^{− 1/ 2} XΘ
Z=D~−1/2A~D~−1/2XΘ
其中
- Θ ∈ R C × F Θ∈\mathbb{R}^{C×F} Θ∈RC×F 是一个滤波器参数矩阵
- Z ∈ R N × F Z∈\mathbb{R}^{N×F} Z∈RN×F 是卷积信号参数矩阵。
这个滤波操作复杂度是 O ( ∣ E ∣ F C ) O(|E|FC) O(∣E∣FC),因为 A ~ X \tilde AX A~X可以有效地实现为密集矩阵和稀疏矩阵的乘积。(在源代码中使用了稀疏矩阵和稠密矩阵乘法)
2 半监督节点分类的例子
接下来,考虑一个两层的半监督节点分类GCN模型,在对称邻接矩阵A上操作。
预处理操作
在预处理步骤中,首先计算
A
^
=
D
~
−
1
/
2
A
D
~
−
1
/
2
\hat A=\tilde D^{−1/2}A \tilde D^{−1/2}
A^=D~−1/2AD~−1/2
因此,前向计算变成一个简单的形式:
Z = f ( X , A ) = s o f t m a x ( A ^ R e L U ( A ^ X W ( 0 ) ) W ( 1 ) ) Z = f(X, A) = softmax(\hat A ReLU(\hat AXW^ {(0)}) W^{(1)}) Z=f(X,A)=softmax(A^ReLU(A^XW(0))W(1))
- W ( 0 ) ∈ R C × H W^{(0)}∈\mathbb{R}^{C×H} W(0)∈RC×H是输入层到隐藏层的权重矩阵,隐藏层有H个特征。
- W ( 1 ) ∈ R H × F W^{(1)}∈\mathbb{R}^{H×F} W(1)∈RH×F是隐藏层到输出层的权重矩阵。
- softmax定义为 s o f t m a x ( x i ) = 1 Z exp ( x i ) , Z = ∑ i exp ( x i ) softmax(x_i)=\frac{1}{Z}\exp(x_i),Z=\sum_i\exp(x_i) softmax(xi)=Z1exp(xi),Z=∑iexp(xi),softmax作用在每一行上
交叉熵误差
对于半监督多类别分类,评估所有标记标签的交叉熵误差:
L
=
−
∑
l
∈
y
L
∑
f
=
1
F
Y
l
f
l
n
Z
l
f
\mathcal L = -\sum_{l \in y_L}\sum^{F}_{f=1}{Y_{lf}lnZ_{lf}}
L=−l∈yL∑f=1∑FYlflnZlf
其中,
y
L
y_L
yL为带标签的节点集。
训练
神经网络的权重
W
(
0
)
,
W
(
1
)
W^{(0)},W^{(1)}
W(0),W(1)通过梯度下降来进行训练。
使用完整的数据集对每个训练迭代执行批量梯度下降( batch gradient descent)。只要数据集适合内存,这就是一个可行的选择。
邻接矩阵A使用稀疏表示法,内存需求是O(E),E为边数,即和边数呈线性关系。
通过Dropout引入训练过程中的随机性(srivastava等人,2014)。
将内存效率扩展与小批随机梯度下降(mini-batch stochastic
gradient descent) 留作以后的工作。
实现
在实践中,利用TensorFlow,使用稀疏-密集矩阵乘法在GPU上高效实现了下式:
Z
=
f
(
X
,
A
)
=
s
o
f
t
m
a
x
(
A
^
R
e
L
U
(
A
^
X
W
(
0
)
)
W
(
1
)
)
Z = f(X, A) = softmax(\hat A ReLU(\hat AXW^ {(0)}) W^{(1)})
Z=f(X,A)=softmax(A^ReLU(A^XW(0))W(1))
上式计算复杂度为
O
(
∣
E
∣
C
H
F
)
O(|E|CHF)
O(∣E∣CHF),即图的边数的呈线性关系。
3 实验
实验任务
- 半监督文本分类-引文网络
- 半监督实体分类-知识图谱中提取的二部图
- 多种图传播模型评估
- 运行时间分析
数据集
Citation networks
本文考虑三个引文网络数据集:Citeseer、Cora和PubMed(Sen等人,2008)。数据集包含每个文档的稀疏bag-of-words特征向量和文档之间的引用链接列表。本文将引用链接视为(无向)边,并构造一个二元对称邻接矩阵A。每个文档都有一个类标签。在训练时,每个类只使用20个标签。
NELL
NELL是从中引入的知识图中提取的数据集(Carlson,2010年)。知识图是一组与有向标记边(关系)相连的实体。实验中遵循Yang等人所述的预处理方案(2016年)。文中为每个实体对(E1,R,E2)分配单独的关系节点R1和R2作为(E1,R1)和(E2,R2)。其中,实体节点由稀疏特征向量描述。通过为每个关系节点分配一个唯一的one-hot表示来扩展NELL中的特征数量,从而有效地为每个节点生成61278维稀疏特征向量。这里的半监督任务只考虑训练集中每个类一个标记示例的极端情况。如果节点i和j之间存在一条或多条边,作者通过设置
A
i
j
=
1
A_{ij}=1
Aij=1,从图中构造一个二元对称邻接矩阵(binary, symmetric adjacency matrix)。
Random graphs
文中模拟各种大小的随机图数据集进行实验,测量每个epoch的训练时间。对于一个具有n个节点的数据集,创建一个随机图,随机均匀地分配2n条边。将单位矩阵
I
N
I_N
IN作为输入特征矩阵x,从而隐式地采用一种无特征的方法,其中模型只知道每个节点的标识,由唯一的one-hot向量指定。文中为每个节点添加dummy标签
y
i
=
1
y_i=1
yi=1。
参数设置
训练两层GCN*,并评估1000个标记示例的测试集的预测精度。补充实验中提供了使用最多10层的更深层次模型的额外实验。
相关参数
- 最大200 epoch
- Adam算法
- 学习率为0.01
- 停止条件:验证集loss连续十个迭代期没有下降
- 权重初始化方法:Xavier
-(按行)对输入特征向量归一化 - 隐藏层32个单元
- 省略dropout和L2正则化
Baselines
- label propagation(LP)
- semi-supervised embedding(SemiEmb)
- manifold regularization(ManiReg)
- DeepWalk
- iterative classification algorithm(ICA)
- Planetoid
实验结果
半监督节点分类
结果汇总在表2中。表中数字以百分比表示分类准确度。对于ICA,计算了100次随机节点排序运行的平均精度。
模型评估
表中数字表示100次随机权重矩阵初始化重复运行的平均分类精度。在每层有多个变量的情况下,文中对第一层的所有权重矩阵施加L2正则化。
训练时间
文中使用了100个epochs在模拟的随机图上每一个epoch的平均训练时间(前向传播、交叉熵计算、后向传播)的结果,以wall-clock时间测量。
Wall-clock time:就是响应时间,指计算机完成某一个任务所花的全部时间,也叫墙上时间(wall clock)或流逝时间(elapsed time)。
4 总结
本文提出了一种新的图结构数据半监督分类方法,所提出的GCN模型使用了一种基于图上谱卷积的一阶近似的高效层传播规则。对多个网络数据集的实验表明,所提出的GCN模型能够以一种对半监督分类有用的方式对图结构和节点特征进行编码。在这种情况下,文中的模型在很大程度上优于最近提出的几种方法,同时具有不错的计算效率。
本文提出了一种图卷积神经网络,该网络可以被有效地用于处理图结构的数据。图卷积神经网络具有几个特点:
- 局部特性:图卷积神经网络关注的是图中以某节点为中心,K阶邻居之内的信息,这一点与GNN有本质的区别;
- 一阶特性:经过多种近似之后,GCN变成了一个一阶模型。也就是说,单层的GCN可以被用于处理图中一阶邻居上的信息;若要处理K阶邻居,可以采用多层GCN来实现;
- 参数共享:对于每个节点,其上的滤波器参数 W 是共享的,这也是其被称作图卷积网络的原因之一。
GCN是高阶模型的简化的一阶模型
高阶模型
g
θ
∗
x
=
∑
k
=
0
K
θ
k
T
K
(
L
~
)
x
(
5
)
g_{\theta} * x = \sum^{K}_{k=0} \theta_kT_K(\tilde L)x \qquad (5)
gθ∗x=k=0∑KθkTK(L~)x(5)
一阶模型
g
θ
′
∗
x
≈
θ
0
′
x
+
θ
1
′
(
L
−
I
N
)
x
=
θ
0
′
x
−
θ
1
′
D
−
1
/
2
A
D
−
1
/
2
x
(
6
)
g_{θ^{'}} * x ≈ θ_0^{'} x + θ_1^{'} (L − I_N ) x = θ_0^{'} x − θ_1^{'} D^{− 1/2} AD^{− 1 /2} x \qquad (6)
gθ′∗x≈θ0′x+θ1′(L−IN)x=θ0′x−θ1′D−1/2AD−1/2x(6)
Z = D ~ − 1 / 2 A ~ D ~ − 1 / 2 X Θ ( 8 ) Z = \tilde D^{− 1 /2} \tilde A \tilde D^{− 1/ 2} XΘ \qquad (8) Z=D~−1/2A~D~−1/2XΘ(8)
GCN的局限性
内存要求较大
在当前setup中,采用批量梯度下降(full-batch gradient descent),内存需求在数据集的大小上呈线性增长。文中已经证明,对于不适合GPU内存的大型图形,采用CPU训练仍然是一个可行的选择。小批量随机梯度下降(Mini-batch stochastic gradient descent)可以缓解这一问题。然而,生成Mini-batch的过程应该考虑到GCN模型中的层数,因为具有k层的GCN的k阶邻居必须存储在内存中,以便进行精确的过程。对于非常大且紧密相连的图数据集,可能需要进一步的近似。
不支持边的特征
文中的框架目前不支持边的特征(edge features)(即有向还是无向),只限于无向图(加权或不加权)。然而,NELL上的结果表明,通过将原始有向图表示为无向二部图,以及表示原始图中边缘的附加节点,可以处理有向边和边缘特征。
硬性假定
文中直接认为$\tilde A=A+I_N $。但是,对于某些数据集,在A的定义中引入一个权衡参数λ可能是有益的:
A ~ = A + λ I N \tilde A=A+\lambda I_N A~=A+λIN
5 补充
和Weisfeiler-Lehman (WL-1)算法的关系
随机权重的GCN模型
通过与Weisfeiler-Lehman算法的类比,可以发现,即使是一个未经训练的随机权重GCN模型,也可以作为一个强大的特征提取器来提取图中的节点。以3层GCN模型为例:
Z = t a n h ( A ^ t a n h ( A ^ t a n h ( A ^ X W ( 0 ) ) W ( 1 ) ) W ( 2 ) ) ( 13 ) Z = tanh(\hat A tanh(\hat A tanh(\hat AXW^ {(0)}) W^{(1)})W^{(2)}) \qquad (13) Z=tanh(A^tanh(A^tanh(A^XW(0))W(1))W(2))(13)
- W ( l ) W^{(l)} W(l)是用Glorot & Bengio(2010)随机初始化的第 l l l层的参数矩阵
文中将该模型应用于Zachary的空手道俱乐部网络(Zachary, 1977)。此图包含34个节点,由154条(无向和未加权的)边连接。每个节点都由四个类中的一个标记,通过基于模块的聚类得到(Brandes et al., 2008)。如图3a所示。
- 左图:Zachary的空手道俱乐部网络图,每个颜色表示一个聚类
- 右图:由公式(13)构成的3层GCN得到的Embeddings,即一个未训练的GCN模型得到的节点embedding输出,与DeepWalk的embeddings进行比较,DeepWalk使用了代价更高的无监督训练过程。
实验设置
- 此实验中采用的是使用单位矩阵 I N I_N IN代替特征矩阵 X X X
- 隐含层是4维(最初是2,当发现维数为4时,tanh(·)单元的饱和频率较低),最后输出是2维的,因此便于在图上显示
Semi-supervised Node Embeddings
实验设置
- 在公式(13)基础上添加一个softmax层
- 每个类只使用一个带标记的示例进行训练(即总共有4个带标记的节点)
- 使用Adam对300个训练迭代进行训练
- 交叉熵损失的学习率为0.01
图4显示了节点嵌入在许多训练迭代中的演化。该模型成功地实现了基于最小监督和图结构的社区线性分离。整个训练过程的视频可以在作者的网站上找到:http://tkipf.github.io/graph-convolutional-networks/
使用残差连接使模型变深
文中还考虑了模型深度,也就是卷积层层数对分类性能的影响。实验中对Cora, Citeseer和Pubmed数据集的所有的标签使用吴冲交叉验证。除了公式(6)的标准GCN模型以外,文中还进行了一个模型的变种的实验:残差连接。隐含层之间使用残差连接,可以使模型能够传递来自前一层输入的信息,从而促进更深层次模型的训练。
H ( l + 1 ) = σ ( D ~ − 1 / 2 A ~ D ~ − 1 / 2 H ( l ) W ( l ) ) + H ( l ) ( 8 ) H ^{(l+1)} =\sigma (\tilde D^{-1/2} \tilde A \tilde D^{ − 1/2} H^{(l)}W^{(l)} ) + H^{(l)} \qquad(8) H(l+1)=σ(D~−1/2A~D~−1/2H(l)W(l))+H(l)(8)
实验设置
- 训练400个epochs
- 使用Adam优化器
- 学习率0.001
- 第一层和最后一层dropout率为0.5
- 第一层,L2正则化, 5 ⋅ 1 0 − 4 5 \cdot 10^{-4} 5⋅10−4
- 每个隐含层units数:16
对于上述数据集,仅使用2层或3层模型可获得最佳结果。实验可以观察到,对于深度超过7层的模型,不使用残差连接的训练会变得非常困难。两个原因:
- 每个节点的有效的context size随着其K阶邻域的大小的增加而增加
- 过度拟合可能成为一个问题,因为参数的数量随着模型深度的增加而增加。
多图问题
此文的github中还提到此框架还支持使用每个邻接矩阵对多个图(大小可能不同)进行批量分类。将各自的特征矩阵拼接起来,构建一个稀疏的块对角矩阵,其中每个块对应于一个图的邻接矩阵。对于pooling操作,可以指定一个简单的pooling矩阵,从各自的图中聚合特征,如下图所示:
有错误的地方还望不吝指出,欢迎进群交流GNNs&GCNs(入群备注信息!!!,格式:姓名 -(学校或其他机构信息)- 研究方向)。
参考
[1] Thomas N. Kipf, Max Welling. Semi-Supervised Classification with Graph Convolutional Networks. ICLR 2017.
[2] 官方博客:Graph Convolutional Networks