由于文章篇幅较长,因此将其分解为三部分:

前两篇介绍完图卷积网络的背景知识,现在正式引入GCN!

卷积定义

在泛函分析中,卷积是透过两个函数 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络pythongcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_02 生成第三个函数的一种数学算子,表示函数 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python 与经过翻转和平移的 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_02 的乘积函数所围成的曲边梯形的面积,公式如下所示:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_05

下面给出两幅图来直观理解上述公式,参考卷积解释

gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_06


gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_07


以上是连续函数的卷积运算,对于离散卷积公式定义如下:

gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_08

卷积除了直接计算这种方法,还可以根据卷积定理来计算。

卷积定理:在适当条件下,两个信号的卷积的傅立叶变换等于它们傅立叶变换的点积。例如,一个域(如时域)的卷积等于另一个域(如频域)的点乘:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_09

如果以gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_10 表示傅里叶逆变换,那么卷积计算可以重新表示为:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_11

PS:利用卷积定理可以简化卷积的运算量。对于一个长度为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_12 的序列,按照卷积的定义来计算则需要做 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_13 组对位乘法,即时间复杂度为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_14 ;而利用傅立叶变换后,只需要计算一组对位乘法,而且离散傅立叶变换有快速的算法(快速傅立叶变换),所以总的计算复杂度为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_15

图卷积

谱图卷积的思想是:既然无法直接在空域对图进行卷积,那么将图信号映射到频域后再做卷积操作。

根据公式 (4)与文章图卷积网络GCN(Graph Convolution Network)(二)图上的傅里叶变换和逆变换 中图上的傅里叶变换公式,可得
gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_16

上式表示时域信号 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络pythongcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_18 的卷积等价于将信号转换到傅立叶域做点乘后再逆变换回来。其中,向量 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python 与向量 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_20 的元素点积,等价于将 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_20 组织成对角矩阵的形式进行矩阵乘法,可得:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_22

根据图上的逆变换计算公式,上式做成gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_23可得:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_24

也可以写成写成矩阵形式为:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_25

目前先不写成式 (8) 的形式,是因为在 GCN 中我们的卷积核是可训练并且参数共享的,所以在此我们可以直接令gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_26

这就是深度学习中的可学习参数。

第一代图卷积

论文来源:《Spectral Networks and Deep Locally Connected Networks on Graphs》

第一代图卷积的计算方法就直接根据式(7)(9)推出
gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_27

虽然利用上式已经可以构造深度网络进行图卷积运算了,但该版本有不少缺点:

  1. 没有local信息。每次卷积都是所有顶点都参与运算,没有实现局部卷积和参数共享。
  2. 运算量大。每次卷积都要进行拉普拉斯矩阵分解和矩阵相乘,计算复杂度为gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_28
  3. 参数量大。每个卷积核参数量为gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_29

第二代图卷积

文章来源:
《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》

针对第一代图卷积中存在的问题,学者基于切比雪夫多项式提出第二代GCN:ChbeyNet

首先回顾下图傅里叶计算公式:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_30

可知函数和特征值密切相关,令 gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_31 为拉普拉斯矩阵 gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_32 的特征值函数 gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_33
gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_34

以拉普拉斯矩阵的特征值作为卷积核同样存在缺陷:

  • 不具备局部连接性;
  • 时间复杂度为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_35;

为了克服上述缺陷引入 gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_36 阶多项式:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_37

其中,参数 gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_38 是多项式系数,因此滤波器具有了 gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_36 阶局部性,复杂度也降低到 gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_40

将式代入第一代图卷积式(10)中可得:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_41

其中 gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_42 是激活函数,公式(14)的计算时间复杂度为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_43 ,因为对于静态图而言 gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_32 是固定的, gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_45 可以提前计算得到。如果使用稀疏矩阵乘法(pytorch里有封装),时间复杂度是 gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_46 其中 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_47 是稀疏矩阵中非零元的个数表示图中边的数量。 此时计算图卷积就不需要再乘上特征向量矩阵 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_23,而是直接使用拉普拉斯矩阵 gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_32gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_50

因为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_45gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_36 很大的时候并不稀疏( gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_47 接近 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_54 ),所以文中提出了利用切比雪夫多项式展开(任何gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_50次多项式都可以通过切比雪夫多项式展开)来近似 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_45 ,切比雪夫多项式递归式为:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_57

因此根据上式可知:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_58

其中,gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_59; gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_60是指拉普拉斯矩阵gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_32的最大特征值。

PS:因为切比雪夫多项式的输入要在 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_62 之间,由于拉普拉斯矩阵的半正定性,所以所有的特征值都是大于等于 0 的,将其除以最大特征值可以将特征压缩到 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_63 区间内,现在需要将其压缩到 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_62,所以我们有:gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_59

我们将切比雪夫多项式引入到我们的卷积变换中:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_66

其中,gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_67 。这个表达式为拉普拉斯多项式中的一个 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_50 阶近似函数,依赖于节点的 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_50 阶邻域(gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_50

总结第二代图卷积优点如下:

  • 运算量相比第一代的 gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_28 可以降到 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_72
  • 引入K-hop感受野,可以捕捉局部特征。

第三代图卷积

文章来源:《Semi-supervised Classification with Graph Convolutional Networks》

第二代图卷积解决了拉普拉斯矩阵特征分解的问题,但是在计算图卷积操作时矩阵乘法时间复杂度为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_73,在此基础上优化Kipf等人提出了目前流行的 GCN。

GCN 通过式(17)进行多层卷积层进行叠加,而每层都会逐点进行非线性叠加。考虑到时间复杂度问题,令 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_74,也就是说得到了一个拉普拉斯算子的二阶近似函数。既可以对网络进行卷积操作计算量增加不大。通过叠加层数可以提升模型的非线性。

归一化的拉普拉斯矩阵的特征值区间为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_75,令 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_76 可得:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_77

其中,gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_78是切比雪夫系数且仅存的两个参数!

在GCN的训练过程中需要规范化参数避免过拟合,令gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_79,由式可得:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_80

注意gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_81的特征值范围在 [0, 2] 之间,所以如果在很深的网络中会引起梯度爆炸的问题,需要再次进行一次归一化(Renormalization trick):
gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_82

把上式从标量推广到矩阵,对于输入顶点的向量 gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_83 ,其中 gcn图卷积网络python gcn图卷积网络与知识蒸馏_图卷积网络_84 为节点数,gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_85 为顶点的特征向量维度,可得:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_86

其中,gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_87是参数矩阵,gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_88是卷积后的顶点特征,时间复杂度为 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_89

根据上式一层卷积,多层图卷积计算公式公式为:
gcn图卷积网络python gcn图卷积网络与知识蒸馏_GCN_90

其中,gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_91gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_92 为邻接矩阵,gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_93 为单位矩阵,所以 gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_94 为添加自连接的邻接矩阵;gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_95gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_96 为顶点的度数矩阵;gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_97 为神经网络第 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_98 层的权重矩阵;gcn图卷积网络python gcn图卷积网络与知识蒸馏_卷积_99 是激活函数;gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_100 是第 gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_98 层的激活矩阵,并且 gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_102gcn图卷积网络python gcn图卷积网络与知识蒸馏_gcn图卷积网络python_103

总结第三代图卷积:

  • 令K=1,相当于只考虑1-hop 邻点。通过堆叠层数来增加感受野。
  • 每层计算复杂度降低为gcn图卷积网络python gcn图卷积网络与知识蒸馏_数学理论_104

总结

CNN 中的卷积无法直接应用于网络图中,所以引出了谱图理论和图中的傅里叶变换,进而定义图卷积的计算方法,最后结合深度学习发展出来 GCN。至此图卷积GCN的理论推导三部曲完成,接下来就开启应用篇吧!