Kipf-GCN《Semi-Supervised Classification With Graph Convolutional Networks》论文详解

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,jAi,jf(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 Δ=DA 表示无向图 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} viV 及相应的边 ( 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} ARN×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 xRN 是输入(每个顶点都是一个常数,一共 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=IND21AD21=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=0KθkTk(Λ~) 其中,重缩放的 Λ ~ = 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)=2xTk1(x)Tk2(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θUTxgθ(L)x=k=0KθkTk(L~)x 重缩放的拉普拉斯矩阵 L ~ = 2 λ m a x L − I N \tilde{L}={\frac 2 {\lambda_{max}}}L-I_N L~=λmax2LIN。由于(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θxk=01θkTk(L~)x=(θ0+θ1L~)x 此时卷积核是是 L L L 的线性函数。
实验表明,用这种方式,仍然可以通过堆叠多个这样的层来增强卷积核函数表达能力。

简化特征向量最大值

通过上文可以看出,重缩放的图拉普拉斯为 L ~ = 2 λ m a x L − I N \tilde{L}={\frac 2 {\lambda_{max}}}L-I_N L~=λmax2LIN,其依旧需要用到特征值,也就是需要进行特征分解,这就导致了高的计算开销,为了降低计算复杂度,作者提出 λ m a x ≈ 2 \lambda_{max}\approx2 λmax2 来避免矩阵分解,这种做法是有一定的理论依据的, 通过查证,发现经典书籍《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 λmax2 ,所以作者使用出 λ m a x ≈ 2 \lambda_{max}\approx2 λmax2 简化没有问题。

所以(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+θ1L~)x=θ0x+θ1(LIN)x=θ0xθ1D21AD21x 可见,卷积核已经完全不需要矩阵分解操作。卷积核参数可以在整个图上共享,连续应用这种形式的卷积核可以有效地卷积节点的 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θ0xθ1D21AD21x=θ(IN+D21AD21)x

对邻接矩阵和度矩阵进行重新规范化

作者给出的理由是,(7)式中的 I N + D − 1 2 A D − 1 2 I_N+D^{-\frac1 2}AD^{-\frac1 2} IN+D21AD21 的特征值和特征向量的范围是 [ 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+D21AD21D~21A~D~21,其中A~=A+IN,D~ii=jA~ij (注:为什么不除以2进行缩放呢?)

卷积操作的向量化形式

由于图中的每个顶点都可以视为一个embedding,因此输入 x ∈ R N x\in\mathbb{R}^N xRN 的向量化形式为 X ∈ R N × C X\in\mathbb{R}^{N\times C} XRN×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} ZRN×F
这个卷积操作的复杂度为 O ( ∣ E ∣ F C ) \mathcal{O}(|\mathcal{E}|FC) O(EFC)

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} ARN×N X ∈ R N × C X\in\mathbb{R}^{N\times C} XRN×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} ZRN×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=lYLf=1FYlflnZlf 其中, 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的研究员及创始董事会成员。他之前担任过高通科技公司副总裁,加州大学欧文分校教授。


  1. 关于谱图理论-图傅里叶变换-谱卷积等谱图领域知识的理解 ↩︎ ↩︎

  2. 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. ↩︎

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,根据提供的引用内容,我无法提供关于"SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS"代码的信息。引用的内容主要介绍了上结点分类的半监督问题以及相关的研究方法和改进。如果您需要获取该代码,建议您查阅相关的学术论文或者在开源代码平台上搜索相关的项目。 #### 引用[.reference_title] - *1* [Semi-supervised classification with graph convolutional networks](https://blog.csdn.net/weixin_41362649/article/details/113232898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Kipf-GCNSemi-Supervised Classification With Graph Convolutional Networks论文详解](https://blog.csdn.net/u012762410/article/details/127177181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Semi-Supervised Classification with Graph Convolutional Networks](https://blog.csdn.net/m0_37924639/article/details/124884547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值