前言
随着2017年GCN概念的提出,近年来越来越多的GCN方法被提出。由于GCN本身的提出来源于深度学习中CNN和RNN的概念,因此可能会继承其中一些不必要的复杂度和冗余计算,本文提出了一种简化的图卷积方法(Simplifying Graph Convolutional)。通过消除GCN层之间的非线性计算,通过将得到的函数折叠成一个线性变换来减少GCN带来的额外复杂度,并且从图卷积的根源–频谱分析中得到SGC的理论支撑,证明了SGC相当于一个固定的低通道滤波器和一个线性分类器。试验结果表明,这些简化不会多下游应用的准确性产生负面影响。此外由于模型的简化SGC可以被推广到更大的数据集,并且比FastGCN产生两个数量级的加速。
FastGCN可以参考博客:
https://blog.csdn.net/qq_44015059/article/details/108650331
论文链接:https://arxiv.org/abs/1902.07153v1
github:https://github.com/Tiiiger/SGC
转载于https://blog.csdn.net/yyl424525/article/details/102576875
1.SGC背景
传统的机器学习方法的复杂度变化趋势都是从简单到复杂。例如从线性Perceptron到非线性MLP,从简单的线性图片filters到CNN都是这个趋势。GCN也是源于传统的机器学习方法,继承了这个复杂度的变化。此文的目的就是要把非线性的GCN转化成一个简单的线性模型SGC,通过反复消除GCN层之间的非线性并将得到的函数折叠成一个线性变换来减少GCNs的额外复杂度。
SGC中的特征提取等价在每个特征的维度上应用了单个固定的filter。
实验表明
- 这种简化了的线性SGC模型在很多任务上比GCN和一些其他GNN网络更高效,并且参数更少
- 并且在效率方面,在Reddit数据集上比FastGCN快两个数量级
- SGC在文本分类、用户地理定位、关系提取和zero-shot图像分类任务方面,即使不能超越基于GCN的方法,但至少也是竞争对手
GCN vs MLP
GCNs和MLPs相似,都是通过多层网络学习一个节点的特征向量 X i \mathbf{X}_{i} Xi,然后再把这个学到的特征向量送入的一个线性分类器中进行分类任务。一个 k k k层GCN与 k k k层MLP在应用于图中每个节点的特征向量 X i \mathbf{X}_{i} Xi是相同的,不同之处在于每个节点的隐藏表示在每一层的输入时是取的它的邻居的平均。
每个图中的卷积层和节点表示都是使用三个策略来更新
- 特征传播
- 线性转换
- 逐点非线性激活
Feature propagation 特征传播
GCN的特征传播是区别MLP的,因为每一层的输入都是节点局部邻居的平均值:
用一个简单的矩阵运算来表示公式(2)的更新:
S
=
D
~
−
1
2
A
~
D
~
−
1
2
(3)
S = \widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}} \tag{3}
S=D
−21A
D
−21(3)
S
\mathbf{S}
S表示添加自循环“normalized”的邻接矩阵(实际上并没有归一化)
A
~
=
A
+
I
\tilde{\mathbf{A}}=\mathbf{A}+\mathbf{I}
A~=A+I
D
\mathbf{D}
D是
A
\mathbf{A}
A的度矩阵
用公式(2)对所有节点进行同时更新,得到了一个简单的稀疏矩阵乘法:
这一步平滑了沿着图的边的局部隐藏表示,并最终支持在局部连接的节点之间进行类似的预测。
Feature transformation and nonlinear transition
在局部平滑之后,一个GCN层就等于一个标准的MLP。每一个层对应一个可学习的权重矩阵
Θ
(
k
)
\Theta^{(k)}
Θ(k),所以平滑处理了的隐藏特征表示
H
‾
(
k
)
\overline{\mathbf{H}}^{(k)}
H(k)是线性转换的(后面乘一个参数矩阵是线性的)。最后在逐节点应用一个非线性激活函数,例如ReLU就可以得到输出的特征表示
H
(
k
)
\mathbf{H}^{(k)}
H(k)
H
(
k
)
<
−
R
e
L
U
(
H
‾
(
k
)
Θ
(
k
)
)
(5)
H^{(k)}<-ReLU(\overline{H}^{(k)}\Theta^{(k)}) \tag{5}
H(k)<−ReLU(H(k)Θ(k))(5)
分类器
对于节点分类任务,最后一层和MLP相似,都是使用一个softmax分类器预测节点的标签,一个
K
K
K层的GCN的所有节点的类别预测可以写作:
Y
^
G
C
N
=
s
o
f
t
m
a
x
(
S
H
(
K
−
1
)
Θ
(
K
)
)
(6)
\hat{Y}_{GCN}=softmax(SH^{(K-1)}\Theta^{(K)}) \tag{6}
Y^GCN=softmax(SH(K−1)Θ(K))(6)
- Y ^ ∈ R n × C \hat{Y} \in \mathbb{R}^{n \times C} Y^∈Rn×C表示所有节点的类别的预测
- y ^ i c \hat{y}_{ic} y^ic表示节点 i i i预测为 c c c
- s o f t m a x ( x ) = e x p ( x ) / ∑ c = 1 C e x p ( x c ) softmax(x)=exp(x)/\sum_{c=1}^Cexp(x_c) softmax(x)=exp(x)/∑c=1Cexp(xc)是一个归一化操作
2. SGC
在传统的MLP中,层数变深加强了网络的表达能力,因为它允许创建特征的层次结构,例如,第二层的特征构建在第一层特征的基础上。在GCNs中,每一层都有一个重要的函数:在每一层中,隐藏的表示在1跳距离的邻居之间求平均值。这意味着在k kk层之后,一个节点从图中所有k kk跳的节点处获得特征信息。这种效果类似于卷积神经网络,深度增加了内部特征的感受野。虽然卷积网络可以在层数加深时提升性能(Deep networks with stochastic depth, 2016),但通常MLP的深度只限于为3至4层。
线性化
假设GCN层之间的非线性不是最关键的,最关键的是局部邻居的平均聚合操作。因此,考虑删除每层之间的非线性转换函数(如ReLU),只保留最终的softmax(以获得概率输出)。得到的模型是线性的
Y
^
=
s
o
f
t
m
a
x
(
S
.
.
.
S
S
X
Θ
(
1
)
Θ
(
2
)
Θ
(
K
)
)
(7)
\hat{Y}=softmax(\mathbf{S...SSX\Theta^{(1)}}\Theta^{(2)}\Theta^{(K)}) \tag{7}
Y^=softmax(S...SSXΘ(1)Θ(2)Θ(K))(7)
简化如下
Y
^
S
G
C
=
s
o
f
t
m
a
x
(
S
K
)
X
Θ
(8)
\hat{Y}_{SGC}=softmax(\mathbf{S}^K)X\Theta \tag{8}
Y^SGC=softmax(SK)XΘ(8)
- S K = S . . . S S \mathbf{S^K=S...SS} SK=S...SS
- Θ = Θ ( 1 ) Θ ( 2 ) . . . Θ ( K ) \mathbf{\Theta = \Theta^{(1)}\Theta^{(2)}...\Theta^{(K)}} Θ=Θ(1)Θ(2)...Θ(K)
逻辑回归
公式(8)给了SGC的一个自然直观的解释:SGC由两部分组成
- 一个固定的(没有参数,parameter-free)的特征提取器(或平滑器smoothing component): X ‾ = S K X \overline{X}=S^KX X=SKX
- 特征提取器后是一个线性逻辑回归分类器 Y ^ = s o f t m a x ( X ‾ Θ ) \hat{Y}=softmax(\overline{X}\Theta) Y^=softmax(XΘ)
可以看出,由于计算 X ‾ \overline{\mathbf{X}} X不需要权值,因此可以把这部分计算作为特征的预处理步骤,整个模型的训练可以直接简化为对预处理特征 X ‾ \overline{\mathbf{X}} X的多类逻辑回归。
优化细节
逻辑回归的训练是一个凸优化问题,可以用任何有效的二阶方法或随机梯度下降法进行执行(Large-scale machine learning with stochastic gradient descent,2010)。在图连通模式足够稀疏的情况下,SGD可以很自然地运用在非常大的图上,SGC的训练比GCN快得多。
3. 谱分析
文中从图卷积的角度来研究SGC,并证明了SGC在图谱域上对于应一个固定的滤波器。此外,还证明了在原始图上添加自循环,即renormalization trick,可以有效地缩小底层图的谱。在这个缩放的谱域上,SGC充当一个低通滤波器,在图上生成平滑的特征。因此,邻居节点倾向于共享相似的表示,从而实现预测。
3.1 在图上的初步做法
经过傅里叶变换的信号
x
x
x和滤波器
g
g
g的GCN卷积操作为
g
∗
x
=
θ
(
I
+
D
−
1
2
A
D
−
1
2
)
x
(11)
g*x=\theta(I+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})x \tag{11}
g∗x=θ(I+D−21AD−21)x(11)
最后,通过将卷积推广到d dd维的通道输入中的多个滤波器上,并在每一层之间用非线性激活函数的分层模型,就得到了如公式(5)所定义的GCN传播规则
H ( k ) < − R e L U ( H ‾ ( k ) Θ ( k ) ) (5) H^{(k)}<-ReLU(\overline{H}^{(k)}\Theta^{(k)}) \tag{5} H(k)<−ReLU(H(k)Θ(k))(5)
3.2 SGC and Low-Pass Filtering 简化的图卷积和低通滤波器
定理1
对于一个简单,没有孤立节点的无向图。令
A
~
=
A
+
γ
\widetilde{A}=A+\gamma
A
=A+γ,
I
,
γ
>
0
I,\gamma>0
I,γ>0,
λ
1
\lambda_1
λ1和
λ
2
\lambda_2
λ2分别是对称归一化的拉普拉斯矩阵
Δ
s
y
m
=
I
−
D
−
1
2
A
D
−
1
2
Δsym=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}
Δsym=I−D−21AD−21的最小和最大的特征值。令
λ
1
~
\widetilde{\lambda_1}
λ1
和
λ
2
~
\widetilde{\lambda_2}
λ2
分别为
Δ
~
s
y
m
=
I
−
D
~
−
1
2
A
~
D
~
−
1
2
\widetilde{Δ}sym=I-\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}
Δ
sym=I−D
−21A
D
−21的最小和最大的特征值。则有
0
=
λ
1
=
λ
1
~
<
λ
n
~
<
λ
n
0=\lambda_1=\widetilde{\lambda_1}<\widetilde{\lambda_n}<\lambda_n
0=λ1=λ1
<λn
<λn
关于定理1的证明,可参考文中提供的附录部分。
从定理1可以看出,当
γ
>
0
\gamma>0
γ>0时,相当于图中添加了自循环,则归一化的拉普拉斯矩阵的最大特征值会变小。
- 图2描述了在Cora数据集上使用的三种情况下特征值(频率)的变化和滤波器系数(谱系数)的变化关系
- Normalized Adjacency: S a d j = D − 1 / 2 A D − 1 / 2 \mathbf{S}_{\mathrm{adj}}=\mathbf{D}^{-1 / 2} \mathbf{A} \mathbf{D}^{-1 / 2} Sadj=D−1/2AD−1/2
- Augmented Normalized Adj: S ~ a d j = D ~ − 1 / 2 A ~ D ~ − 1 / 2 \tilde{\mathbf{S}}_{\mathrm{adj}}=\tilde{\mathbf{D}}^{-1 / 2} \tilde{\mathbf{A}} \tilde{\mathbf{D}}^{-1 / 2} S~adj=D~−1/2A~D~−1/2
- First-Order Chebyshev: S 1 -order = ( I + D − 1 / 2 A D − 1 / 2 ) \mathbf{S}_{1 \text { -order }}=\left(\mathbf{I}+\mathbf{D}^{-1 / 2} \mathbf{A} \mathbf{D}^{-1 / 2}\right) S1 -order =(I+D−1/2AD−1/2)
- 使用 S a d j = D − 1 / 2 A D − 1 / 2 \mathbf{S}_{\mathrm{adj}}=\mathbf{D}^{-1 / 2} \mathbf{A} \mathbf{D}^{-1 / 2} Sadj=D−1/2AD−1/2的特征传播对应的滤波器 g ( λ i ) = ( 1 − λ i ) K g\left(\lambda_{i}\right)=\left(1-\lambda_{i}\right)^{K} g(λi)=(1−λi)K展开就是一个关于拉普拉斯矩阵特征值的多项式)的取值范围为[0,2]
- S a d j \mathbf{S_{adj}} Sadj的奇数次幂在 λ i > 1 \lambda_i >1 λi>1时产生了负的滤波系数
- 添加了自循环的 S ~ a d j \tilde{\mathbf{S}}_{\mathrm{adj}} S~adj的最大特征值从2近似变为了1.5,并且消除了滤波系数为负数的影响
- 可以使用 S ~ a d j \tilde{\mathbf{S}}_{\mathrm{adj}} S~adj的 K > 1 K > 1 K>1的幂来定义滤波器,此时为一个低通滤波器(文中附录部分对不同的传播函数提供了不同的选择)
4. 实验
- 图3是在Pubmed和Reddit数据集上的效率对比图
- 显然,SGC是效率最高的
- SGC中 S K X \mathbf{S}^{K} \mathbf{X} SKX是预先计算的,SGC训练的时候只需要学习一个权重矩阵 Θ \Theta Θ,减少了内存的使用由于 S \mathbf{S} S通常是稀疏的,而 K K K通常比较小,因此,可以用稀疏稠密矩阵乘法进行计算 S K X \mathbf{S}^{K}\mathbf{X} SKX
- 无法在Reddit上对GaAN和DGI的训练时间进行基准测试,因为实验没有发布
- GPU:NVIDIA GTX 1080 Ti
- 在大图上由于内存要求不能进行GCN的训练。FastGCN和GraphSAGE等方法使用采样的方法减少邻居数量来处理这个问题。Deep Graph InfoMax(ICLR,2019)通过限制模型的size来解决这个问题
- SGC训练的时候比使用快速采样的FastGCN快两个数量级,并且性能几乎没有损失
4.1 下游任务
使用5个下游任务来研究SGC的适应性:
- text classification
- semi-supervised user geolocation
- relation extraction
- zero-shot image classification
- graph classification
Text classification
- (Graph convolutional networks for text classification,2019)使用2层的GCN来实现了一个state-of-the-art的结果,创建了一个语料库图,该图将文档和单词都视为图中的节点。
- Word-word边的权值为点信息的互信息(point twise mutual information, PMI), word-document边的权值为标准化的TF-IDF socre。
- 如表4显示,一个SGC (K = 2)在5个基准数据集上与他们的模型竞争,同时达到了83.6倍的速度。
其他下游任务的具体分析比较结果可以参考论文或者所转载的文章