前两篇介绍完图卷积网络的背景知识,现在正式引入 GCN!
卷积定义
在泛函分析中,卷积是通过两个函数f 和g 生成第三个函数的一种数学算子,表示函数f 与经过翻转和平移的g 的乘积函数所围成的曲边梯形的面积,公式如下所示:
(f∗g)(t)= def ∫Rnf(τ)g(t−τ)dτ(1)
下面给出两幅图来直观理解上述公式,参考 卷积解释:


以上是连续函数的卷积运算,对于离散卷积公式定义如下:
(f∗g)[n]=m=−∞∑∞f[m]g[n−m]=m=−∞∑∞f[n−m]g[m](2)
卷积除了直接计算这种方法,还可以根据卷积定理来计算。
卷积定理:在适当条件下,两个信号的卷积的傅立叶变换等于它们傅立叶变换的点积。例如,一个域(如时域)的卷积等于另一个域(如频域)的点乘:
F{f∗g}=F{f}⋅F{g}(3)
如果以F−1 表示傅里叶逆变换,那么卷积计算可以重新表示为:
f∗g=F−1{F{f}⋅F{g}}(4)
PS:利用卷积定理可以简化卷积的运算量。对于一个长度为n 的序列,按照卷积的定义来计算则需要做2n−1 组对位乘法,即时间复杂度为O(n2) ;而利用傅立叶变换后,只需要计算一组对位乘法,而且离散傅立叶变换有快速的算法(快速傅立叶变换),所以总的计算复杂度为O(nlogn)。
图卷积
谱图卷积的思想是:既然无法直接在空域对图进行卷积,那么将图信号映射到频域后再做卷积操作。
根据公式 (4)与文章 图卷积网络 GCN(二)图上的傅里叶变换和逆变换 中图上的傅里叶变换公式,可得
(f∗h)G=F−1[F{f}⋅F{h}]=F−1[UTf⋅h^](5)
上式表示时域信号f 和h 的卷积等价于将信号转换到傅立叶域做点乘后再逆变换回来。其中,向量f 与向量h^ 的元素点积,等价于将h^ 组织成对角矩阵的形式进行矩阵乘法,可得:
(f∗h)G=F−1[UTf⋅h^]=F−1[diag[h^1,…,h^n]UTf](6)
根据图上的逆变换计算公式,上式做成U可得:
(f∗h)G=Udiag[h^1,…,h^n]UTf(7)
也可以写成写成矩阵形式为:
(f∗h)G=U((UTf)(UTh))(8)
目前先不写成式 (8) 的形式,是因为在 GCN 中我们的卷积核是可训练并且参数共享的,所以在此我们可以直接令
diag[h^1,…,h^n]=diag[θ1,…,θn]=gθ(9)
这就是深度学习中的可学习参数。
第一代图卷积
论文来源:《Spectral Networks and Deep Locally Connected Networks on Graphs》
第一代图卷积的计算方法就直接根据式(7)(9)推出
y=σ(UgθUTx)=σ⎝⎜⎜⎜⎛U⎣⎢⎢⎢⎡θ1θ2θN⎦⎥⎥⎥⎤UTx⎠⎟⎟⎟⎞(10)
虽然利用上式已经可以构造深度网络进行图卷积运算了,但该版本有不少缺点:
- 没有 local 信息。每次卷积都是所有顶点都参与运算,没有实现局部卷积和参数共享。
- 运算量大。每次卷积都要进行拉普拉斯矩阵分解和矩阵相乘,计算复杂度为O(N3)。
- 参数量大。每个卷积核参数量为O(N)。
第二代图卷积
文章来源:
《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》
针对第一代图卷积中存在的问题,学者基于切比雪夫多项式提出第二代 GCN:ChbeyNet
首先回顾下图傅里叶计算公式:
FT(λk)=g^k=i=1∑Ng(i)uk(i)(11)
可知函数和特征值密切相关,令gθ 为拉普拉斯矩阵L 的特征值函数gθ(Λ):
y=σ(UgθUTx)=σ(Ugθ(Λ)UTx)(12)
以拉普拉斯矩阵的特征值作为卷积核同样存在缺陷:
- 不具备局部连接性;
- 时间复杂度为O(n);
为了克服上述缺陷引入K 阶多项式:
gθ(Λ)≈k=0∑K−1θkΛk(13)
其中,参数θk∈RK 是多项式系数,因此滤波器具有了K 阶局部性,复杂度也降低到O(K)。
将式代入第一代图卷积式(10)中可得:
y=σ(Ugθ(Λ)UTx)=σ(Uk=0∑K−1θkΛkUx)=σ(k=0∑K−1θkLkx)(14)
其中σ 是激活函数,公式(14)的计算时间复杂度为O(K×N2) ,因为对于静态图而言L 是固定的,Lk 可以提前计算得到。如果使用稀疏矩阵乘法(pytorch 里有封装),时间复杂度是O(K×∣E∣) 其中∣E∣ 是稀疏矩阵中非零元的个数表示图中边的数量。 此时计算图卷积就不需要再乘上特征向量矩阵U,而是直接使用拉普拉斯矩阵L 的k 次方,就避免了进行特征分解。
因为Lk 当K 很大的时候并不稀疏(∣E∣ 接近N2 ),所以文中提出了利用切比雪夫多项式展开(任何k次多项式都可以通过切比雪夫多项式展开)来近似Lk ,切比雪夫多项式递归式为:
T0(x)=1T1(x)=xTk(x)=2xTk−1(x)−Tk−2(x)(15)
因此根据上式可知:
gθ(Λ)≈k=0∑K−1θkTk(Λ)(16)
其中,Λ~=λmax2Λ−IN;λmax是指拉普拉斯矩阵L的最大特征值。
PS:因为切比雪夫多项式的输入要在[−1,1] 之间,由于拉普拉斯矩阵的半正定性,所以所有的特征值都是大于等于 0 的,将其除以最大特征值可以将特征压缩到[0,1] 区间内,现在需要将其压缩到[−1,1],所以我们有:Λ~=λmax2Λ−IN。
我们将切比雪夫多项式引入到我们的卷积变换中:
gθ∗x≈k=0∑K−1θkTk(L)x(17)
其中,L~=λmax2L−IN 。这个表达式为拉普拉斯多项式中的一个k 阶近似函数,依赖于节点的k 阶邻域(k 步可达),时间复杂度与边呈线形相关。
总结第二代图卷积优点如下:
- 运算量相比第一代的O(N3) 可以降到O(K∣E∣)。
- 引入 K-hop 感受野,可以捕捉局部特征。
第三代图卷积
文章来源:《Semi-supervised Classification with Graph Convolutional Networks》
第二代图卷积解决了拉普拉斯矩阵特征分解的问题,但是在计算图卷积操作时矩阵乘法时间复杂度为O(N2),在此基础上优化 Kipf 等人提出了目前流行的 GCN。
GCN 通过式(17)进行多层卷积层进行叠加,而每层都会逐点进行非线性叠加。考虑到时间复杂度问题,令K=2,也就是说得到了一个拉普拉斯算子的二阶近似函数。既可以对网络进行卷积操作计算量增加不大。通过叠加层数可以提升模型的非线性。
归一化的拉普拉斯矩阵的特征值区间为[0,2],令λmax≈2,K=2 可得:
gθ∗x≈θ0x+θ1(L−IN)x=θ0x−θ1D−21AD−21x(18)
其中,θ0,θ1是切比雪夫系数且仅存的两个参数!
在 GCN 的训练过程中需要规范化参数避免过拟合,令θ=θ0′=−θ1′,由式可得:
gθ∗x≈θ(IN+D−21AD−21)x(19)
注意IN+D−21AD−21的特征值范围在 [0, 2] 之间,所以如果在很深的网络中会引起梯度爆炸的问题,需要再次进行一次归一化(Renormalization trick):
IN+D−21AD−21→D−21AD−21,Dii=j∑AijA=A+IN(20)
把上式从标量推广到矩阵,对于输入顶点的向量X∈RN×C ,其中N 为节点数,C 为顶点的特征向量维度,可得:
Z=D−21AD−21XΘ(21)
其中,Θ∈RC×F是参数矩阵,Z∈RN×F是卷积后的顶点特征,时间复杂度为O(∣E∣FC)。
根据上式一层卷积,多层图卷积计算公式公式为:
H(l+1)=σ(D−21AD−21H(l)W(l))(22)
其中,A=A+IN ,A 为邻接矩阵,IN 为单位矩阵,所以A为添加自连接的邻接矩阵;Dii=∑jAij ,D为顶点的度数矩阵;W(l) 为神经网络第l 层的权重矩阵;σ(⋅) 是激活函数;H(l)∈RN×D 是第l 层的激活矩阵,并且H(0)=X ,X 是由顶点的特征向量组成矩阵。
总结第三代图卷积:
- 令 K=1,相当于只考虑 1-hop 邻点。通过堆叠层数来增加感受野。
- 每层计算复杂度降低为O(∣E∣)。
总结
CNN 中的卷积无法直接应用于网络图中,所以引出了谱图理论和图中的傅里叶变换,进而定义图卷积的计算方法,最后结合深度学习发展出来 GCN。至此图卷积 GCN 的理论推导三部曲完成,接下来就开启应用篇吧!
联系作者
