论文笔记:Semi-Supervised Classification with Graph Convolutional Networks

Semi-Supervised Classification with Graph Convolutional Networks

1、四个问题

  1. 要解决什么问题?
    • 半监督任务。给定一个图,其中一部节点已知标签,剩下的未知,要对整个图上的节点进行分类。
  2. 用了什么方法解决?
    • 提出了一种卷积神经网络的变种,即提出了一种新的图卷积方法。
    • 使用谱图卷积(spectral graph convolution)的局部一阶近似,来确定卷积结构。
    • 所提出的的网络可以学习图上局部结构的特征,并进行编码。
  3. 效果如何?
    • 在引文网络(citation network)和知识图谱(knowledge graph)等的数据集上比其之前的方法效果更好。
  4. 还存在什么问题?
    • 最大的问题就是对GPU显存的占用较大,要使用较大规模的图来训练网络只能用CPU替代。
    • 文中的模型只是为无向图设计的,并不支持对边特征的提取。尽管能够将一个有向图看做一个无向加权联合图,但这个模型对于有向图的支持能力还是有限。

2、论文概述

1、简介

  • 使用神经网络f(X,A)f(X, A)对图的结构进行编码,对所有带标签的节点进行有监督训练。
  • XX是输入数据,AA是图邻接矩阵。
  • 在图的邻接矩阵上调整f()f(\cdot)能让模型从监督损失L0L_0

2、图上的快速近似卷积

  • 图卷积的前向传播公式:

(1)H(l+1)=σ(D~12A~D~12H(l)W(l)) H^{(l+1)} = \sigma( \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)} ) \tag{1}

  • $ \tilde{A} = A + I_N $ 是无向图GG的自环邻接矩阵。
  • INI_N是单位矩阵。
  • $ \tilde{D}{ii} = \sum_j \tilde{A}{ij} $ 是A~\tilde{A}的度矩阵。
  • W(l)W^{(l)}是可训练的权重矩阵,即网络的参数。
  • σ()\sigma(\cdot)是**函数,比如ReLU。
  • H(l)RN×DH^{(l)} \in \mathbb{R}^{N \times D}是第ll层的**矩阵,即网络的输出。H(0)=XH^{(0)}=X,第一层为输入。

2、谱图卷积

2.1、原始GCN

  • 将图卷积通过傅里叶变换拓展到图的频域中。
  • 对于一个输入信号xRNx \in \mathbb{R}^N,在傅里叶域中取一个θRN\theta \in \mathbb{R}^N为参数的滤波器gθ=diag(θ)g_{\theta} = diag(\theta)
  • (2)gθx=UgθUxg_{\theta} \star x=U g_{\theta} U^{\top} x \tag{2}
    • UU是图的拉普拉斯矩阵LL的特征向量矩阵。
    • 拉普拉斯矩阵:L=IND12AD12=UΛUTL=I_N - D^{-\frac{1}{2}} A D^{-\frac{1}{2}} = U \Lambda U^T
      • Λ\Lambda是拉普拉斯矩阵LL的特征值组成的对角矩阵。
      • UTxU^T x就是图上的傅里叶变换。
    • 也可以将gθg_{\theta}看成是拉普拉斯矩阵LL的一系列特征值组成的对角矩阵gθ(Λ)g_{\theta}(\Lambda)
    • 公式(2)中做的事就是,借助傅里叶变换,将原始信号xx变换到频域,在频域乘上一个信号,再做傅里叶逆变换还原到空域。由傅里叶变换的特性有,在频域相乘相当于空域卷积,这样就回避了空域上对不确定结构的图进行卷积的问题。
  • 这是最原始的GCN,但是这套方法的缺点就是计算非常复杂,每次需要对矩阵进行分解,如果图的规模非常大,这会带来巨大的计算开销。

2.2、加速版本的GCN

  • 为了减少计算量,有人提出一个特殊的卷积核设计方法,即:将gθ(Λ)g_{\theta}(\Lambda)用切比雪夫多项式进行KK阶逼近。
  • 切比雪夫多项式:
    • T0(x)=1T_0 (x) = 1
    • T1(x)=xT_1(x) = x
    • Tk(x)=2xTk1(x)Tk1(x)T_k(x) = 2x T_{k-1}(x) - T_{k-1}(x)
  • 改进的卷积核:
    • (3)gθ(Λ)k=0KθkTk(Λ~)g_{\theta^{\prime}}(\Lambda) \approx \sum_{k=0}^{K} \theta_{k}^{\prime} T_{k}(\tilde{\Lambda}) \tag{3}
      • Λ~=2λmaxΛIN\tilde{\Lambda}=\frac{2}{\lambda_{\max }} \Lambda-I_{N}λmax\lambda_{max}是拉普拉斯矩阵LL中最大的特征值。
      • θRK\theta^{\prime} \in \mathbb{R}^{K}是切比雪夫多项式的系数。
  • 将该卷积核代入图卷积的公式:
    • (4)gθxk=0KθkTk(L~)xg_{\theta^{\prime}} \star x \approx \sum_{k=0}^{K} \theta_{k}^{\prime} T_{k}(\tilde{L}) x \tag{4}
      • L~=2λmaxLIN\tilde{L}=\frac{2}{\lambda_{\max }} L-I_{N}
      • 这个公式为拉普拉斯算子的KK阶切比雪夫多项式形式,即它受到距离*节点KK步以内的节点影响。
  • 这里的加速版本的GCN,将参数减少到了KK个,并且不再需要对拉普拉斯矩阵做特征分解,直接使用即可。

2.3、线性模型

  • K=1K=1时,模型有两个参数,GCN公式:
  • (4)gθxk=0KθkTk(L~)xg_{\theta^{\prime}} \star x \approx \sum_{k=0}^{K} \theta_{k}^{\prime} T_{k}(\tilde{L}) x \tag{4}
  • 这里的公式(4)就对应一个GCN层。
  • 作者在论文中提到,通过使用这种形式的GCN,我们可以缓解模型在图的局部结构上的过拟合。此外,很大程度上减小了计算开销,使得我们可以堆叠多个GCN来获得一个更深的模型,提取特征。
  • 近似地认为λmax2\lambda_{max} \approx 2,公式(5)可以简化为下式:
  • (5)gθxθ0x+θ1(LIN)x=θ0xθ1D12AD12x g_{\theta^{\prime}} \star x \approx \theta_{0}^{\prime} x+\theta_{1}^{\prime}\left(L-I_{N}\right) x=\theta_{0}^{\prime} x-\theta_{1}^{\prime} D^{-\frac{1}{2}} A D^{-\frac{1}{2}} x \tag{5}
    • 这里有两个*参数:θ0\theta_0^{\prime}θ1\theta_1^{\prime}。滤波器的参数在整个图上共享。
    • 通过连续堆叠这种形式的滤波器,可以作用到卷积节点的KK阶领域上,其中KK是卷积层的个数。
  • 进一步简化公式(5)中的模型,公式如下:
  • (6)gθxθ(IN+D12AD12)xg_{\theta} \star x \approx \theta\left(I_{N}+D^{-\frac{1}{2}} A D^{-\frac{1}{2}}\right) x \tag{6}
    • 这里令θ=θ0=θ1\theta=\theta_{0}^{\prime}=-\theta_{1}^{\prime},将公式(5)中的两个参数都替换成了θ\theta
    • 但是,这里的IN+D12AD12I_{N}+D^{-\frac{1}{2}} A D^{-\frac{1}{2}}的特征值范围为[0,2][0, 2],这可能会导致数值不稳定和梯度消失/爆炸。所以还需要增加一步归一化操作。
    • 归一化:
      • IN+D12AD12D~12A~D~12I_{N}+D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \rightarrow \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}
      • A~=A+IN\tilde{A}=A+I_{N}
      • D~ii=jA~ij\tilde{D}_{i i}=\sum_{j} \tilde{A}_{i j}
  • 现在可以将卷积操作推广到信号XRC×FX \in \mathbb{R}^{C \times F},输入通道数为CC,有FF个滤波器。推广的图卷积形式如下:
  • (7)Z=D~12A~D~12XΘZ=\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} X \Theta \tag{7}
    • ΘRC×F\Theta \in \mathbb{R}^{C \times F}是滤波器的参数矩阵。
    • ZRN×FZ \in \mathbb{R}^{N \times F}是卷积后输出的信号矩阵。

3、半监督节点分类

  • 回到半监督任务上,前面介绍了优化后的图卷积结构。在现在的半监督任务中,作者希望通过已知的数据XX和邻接矩阵AA来训练图卷积网络f(X,A)f(X, A)。 作者认为,在邻接矩阵中包含了一些XX中没有的隐含的图的结构信息,而我们可以利用这些信息进行推理。
  • 下图中,左图是一个GCN网络示意图,输入有CC维特征,输出有FF维特征,中间有若干隐藏层,XX是训练数据,YY是标签。右图是使用一个两层GCN在Cora数据集上(只是用了5%的标签)得到的可视化结果。
  • 论文笔记:Semi-Supervised Classification with Graph Convolutional Networks

3.1、实例

  • 在预处理中,首先计算好:A^=D~12A~D~12\hat{A}=\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}}
  • 然后,前向传播的模型可以写成下式:
  • (8)Z=f(X,A)=softmax(A^ReLU(A^XW(0))W(1))Z=f(X, A)=\operatorname{softmax}\left(\hat{A} \operatorname{ReLU}\left(\hat{A} X W^{(0)}\right) W^{(1)}\right) \tag{8}
    • 这是一个很简单的两层GCN。
    • W(0)RC×HW^{(0)} \in \mathbb{R}^{C \times H}是输入到隐藏层的权重矩阵,隐藏层上的特征维度是HH
    • W(1)RH×FW^{(1)} \in \mathbb{R}^{H \times F}是隐藏层到输出的权重矩阵。
    • softmaxsoftmax就不多说了。
  • 损失函数采用交叉熵,评估所有有标签的数据:
  • (9)L=lYLf=1FYlflnZlf\mathcal{L}=-\sum_{l \in \mathcal{Y}_{L}} \sum_{f=1}^{F} Y_{l f} \ln Z_{l f} \tag{9}
  • YL\mathcal{Y}_{L}为带标签节点组成的集合。
  • 训练:SGD,引入了BN和Dropout。

4、实验

  • 数据集描述:
  • 论文笔记:Semi-Supervised Classification with Graph Convolutional Networks
  • 半监督分类准确率:
  • 论文笔记:Semi-Supervised Classification with Graph Convolutional Networks

3、参考资料