这是Kipf博士期间发表在ICLR’17的一篇论文,在GCN的相关工作中很具影响力,目前被引了3k多次。它的主要贡献在于对 [1] 中的Chebyshev多项式做了一阶估计,提出了一个简单但有效的 propagation rule(GCN层),并且在 graph-based semi-supervised learning 任务上有不错的表现。
在图上节点分类问题上(只有一部分节点有label),经典的方法主要有两类:加入图拉普拉斯正则项(graph Laplacian regularization)和基于embedding(graph embedding-based)的方法。
loss function 中加入图拉普拉斯正则项,是一种较为经典的方式,如下式:
L = L 0 + λ L r e g \mathcal{L}=\mathcal{L}_0 + \lambda \mathcal{L}_{reg} L=L0+λLreg
L r e g = ∑ i , j A i , j ∥ f ( X i ) − f ( X j ) ∥ 2 = f ( X ) T △ f ( X ) \mathcal{L}_{reg} = \sum_{i,j}A_{i,j}\|f(X_i)-f(X_j)\|^2=f(X)^T \bigtriangleup f(X) Lreg=i,j∑Ai,j∥f(Xi)−f(Xj)∥2=f(X)T△f(X)
其中 L 0 \mathcal{L}_0 L0 是监督学习的 loss, f ( ⋅ ) f( \cdot) f(⋅) 可以是神经网络, λ \lambda λ 为正则项系数, X X X 是节点的特征矩阵, △ \bigtriangleup △ 是图上拉普拉斯矩阵。第二个式子即为图拉普拉斯正则项,不难看出式子的最右边是一个二次型,它的结果为图信号的总变差(Total Variation),刻画了图信号整体的平滑度。这么说有点抽象,为什么要把图信号的全局平滑度作为惩罚项。这里因为上述形式是做了一个假设:图上相连节点的 label 有很大可能是相同的。那么,就希望模型 f ( ⋅ ) f(\cdot) f(⋅)能够较好预测出的两个相连的节点 m, n的label是相同的,也就是要求模型训练过程,既要满足 ∥ y m − f ( X m ) ∥ 2 \|y_m-f(X_m)\|^2 ∥ym−f(Xm)∥2和 ∥ y n − f ( X n ) ∥ 2 \|y_n-f(X_n)\|^2 ∥yn−f(Xn)∥2尽可能的低,还要求降低 ∥ f ( X m ) − f ( X n ) ∥ 2 \|f(X_m) - f(X_n)\|^2 ∥f(Xm)−f(Xn)∥2的值,这样尽可能满足假设,训练得到的就是一个比较好的模型。但这个假设,在一定程度上限制了模型的表达能力。
这种学习图上node embedding的工作有很多,比如 DeepWalk、LINE、Node2Vec,但这种方式是将节点表示学习和semi-supervised训练分开的,也就是学到的embedding 不一定合适后面任务。
这里,作者的一个动机就是希望能设计出一个能直接作用在图上的神经网络,实现end-to-end的分类器。
在[1]中的工作中,提出了用Chebyshev多项式作为卷积核的GCN,如下:
g θ ′ ⋆ x ≈ ∑ k = 0 K θ k ′ T k ( L ~ ) x g_{\theta'} \star x \approx \sum_{k=0}^K \theta_k'T_k(\tilde{L})x gθ′⋆x≈k=0∑Kθk′Tk(L~)x
这里的 K K K 就可以看成是图卷积层的感受野(receptive filed),就类似于CNN中卷积核的尺寸。作者这里将K限制为1,也就是对Chebyshev多项式做了一阶的估计,得到一个参数较少的卷积核,而通过堆叠卷积层来获得原先同样的效果。这个动机就很像VGG中的设计,用两层 3 × 3 3 \times 3 3×3卷积核去代替 5 × 5 5 \times 5 5×5卷积核,在获得相同感受野的情况下,还能降低训练的参数,同时还缓解过拟合的问题。另外,还可以通过residual的方法[2]去加深模型,提升模型的性能。
在近似 λ m a x ≈ 2 \lambda_{max} \approx 2 λmax≈2和减少参数的方式(缓解过拟合)得到
g θ ′ ⋆ x ≈ θ ( I N + D − 1 2 A D − 1 2 ) x g_{\theta'} \star x \approx \theta(I_N+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})x gθ′⋆x≈θ(IN+D−21AD−21)x
这里,为了解决在堆叠该GCN层后会引起梯度消失(爆炸)的问题,作者用了一个trick,即renormalization。因为 D − 1 2 A D − 1 2 D^{-\frac{1}{2}}AD^{-\frac{1}{2}} D−21AD−21 本就是由normalized的拉普拉斯矩阵推过来的,这里 I N I_N IN加入,需要重新做normalization,即改成在邻接矩阵 A A A 中加入每个节点的自环, A ~ = A + I N \tilde{A}=A+I_N A~=A+IN, D ~ i i = ∑ j A ~ i j \tilde{D}_{ii}=\sum_{j}\tilde{A}_{ij} D~ii=∑jA~ij,得到 D ~ − 1 2 A ~ D ~ − 1 2 \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}} D~−21A~D~−21。
这样就可以得到一个标准的图卷积层:
Z = D ~ − 1 2 A ~ D ~ − 1 2 X Θ Z = \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}} X \Theta Z=D~−21A~D~−21XΘ
Kipf 对自己的模型还提出了另外一种解释,即是WL算法的变形。那么什么是Weisfeiler-Lehman算法[3]?下图是一维的WL算法流程:
对于每个节点 v i ∈ V v_i \in \mathcal{V} vi∈V,获取每个节点的邻居节点特征 h j ( t ) h_j^{(t)} hj(t),更新该节点的特征为 h i ( t + 1 ) ← h a s h ( ∑ j ∈ N i h j ( t ) ) h_i^{(t+1)} \leftarrow hash(\sum_{j \in \mathcal{N}_i}h_j^{(t)}) hi(t+1)←hash(∑j∈Nihj(t))(hash是一个单射函数),重复上述步骤K次直到收敛。事实上,WL算法在大多数图上会得到一个独一无二的特征集合,这意味着图上的每一个节点都有着独一无二的角色定位(例外在于网格,链式结构等等)。因此,对于大多数非规则的图结构,得到的特征可以作为图是否同构的判别依据,也就是WL Test。
而对于上面的Hash函数,Kipf用一个神经网络的可微函数来代替,即得到:
h i ( l + 1 ) = σ ( ∑ j ∈ N i 1 c i j h j ( l ) W ( l ) ) h_i^{(l+1)} = \sigma \left( \sum_{j \in \mathcal{N_i}}{\frac{1}{c_{ij}}h_j^{(l)}W^{(l)}}\right) hi(l+1)=σ⎝⎛j∈Ni∑cij1hj(l)W(l)⎠⎞
其中, c i j = d i d j c_{ij} = \sqrt{d_id_j} cij=didj,而 d i = ∣ N i ∣ d_i = |\mathcal{N}_i| di=∣Ni∣ 即 节点 i 的度,不难发现如果将hash函数转换成矩阵运算的形式,它是和上式提出的GCN层运算是一样的。这也就意味着可以把GCN看成是一维WL算法一种可微、参数化的推广。
另外,作者还对模型的深度做了一些实验。这里的对比实验是采用 residual connections和不采用 residual connections的模型在加深GCN层数时的效果对比。加了residual connections后,propagation rule 就改成了:
H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) ) + H ( l ) H^{(l+1)} = \sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}) + H^{(l)} H(l+1)=σ(D~−21A~D~−21H(l))+H(l)
实验结果表明,在加了残差连接后的模型在加深的情况下,在一定程度上提升了模型的效果,但继续加深则会出现过拟合的问题。
Kipf 这篇论文的工作可谓亮点多多:
[1] Defferrard M, Bresson X, Vandergheynst P. Convolutional neural networks on graphs with fast localized spectral filtering[C]//Advances in neural information processing systems. 2016: 3844-3852.
[2] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.
[3] 什么是Weisfeiler-Lehman(WL)算法和WL Test?, https://zhuanlan.zhihu.com/p/90645716