目录
1. 前言
这篇发表在ICLR上的论文很久就拜读了,论文作者Kipf和Welling都是大神级的人物,前者目前在谷歌大脑,后者是微软研究院的杰出科学家。
这篇文章在Related Work中提到,是基于第一代GCN(Spectral networks and locally connected networks on graphs,2014)和第二代GCN(Convolutional neural networks on graphs with fast localized spectral filtering,2016)。但进行了一系列的改进。
论文通过不断对谱卷积核进行近似来简化计算,使得模型复杂度与图的边数量呈线性关系,同时学习编码局部图结构和节点特征的隐藏层表示。在基于图的半监督分类学习中取得了SOTA结果。
2. 提出GCN
2.1 先前方法的局限性
先前的基于图的半监督学习方法,其标签信息通过基于图的显式正则化在图上平滑,如通过在损失函数中使用图拉普拉斯正则化项:
L
=
L
0
+
λ
L
r
e
g
,其中
L
r
e
g
=
∑
i
,
j
A
i
,
j
∥
f
(
X
i
)
−
f
(
X
j
)
∥
2
=
f
(
X
)
T
Δ
f
(
X
)
.
\begin{align} \mathcal{L}=\mathcal{L}_0+\lambda\mathcal{L}_{reg},其中\mathcal{L}_{reg}=\sum_{ \begin{subarray}{l}i,j\end{subarray}} A_{i,j}\Vert f(X_i)-f(X_j) \Vert^2=f(X)^T\Delta f(X). \end{align}
L=L0+λLreg,其中Lreg=i,j∑Ai,j∥f(Xi)−f(Xj)∥2=f(X)TΔf(X). 这里,
- L 0 \mathcal{L}_0 L0 表示图中有标签数据的有监督损失
- f ( ⋅ ) f(\cdot) f(⋅) 是类似于神经网络的可微函数
- λ \lambda λ是正则项的超参数
- X X X 是节点特征向量 X i X_i Xi 组成的矩阵。
- Δ = D − A \Delta=D-A Δ=D−A 表示无向图 G = ( V , E ) \mathcal{G}=(\mathcal{V},\mathcal{E}) G=(V,E) 未标准化的图拉普拉斯矩阵, G \mathcal{G} G 是由 N N N 个顶点 v i ∈ V v_i\in\mathcal{V} vi∈V 及相应的边 ( v i , v j ) ∈ E (v_i,v_j)\in\mathcal{E} (vi,vj)∈E 组成。
- G \mathcal{G} G 的邻接矩阵为 A ∈ R N × N A\in\mathbb{R}^{N\times N} A∈RN×N
- G \mathcal{G} G 的度矩阵为 D i i = ∑ j A i j D_{ii}=\textstyle\sum_{j}A_{ij} Dii=∑jAij,即每一行或每一列的和组成的对角矩阵。
式(1)依赖于 图中连接的节点可能共享相同标签 的假设。 但这种假设可能会限制建模能力,因为图的edges 不一定编码节点相似性,可能包含其他信息。
2.2 作者提出的方法
与上述方法不同的事,作者提出直接使用神经网络模型 f ( X , A ) f(X,A) f(X,A) 对图结构进行编码,并针对所有带有标签的节点在监督目标 L 0 \mathcal{L}_0 L0 上进行训练,而不包含正则项 L r e g \mathcal{L}_{reg} Lreg。
作者通过谱图卷积一步步推导出GCN的表达式。(本节的前置知识请参阅博文:《关于谱图理论-图傅里叶变换-谱卷积等谱图领域知识的理解》1)
2.2.1 引入谱卷积
图上的谱卷积定义为谱域中图顶点
x
x
x 与 带有参数
θ
∈
R
N
\theta\in\mathbb{R}^N
θ∈RN 的卷积核
g
θ
g_\theta
gθ 的乘积:
g
θ
⋆
x
=
U
g
θ
U
T
x
\begin{align} g_\theta\star x = Ug_\theta U^Tx \end{align}
gθ⋆x=UgθUTx 其中 ,
- x ∈ R N x\in\mathbb{R}^N x∈RN 是输入(每个顶点都是一个常数,一共 N N N 个顶点)
- U U U 是标准化的图拉普拉斯 L = I N − D − 1 2 A D − 1 2 = U Λ U T L=I_N-D^{-\frac 1 2}AD^{-\frac 1 2}=U\Lambda U^T L=IN−D−21AD−21=UΛUT 的特征向量组成的矩阵,其中, Λ \Lambda Λ 是特征向量的对角化矩阵, U T x U^Tx UTx 是 x x x 的图傅立叶变换, I N I_N IN 是单位矩阵。
- g θ = d i a g ( θ ) g_\theta=diag(\theta) gθ=diag(θ) 是卷积核( θ ∈ R N \theta\in\mathbb{R}^N θ∈RN) ,且为 L L L 特征值的函数,所以可以写为 g θ ( Λ ) g_\theta(\Lambda) gθ(Λ)。
(2)式的计算开销很大,因为与 U U U 相乘的复杂度为 O ( N 2 ) \mathcal{O}(N^2) O(N2),并且,对于大型图来说,计算 L L L 的特征分解非常昂贵。
通过Chebyshev多项式改进卷积核
为了缓解计算开销大的问题,作者借鉴了 Hammond et al. (2011)2的论文,他们提出按照Chebyshev多项式
T
k
(
x
)
T_k(x)
Tk(x) 到第
K
t
h
K^{th}
Kth 阶的截断展开可以很好地近似
g
θ
(
Λ
)
g_\theta(\Lambda)
gθ(Λ):
g
θ
′
(
Λ
)
≈
∑
k
=
0
K
θ
k
′
T
k
(
Λ
~
)
\begin{align} g_{\theta^{'}}(\Lambda)\approx\sum_{k=0}^{K} \theta_{k}^{'}T_k(\tilde{\Lambda}) \end{align}
gθ′(Λ)≈k=0∑Kθk′Tk(Λ~) 其中,重缩放的
Λ
~
=
2
λ
m
a
x
Λ
−
I
N
\tilde{\Lambda}={\frac 2 {\lambda_{max}}}\Lambda-I_N
Λ~=λmax2Λ−IN;
λ
m
a
x
\lambda_{max}
λmax 是拉普拉斯矩阵
L
L
L 的最大特征值;
θ
′
∈
R
K
\theta^{'}\in\mathbb{R}^K
θ′∈RK 是Chebyshev系数,是可训练的参数;
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 1 ( x ) = 1 T_1(x)=1 T1(x)=1, T 2 ( x ) = x T_2(x)=x T2(x)=x。
对卷积操作进行简化
∵ \because\,\,\, ∵ g θ ′ ( Λ ) g_{\theta^{'}}(\Lambda) gθ′(Λ) 是 Λ \Lambda Λ 的 k k k 阶多项式,我们知道图拉普拉斯矩阵是满秩实对称矩阵,它可以进行对角化分解 L = U Λ U T L=U\Lambda U^T L=UΛUT 1
∴ \therefore\,\,\, ∴ g θ ′ ( L ) g_{\theta^{'}}(L) gθ′(L) 是 U Λ U T U\Lambda U^T UΛUT 的 k k k 阶多项式。
又 ∵ \because\,\, ∵ ( U Λ U T ) k (U\Lambda U^T)^k (UΛUT)k= U Λ k U T U\Lambda^k U^T UΛkUT
∴ \therefore\,\,\, ∴ g θ ′ ( L ) = U g θ ′ ( Λ ) U T g_{\theta^{'}}(L)=Ug_{\theta^{'}}(\Lambda)U^T gθ′(L)=Ugθ′(Λ)UT
∴
\therefore\,\,\,
∴
g
θ
′
⋆
x
=
U
g
θ
U
T
x
≈
g
θ
′
(
L
)
x
=
∑
k
=
0
K
θ
k
′
T
k
(
L
~
)
x
\begin{align} g_{\theta^{'}}\star x = Ug_\theta U^Tx\approx g_{\theta^{'}}(L)x=\sum_{k=0}^{K} \theta_{k}^{'}T_k(\tilde{L})x \end{align}
gθ′⋆x=UgθUTx≈gθ′(L)x=k=0∑Kθk′Tk(L~)x 重缩放的拉普拉斯矩阵
L
~
=
2
λ
m
a
x
L
−
I
N
\tilde{L}={\frac 2 {\lambda_{max}}}L-I_N
L~=λmax2L−IN。由于(4)式只与拉普拉斯矩阵有关,所以计算复杂度为
O
(
∣
E
∣
)
\mathcal{O}(|\mathcal{E}|)
O(∣E∣),即与边的数量呈线性关系。
使用一阶Chebyshev多项式的卷积核
图卷积神经网络可以通过堆叠多个(4)式形式的卷积层来构建,并在每个层的后面增加一个非线性变换。如果将每一层卷积核的Chebyshev多项式限制为一阶,即:
g
θ
′
⋆
x
≈
∑
k
=
0
1
θ
k
′
T
k
(
L
~
)
x
=
(
θ
0
′
+
θ
1
′
L
~
)
x
\begin{align} g_{\theta^{'}}\star x \approx \sum_{k=0}^{1} \theta_{k}^{'}T_k(\tilde{L})x=(\theta_0^{'}+\theta_1^{'}\tilde{L})x \end{align}
gθ′⋆x≈k=0∑1θk′Tk(L~)x=(θ0′+θ1′L~)x 此时卷积核是是
L
L
L 的线性函数。
实验表明,用这种方式,仍然可以通过堆叠多个这样的层来增强卷积核函数表达能力。
简化特征向量最大值
通过上文可以看出,重缩放的图拉普拉斯为 L ~ = 2 λ m a x L − I N \tilde{L}={\frac 2 {\lambda_{max}}}L-I_N L~=λmax2L−IN,其依旧需要用到特征值,也就是需要进行特征分解,这就导致了高的计算开销,为了降低计算复杂度,作者提出 λ m a x ≈ 2 \lambda_{max}\approx2 λmax≈2 来避免矩阵分解,这种做法是有一定的理论依据的, 通过查证,发现经典书籍《Spectral Graph Theory》中有相关的论述及证明,证明在《Spectral Graph Theory (revised and improved)》的第一章:CHAPTER 1 Eigenvalues and the Laplacian of a graph。我也在另一篇博文《kipf-GCN中关于标准化的拉普拉斯矩阵性质的初探》中进行了验证,其 λ m a x ≤ 2 \lambda_{max}\le2 λmax≤2 ,所以作者使用出 λ m a x ≈ 2 \lambda_{max}\approx2 λmax≈2 简化没有问题。
所以(5)式可以化简为:
g
θ
′
⋆
x
≈
(
θ
0
′
+
θ
1
′
L
~
)
x
=
θ
0
′
x
+
θ
1
′
(
L
−
I
N
)
x
=
θ
0
′
x
−
θ
1
′
D
−
1
2
A
D
−
1
2
x
\begin{align} g_{\theta^{'}}\star x \approx (\theta_0^{'}+\theta_1^{'}\tilde{L})x=\theta_0^{'}x+\theta_1^{'}(L-I_N)x=\theta_0^{'}x-\theta_1^{'}D^{-\frac1 2}AD^{-\frac1 2}x \end{align}
gθ′⋆x≈(θ0′+θ1′L~)x=θ0′x+θ1′(L−IN)x=θ0′x−θ1′D−21AD−21x 可见,卷积核已经完全不需要矩阵分解操作。卷积核参数可以在整个图上共享,连续应用这种形式的卷积核可以有效地卷积节点的
k
k
k 阶邻域,其中
k
k
k 是神经网络模型中连续卷积核操作或卷积层的数量。(这个结论还需要好好理解。)
进一步限制卷积核参数量
在实践中,进一步限制参数的数量以解决过度拟合并最小化每层的运算数量(例如矩阵乘法)可能是有益的。令
θ
=
θ
′
0
=
−
θ
′
1
\theta=\theta{'}_0=-\theta{'}_1
θ=θ′0=−θ′1,(6)式可以转化为:
g
θ
′
⋆
x
≈
θ
0
′
x
−
θ
1
′
D
−
1
2
A
D
−
1
2
x
=
θ
(
I
N
+
D
−
1
2
A
D
−
1
2
)
x
\begin{align} g_{\theta^{'}}\star x \approx\theta_0^{'}x-\theta_1^{'}D^{-\frac1 2}AD^{-\frac1 2}x=\theta(I_N+D^{-\frac1 2}AD^{-\frac1 2})x \end{align}
gθ′⋆x≈θ0′x−θ1′D−21AD−21x=θ(IN+D−21AD−21)x
对邻接矩阵和度矩阵进行重新规范化
作者给出的理由是,(7)式中的
I
N
+
D
−
1
2
A
D
−
1
2
I_N+D^{-\frac1 2}AD^{-\frac1 2}
IN+D−21AD−21 的特征值和特征向量的范围是
[
0
,
2
]
[0,2]
[0,2],当在深度神经网络模型中使用时,重复应用此运算符可能会导致数值不稳定性和爆炸/消失梯度。为了缓解这个问题,作者提出了“renormalization trick”,也就是对邻接矩阵和度矩阵进行重新规范化:
I
N
+
D
−
1
2
A
D
−
1
2
→
D
~
−
1
2
A
~
D
~
−
1
2
,其中
A
~
=
A
+
I
N
,
D
~
i
i
=
∑
j
A
~
i
j
\begin{align} I_N+D^{-\frac1 2}AD^{-\frac1 2}\rightarrow \tilde{D}^{-\frac1 2}\tilde{A}\tilde{D}^{-\frac1 2},其中 \tilde{A}=A+I_N\,, \tilde{D}_{ii}=\sum_{j}\tilde{A}_{ij} \end{align}
IN+D−21AD−21→D~−21A~D~−21,其中A~=A+IN,D~ii=j∑A~ij (注:为什么不除以2进行缩放呢?)
卷积操作的向量化形式
由于图中的每个顶点都可以视为一个embedding,因此输入
x
∈
R
N
x\in\mathbb{R}^N
x∈RN 的向量化形式为
X
∈
R
N
×
C
X\in\mathbb{R}^{N\times C}
X∈RN×C,即每个顶点是
C
C
C 维向量。如果有
F
F
F 个卷积核或feature maps,则该层神经元的定义为:
Z
=
D
~
−
1
2
A
~
D
~
−
1
2
X
Θ
\begin{align} Z= \tilde{D}^{-\frac1 2}\tilde{A}\tilde{D}^{-\frac1 2}X\mathbb{\Theta} \end{align}
Z=D~−21A~D~−21XΘ 其中,
Θ
∈
R
C
×
F
\mathcal{\Theta}\in\mathbb{R}^{C\times F}
Θ∈RC×F 是卷积核参数矩阵。经过计算可知卷积结果
Z
∈
R
N
×
F
Z\in\mathbb{R}^{N\times F}
Z∈RN×F。
这个卷积操作的复杂度为
O
(
∣
E
∣
F
C
)
\mathcal{O}(|\mathcal{E}|FC)
O(∣E∣FC)。
GCN的公式
最终,逐层传播的多层图卷积网络为:
H
l
+
1
=
σ
(
D
~
−
1
2
A
~
D
~
−
1
2
H
(
l
)
W
(
l
)
)
\begin{align} H^{l+1}=\sigma\bigg(\tilde{D}^{-\frac1 2}\tilde{A}\tilde{D}^{-\frac1 2}H^{(l)}W^{(l)}\bigg) \end{align}
Hl+1=σ(D~−21A~D~−21H(l)W(l)) 其中
W
(
l
)
W^{(l)}
W(l) 是第
l
l
l 层的权重;
σ
(
⋅
)
\sigma(\cdot)
σ(⋅) 是激活函数,如ReLU;
H
(
l
)
∈
R
N
×
D
H^{(l)}\in\mathbb{R}^{N\times D}
H(l)∈RN×D 是激活后的第
l
l
l 层神经元,
H
(
0
)
=
X
H^{(0)}=X
H(0)=X。
GCN用于半监督图分类
作者提出了简单、灵活且高效的图上操作算法GCN,可以在数据
X
X
X 和 邻接矩阵
A
A
A 上调整GCN模型来放宽基于图的半监督学习中通常做的某些假设限制。
用于半监督学习的多层GCN的整体模型如图1所示。
图1:用于半监督学习的GCN示意图。(a) 输入节点的维度为
C
C
C,输出节点的维度为
F
F
F,图结构在训练和测试中共享(也就是transductive,这在论文相关文献的4.2节及GraphSage中均有提及!),
Y
i
Y_i
Yi是带标签数据,从数据集介绍可以看到,很多数据集90%的数据都是无标签数据。(b) 在使用5%有标签的Cora数据集上训练的两层GCN上隐藏层激活的t-SNE可视化,颜色表示文档类别。
在无向图上进行半监督节点分类
使用两层GCN进行节点分类。首先,可以在预处理过程中求出
A
^
=
D
~
−
1
2
A
~
D
~
−
1
2
\hat{A}=\tilde{D}^{-\frac1 2}\tilde{A}\tilde{D}^{-\frac1 2}
A^=D~−21A~D~−21 ,则前向传播模型的形式为:
Z
=
f
(
X
,
A
)
=
s
o
f
t
m
a
x
(
A
^
R
e
L
U
(
A
^
X
W
(
0
)
)
W
(
1
)
)
\begin{align} Z=f(X,A)=softmax\bigg(\hat{A}ReLU\Big(\hat{A}XW^{(0)}\Big)W^{(1)}\bigg) \end{align}
Z=f(X,A)=softmax(A^ReLU(A^XW(0))W(1)) 其中,
A
∈
R
N
×
N
A\in\mathbb{R}^{N\times N}
A∈RN×N,
X
∈
R
N
×
C
X\in\mathbb{R}^{N\times C}
X∈RN×C,
W
(
0
)
∈
R
C
×
H
W^{(0)}\in\mathbb{R}^{C\times H}
W(0)∈RC×H,
W
(
1
)
∈
R
H
×
F
W^{(1)}\in\mathbb{R}^{H\times F}
W(1)∈RH×F,
H
H
H 是输入到隐层的feature maps个数,
F
F
F 是输出层的每个结点的维度。所以
Z
∈
R
N
×
F
Z\in\mathbb{R}^{N\times F}
Z∈RN×F 代表了
N
N
N 个节点在
F
F
F 个类别上的概率,比如Cora有2708个节点,7个类别,则
N
=
2708
,
F
=
7
N=2708,\,F=7
N=2708,F=7。
最终的损失函数为多分类交叉熵损失函数:
L
=
−
∑
l
∈
Y
L
∑
f
=
1
F
Y
l
f
l
n
Z
l
f
\begin{align} \mathcal{L}=-\sum_{l\in\mathcal{Y_L}}\sum_{f=1}^{F}Y_{lf}lnZ_{lf} \end{align}
L=−l∈YL∑f=1∑FYlflnZlf 其中,
Y
L
\mathcal{Y_L}
YL 是有标签的节点索引。
GCN贡献
(1) 提出了逐层传播的图学习算法,即GCN;
(2) 展示了GCN如何用于图中节点的快速且可扩展的半监督分类;
(3) 在数据集上的分类精度和效率达到了SOTA。
GCN局限性
内存要求: GCN对内存需求随着数据集的大小而线性增长。
不支持有向图和带有特征的边: GCN目前不自然地支持边特征,并且仅限于无向图(加权或未加权)。
假设限制: GCN隐式地假设局部性(对于具有K层的GCN,依赖于K阶邻域)以及自连接与边缘对相邻节点的同等重要性。
此外,在GraphSage中,也表明基于transductive的GCN难以泛华到其他的图,因为GCN要求在训练期间图中的所有节点都存在,不会自然地泛化到看不见的节点。
附录(作者简介)
Kipf和Welling都是大神级的人物。
Kipf的简历显示,他分别以3.93/4.0、3.97/4.0的高分绩点从埃尔朗根-纽伦堡大学获得物理学本科和硕士学位,目前为谷歌大脑的高级研究科学家。
Max Welling教授是阿姆斯特丹大学机器学习的研究主席,也是微软研究院的杰出科学家。CIFAR和ELLIS的研究员及创始董事会成员。他之前担任过高通科技公司副总裁,加州大学欧文分校教授。
David K. Hammond, Pierre Vandergheynst, and Remi Gribonval. Wavelets on graphs via spectral graph theory. Applied and Computational Harmonic Analysis, 30(2):129–150, 2011. ↩︎