由于文章篇幅较长,因此将其分解为三部分:
前两篇介绍完图卷积网络的背景知识,现在正式引入GCN!
卷积定义
在泛函分析中,卷积是透过两个函数 和 生成第三个函数的一种数学算子,表示函数 与经过翻转和平移的 的乘积函数所围成的曲边梯形的面积,公式如下所示:
下面给出两幅图来直观理解上述公式,参考卷积解释:
以上是连续函数的卷积运算,对于离散卷积公式定义如下:
卷积除了直接计算这种方法,还可以根据卷积定理来计算。
卷积定理:在适当条件下,两个信号的卷积的傅立叶变换等于它们傅立叶变换的点积。例如,一个域(如时域)的卷积等于另一个域(如频域)的点乘:
如果以 表示傅里叶逆变换,那么卷积计算可以重新表示为:
PS:利用卷积定理可以简化卷积的运算量。对于一个长度为 的序列,按照卷积的定义来计算则需要做 组对位乘法,即时间复杂度为 ;而利用傅立叶变换后,只需要计算一组对位乘法,而且离散傅立叶变换有快速的算法(快速傅立叶变换),所以总的计算复杂度为 。
图卷积
谱图卷积的思想是:既然无法直接在空域对图进行卷积,那么将图信号映射到频域后再做卷积操作。
根据公式 (4)与文章图卷积网络GCN(Graph Convolution Network)(二)图上的傅里叶变换和逆变换 中图上的傅里叶变换公式,可得
上式表示时域信号 和 的卷积等价于将信号转换到傅立叶域做点乘后再逆变换回来。其中,向量 与向量 的元素点积,等价于将 组织成对角矩阵的形式进行矩阵乘法,可得:
根据图上的逆变换计算公式,上式做成可得:
也可以写成写成矩阵形式为:
目前先不写成式 (8) 的形式,是因为在 GCN 中我们的卷积核是可训练并且参数共享的,所以在此我们可以直接令
这就是深度学习中的可学习参数。
第一代图卷积
论文来源:《Spectral Networks and Deep Locally Connected Networks on Graphs》
第一代图卷积的计算方法就直接根据式(7)(9)推出
虽然利用上式已经可以构造深度网络进行图卷积运算了,但该版本有不少缺点:
- 没有local信息。每次卷积都是所有顶点都参与运算,没有实现局部卷积和参数共享。
- 运算量大。每次卷积都要进行拉普拉斯矩阵分解和矩阵相乘,计算复杂度为。
- 参数量大。每个卷积核参数量为。
第二代图卷积
文章来源:
《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》
针对第一代图卷积中存在的问题,学者基于切比雪夫多项式提出第二代GCN:ChbeyNet
首先回顾下图傅里叶计算公式:
可知函数和特征值密切相关,令 为拉普拉斯矩阵 的特征值函数 :
以拉普拉斯矩阵的特征值作为卷积核同样存在缺陷:
- 不具备局部连接性;
- 时间复杂度为 ;
为了克服上述缺陷引入 阶多项式:
其中,参数 是多项式系数,因此滤波器具有了 阶局部性,复杂度也降低到 。
将式代入第一代图卷积式(10)中可得:
其中 是激活函数,公式(14)的计算时间复杂度为 ,因为对于静态图而言 是固定的, 可以提前计算得到。如果使用稀疏矩阵乘法(pytorch里有封装),时间复杂度是 其中 是稀疏矩阵中非零元的个数表示图中边的数量。 此时计算图卷积就不需要再乘上特征向量矩阵 ,而是直接使用拉普拉斯矩阵 的
因为 当 很大的时候并不稀疏( 接近 ),所以文中提出了利用切比雪夫多项式展开(任何次多项式都可以通过切比雪夫多项式展开)来近似 ,切比雪夫多项式递归式为:
因此根据上式可知:
其中,; 是指拉普拉斯矩阵的最大特征值。
PS:因为切比雪夫多项式的输入要在 之间,由于拉普拉斯矩阵的半正定性,所以所有的特征值都是大于等于 0 的,将其除以最大特征值可以将特征压缩到 区间内,现在需要将其压缩到 ,所以我们有:。
我们将切比雪夫多项式引入到我们的卷积变换中:
其中, 。这个表达式为拉普拉斯多项式中的一个 阶近似函数,依赖于节点的 阶邻域(
总结第二代图卷积优点如下:
- 运算量相比第一代的 可以降到 。
- 引入K-hop感受野,可以捕捉局部特征。
第三代图卷积
文章来源:《Semi-supervised Classification with Graph Convolutional Networks》
第二代图卷积解决了拉普拉斯矩阵特征分解的问题,但是在计算图卷积操作时矩阵乘法时间复杂度为 ,在此基础上优化Kipf等人提出了目前流行的 GCN。
GCN 通过式(17)进行多层卷积层进行叠加,而每层都会逐点进行非线性叠加。考虑到时间复杂度问题,令 ,也就是说得到了一个拉普拉斯算子的二阶近似函数。既可以对网络进行卷积操作计算量增加不大。通过叠加层数可以提升模型的非线性。
归一化的拉普拉斯矩阵的特征值区间为 ,令 可得:
其中,是切比雪夫系数且仅存的两个参数!
在GCN的训练过程中需要规范化参数避免过拟合,令,由式可得:
注意的特征值范围在 [0, 2] 之间,所以如果在很深的网络中会引起梯度爆炸的问题,需要再次进行一次归一化(Renormalization trick):
把上式从标量推广到矩阵,对于输入顶点的向量 ,其中 为节点数, 为顶点的特征向量维度,可得:
其中,是参数矩阵,是卷积后的顶点特征,时间复杂度为 。
根据上式一层卷积,多层图卷积计算公式公式为:
其中, , 为邻接矩阵, 为单位矩阵,所以 为添加自连接的邻接矩阵; , 为顶点的度数矩阵; 为神经网络第 层的权重矩阵; 是激活函数; 是第 层的激活矩阵,并且 ,
总结第三代图卷积:
- 令K=1,相当于只考虑1-hop 邻点。通过堆叠层数来增加感受野。
- 每层计算复杂度降低为。
总结
CNN 中的卷积无法直接应用于网络图中,所以引出了谱图理论和图中的傅里叶变换,进而定义图卷积的计算方法,最后结合深度学习发展出来 GCN。至此图卷积GCN的理论推导三部曲完成,接下来就开启应用篇吧!