图卷积网络GCN(Graph Convolution Network)(三)详解三代图卷积网络理论

原文首发于个人站点 图卷积网络GCN(Graph Convolution Network)(三)详解三代图卷积网络理论
公众号:【DreamHub】

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

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

卷积定义

在泛函分析中,卷积是透过两个函数 f f f g g g 生成第三个函数的一种数学算子,表示函数 f f f 与经过翻转和平移的 g g g 的乘积函数所围成的曲边梯形的面积,公式如下所示:
( f ∗ g ) ( t ) =  def  ∫ R n f ( τ ) g ( t − τ ) d τ ( 1 ) (f * g)(t) \stackrel{\text { def }}{=} \int_{\mathbb{R}^{n}} f(\tau) g(t-\tau) d \tau \quad\quad\quad (1) (fg)(t)= def Rnf(τ)g(tτ)dτ(1)

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


以上是连续函数的卷积运算,对于离散卷积公式定义如下:
( f ∗ g ) [ n ] = ∑ m = − ∞ ∞ f [ m ] g [ n − m ] = ∑ m = − ∞ ∞ f [ n − m ] g [ m ] ( 2 ) (f * g)[n]=\sum_{m=-\infty}^{\infty} f[m] g[n-m]=\sum_{m=-\infty}^{\infty} f[n-m] g[m] \quad\quad\quad (2) (fg)[n]=m=f[m]g[nm]=m=f[nm]g[m](2)

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

卷积定理:在适当条件下,两个信号的卷积的傅立叶变换等于它们傅立叶变换的点积。例如,一个域(如时域)的卷积等于另一个域(如频域)的点乘:
F { f ∗ g } = F { f } ⋅ F { g } ( 3 ) \mathcal{F}\{f * g\}=\mathcal{F}\{f\} \cdot \mathcal{F}\{g\} \quad\quad\quad (3) F{fg}=F{f}F{g}(3)

如果以 F − 1 \mathcal{F}^{-1} F1 表示傅里叶逆变换,那么卷积计算可以重新表示为:
f ∗ g = F − 1 { F { f } ⋅ F { g } } ( 4 ) f * g=\mathcal{F}^{-1}\{\mathcal{F}\{f\} \cdot \mathcal{F}\{g\}\} \quad\quad\quad (4) fg=F1{F{f}F{g}}(4)

PS:利用卷积定理可以简化卷积的运算量。对于一个长度为 n n n 的序列,按照卷积的定义来计算则需要做 2 n − 1 2n-1 2n1 组对位乘法,即时间复杂度为 O ( n 2 ) O(n^2) O(n2) ;而利用傅立叶变换后,只需要计算一组对位乘法,而且离散傅立叶变换有快速的算法(快速傅立叶变换),所以总的计算复杂度为 O ( n log ⁡ n ) O(n\log n) O(nlogn)

图卷积

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

根据公式 (4)与文章图卷积网络GCN(Graph Convolution Network)(二)图上的傅里叶变换和逆变换 中图上的傅里叶变换公式,可得
( f ∗ h ) G = F − 1 [ F { f } ⋅ F { h } ] = F − 1 [ U T f ⋅ h ^ ] ( 5 ) \begin{aligned} (f * h)_{G} &=\mathcal{F}^{-1}[\mathcal{F}\{f\} \cdot \mathcal{F}\{h\}] \\ &=\mathcal{F}^{-1}\left[\mathbf{U}^{T} f \cdot \hat{h}\right] \end{aligned} \quad\quad\quad (5) (fh)G=F1[F{f}F{h}]=F1[UTfh^](5)

上式表示时域信号 f f f h h h 的卷积等价于将信号转换到傅立叶域做点乘后再逆变换回来。其中,向量 f f f 与向量 h ^ \hat{h} h^ 的元素点积,等价于将 h ^ \hat{h} h^ 组织成对角矩阵的形式进行矩阵乘法,可得:
( f ∗ h ) G = F − 1 [ U T f ⋅ h ^ ] = F − 1 [ diag ⁡ [ h ^ 1 , … , h ^ n ] U T f ] ( 6 ) \begin{aligned} (f * h)_{G} &=\mathcal{F}^{-1}\left[\mathbf{U}^{T} f \cdot \hat{h}\right] \\ &=\mathcal{F}^{-1}\left[\operatorname{diag}\left[\hat{h}_{1}, \ldots, \hat{h}_{n}\right] \mathbf{U}^{T} f\right] \end{aligned}\quad\quad\quad (6) (fh)G=F1[UTfh^]=F1[diag[h^1,,h^n]UTf](6)

根据图上的逆变换计算公式,上式做成 U \mathbf{U} U可得:
( f ∗ h ) G = U diag ⁡ [ h ^ 1 , … , h ^ n ] U T f ( 7 ) (f * h)_{G}=\mathbf{U} \operatorname{diag}\left[\hat{h}_{1}, \ldots, \hat{h}_{n}\right] \mathbf{U}^{T} f\quad\quad\quad (7) (fh)G=Udiag[h^1,,h^n]UTf(7)

也可以写成写成矩阵形式为:
( f ∗ h ) G = U ( ( U T f ) ( U T h ) ) ( 8 ) (f*h)_G=\mathbf{U} ((\mathbf{U} ^Tf)(\mathbf{U} ^Th)) \quad\quad\quad (8) (fh)G=U((UTf)(UTh))(8)

目前先不写成式 (8) 的形式,是因为在 GCN 中我们的卷积核是可训练并且参数共享的,所以在此我们可以直接令 diag ⁡ [ h ^ 1 , … , h ^ n ] = diag ⁡ [ θ 1 , … , θ n ] = g θ ( 9 ) \operatorname{diag}\left[\hat{h}_{1}, \ldots, \hat{h}_{n}\right] =\operatorname{diag}\left[\theta_{1}, \ldots, \theta_{n}\right] = g_{\theta} \quad\quad\quad (9) diag[h^1,,h^n]=diag[θ1,,θn]=gθ(9)

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

第一代图卷积

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

第一代图卷积的计算方法就直接根据式(7)(9)推出
y = σ ( U g θ U T x ) = σ ( U [ θ 1 θ 2 ⋯ θ N ] U T x ) ( 10 ) y=\sigma\left(\mathbf{U}g_{\theta}\mathbf{U}^{T} x\right)= \sigma (\mathbf{U} \begin{bmatrix} {{\theta_1}}{\quad}{\quad}{\quad}{\quad}\\ {{\theta_2}}{\quad}{\quad}\\ {{\quad}\cdots}\\ {{\quad}{\quad}{\quad}{\quad}{\theta_N}}\\ \end{bmatrix} \mathbf{U}^Tx) \quad\quad\quad (10) y=σ(UgθUTx)=σ(Uθ1θ2θNUTx)(10)

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

  1. 没有local信息。每次卷积都是所有顶点都参与运算,没有实现局部卷积和参数共享。
  2. 运算量大。每次卷积都要进行拉普拉斯矩阵分解和矩阵相乘,计算复杂度为 O ( N 3 ) O(N^3) O(N3)
  3. 参数量大。每个卷积核参数量为 O ( N ) O(N) O(N)

第二代图卷积

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

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

首先回顾下图傅里叶计算公式:
F T ( λ k ) = g ^ k = ∑ i = 1 N g ( i ) u k ( i ) ( 11 ) \mathcal{F}_{T}\left(\lambda_{k}\right)=\hat{g}_{k}=\sum_{i=1}^{N} g(i) u_{k}(i) \quad\quad\quad (11) FT(λk)=g^k=i=1Ng(i)uk(i)(11)

可知函数和特征值密切相关,令 g θ g_{\theta} gθ 为拉普拉斯矩阵 L L L 的特征值函数 g θ ( Λ ) g_{\theta}(\Lambda) gθ(Λ)
y = σ ( U g θ U T x ) = σ ( U g θ ( Λ ) U T x ) ( 12 ) y=\sigma\left(\mathbf{U} g_{\theta} \mathbf{U}^{T} x\right)=\sigma\left(\mathbf{U} g_{\theta}(\Lambda) \mathbf{U}^{T} x\right) \quad\quad\quad (12) y=σ(UgθUTx)=σ(Ugθ(Λ)UTx)(12)

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

  • 不具备局部连接性;
  • 时间复杂度为 O ( n ) O(n) O(n);

为了克服上述缺陷引入 K K K 阶多项式:
g θ ( Λ ) ≈ ∑ k = 0 K − 1 θ k Λ k ( 13 ) g_{\theta}(\Lambda) \approx \sum_{k=0}^{K-1} \theta_{k} \Lambda^{k}\quad\quad\quad (13) gθ(Λ)k=0K1θkΛk(13)

其中,参数 θ k ∈ R K \theta_k\in R^K θkRK 是多项式系数,因此滤波器具有了 K K K 阶局部性,复杂度也降低到 O ( K ) O(K) O(K)

将式代入第一代图卷积式(10)中可得:
y = σ ( U g θ ( Λ ) U T x ) = σ ( U ∑ k = 0 K − 1 θ k Λ k U x ) = σ ( ∑ k = 0 K − 1 θ k L k x ) ( 14 ) y=\sigma\left(\mathbf{U} g_{\theta}(\Lambda) \mathbf{U}^{T} x\right)=\sigma\left(\mathbf{U} \sum_{k=0}^{K-1} \theta_{k} \Lambda^{k} \mathbf{U} x\right)=\sigma\left(\sum_{k=0}^{K-1} \theta_{k} L^{k} x\right)\quad\quad\quad (14) y=σ(Ugθ(Λ)UTx)=σ(Uk=0K1θkΛkUx)=σ(k=0K1θkLkx)(14)

其中 σ \sigma σ 是激活函数,公式(14)的计算时间复杂度为 O ( K × N 2 ) O(K×N^2) O(K×N2) ,因为对于静态图而言 L L L 是固定的, L k L^k Lk 可以提前计算得到。如果使用稀疏矩阵乘法(pytorch里有封装),时间复杂度是 O ( K × ∣ E ∣ ) O(K×|E|) O(K×E) 其中 ∣ E ∣ |E| E 是稀疏矩阵中非零元的个数表示图中边的数量。 此时计算图卷积就不需要再乘上特征向量矩阵 U \mathbf{U} U,而是直接使用拉普拉斯矩阵 L L L k k k 次方,就避免了进行特征分解。

因为 L k L^k Lk K K K 很大的时候并不稀疏( ∣ E ∣ |E| E 接近 N 2 N^2 N2 ),所以文中提出了利用切比雪夫多项式展开(任何 k k k次多项式都可以通过切比雪夫多项式展开)来近似 L k L^k Lk ,切比雪夫多项式递归式为:
T 0 ( x ) = 1 T 1 ( x ) = x T k ( x ) = 2 x T k − 1 ( x ) − T k − 2 ( x ) ( 15 ) T_0(x)=1\\T_1(x)=x\\T_k(x)=2xT_{k-1}(x)-T_{k-2}(x) \quad\quad\quad (15) T0(x)=1T1(x)=xTk(x)=2xTk1(x)Tk2(x)(15)

因此根据上式可知:
g θ ( Λ ) ≈ ∑ k = 0 K − 1 θ k T k ( Λ ~ ) ( 16 ) g_{\theta}(\Lambda) \approx \sum_{k=0}^{K-1} \theta_{k} T_{k}(\widetilde{\Lambda})\quad\quad\quad (16) gθ(Λ)k=0K1θkTk(Λ )(16)

其中, Λ ~ = 2 λ max ⁡ Λ − I N \tilde{\Lambda}=\frac{2}{\lambda_{\max }} \Lambda-I_{N} Λ~=λmax2ΛIN; λ max ⁡ \lambda_{\max } λmax是指拉普拉斯矩阵 L L L的最大特征值。

PS:因为切比雪夫多项式的输入要在 [ − 1 , 1 ] [-1, 1] [1,1] 之间,由于拉普拉斯矩阵的半正定性,所以所有的特征值都是大于等于 0 的,将其除以最大特征值可以将特征压缩到 [ 0 , 1 ] [0,1] [0,1] 区间内,现在需要将其压缩到 [ − 1 , 1 ] [-1, 1] [1,1],所以我们有: Λ ~ = 2 λ max ⁡ Λ − I N \tilde{\Lambda}=\frac{2}{\lambda_{\max }} \Lambda-I_{N} Λ~=λmax2ΛIN

我们将切比雪夫多项式引入到我们的卷积变换中:
g θ ∗ x ≈ ∑ k = 0 K − 1 θ k T k ( L ~ ) x ( 17 ) g_{\theta} * x \approx \sum_{k=0}^{K-1} \theta_{k} T_{k}(\widetilde{L}) x \quad\quad\quad (17) gθxk=0K1θkTk(L )x(17)

其中, L ~ = 2 λ max ⁡ L − I N \tilde{L}=\frac{2}{\lambda_{\max }} L-I_{N} L~=λmax2LIN 。这个表达式为拉普拉斯多项式中的一个 k k k 阶近似函数,依赖于节点的 k k k 阶邻域( k k k 步可达),时间复杂度与边呈线形相关。

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

  • 运算量相比第一代的 O ( N 3 ) O(N^3) O(N3) 可以降到 O ( K ∣ E ∣ ) O(K|E|) O(KE)
  • 引入K-hop感受野,可以捕捉局部特征。

第三代图卷积

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

第二代图卷积解决了拉普拉斯矩阵特征分解的问题,但是在计算图卷积操作时矩阵乘法时间复杂度为 O ( N 2 ) O(N^2) O(N2),在此基础上优化Kipf等人提出了目前流行的 GCN。

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

归一化的拉普拉斯矩阵的特征值区间为 [ 0 , 2 ] [0, 2] [0,2],令 λ m a x ≈ 2 , K = 2 {\lambda}_{max} \approx 2, K=2 λmax2,K=2 可得:
g θ ∗ x ≈ θ 0 x + θ 1 ( L − I N ) x = θ 0 x − θ 1 D − 1 2 A D − 1 2 x ( 18 ) g_{\theta} * x \approx \theta_{0} x+\theta_{1}\left(L-I_{N}\right) x=\theta_{0} x-\theta_{1} D^{-\frac{1}{2}} A D^{-\frac{1}{2}} x\quad\quad\quad (18) gθxθ0x+θ1(LIN)x=θ0xθ1D21AD21x(18)

其中, θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1是切比雪夫系数且仅存的两个参数!

在GCN的训练过程中需要规范化参数避免过拟合,令 θ = θ 0 ′ = − θ 1 ′ \theta=\theta_{0}^{\prime}=-\theta_{1}^{\prime} θ=θ0=θ1,由式可得:
g θ ∗ x ≈ θ ( I N + D − 1 2 A D − 1 2 ) x ( 19 ) g_{\theta} * x \approx \theta\left(I_{N}+D^{-\frac{1}{2}} A D^{-\frac{1}{2}}\right) x\quad\quad\quad (19) gθxθ(IN+D21AD21)x(19)

注意 I N + D − 1 2 A D − 1 2 I_{N}+D^{-\frac{1}{2}} A D^{-\frac{1}{2}} IN+D21AD21的特征值范围在 [0, 2] 之间,所以如果在很深的网络中会引起梯度爆炸的问题,需要再次进行一次归一化(Renormalization trick):
I N + D − 1 2 A D − 1 2 → D ~ − 1 2 A ~ D ~ − 1 2 , D ~ i i = ∑ j A ~ i j A ~ = A + I N ( 20 ) I_{N}+D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \rightarrow \widetilde{D}^{-\frac{1}{2}} \widetilde{A} \widetilde{D}^{-\frac{1}{2}} , \widetilde{D}_{i i}=\sum_{j} \widetilde{A}_{i j} \widetilde{A}=A+I_{N}\quad\quad\quad (20) IN+D21AD21D 21A D 21,D ii=jA ijA =A+IN(20)

把上式从标量推广到矩阵,对于输入顶点的向量 X ∈ R N × C X \in R^{N \times C} XRN×C ,其中 N N N 为节点数, C C C 为顶点的特征向量维度,可得:
Z = D ~ − 1 2 A ~ D ~ − 1 2 X Θ ( 21 ) Z=\widetilde{D}^{-\frac{1}{2}} \widetilde{A} \widetilde{D}^{-\frac{1}{2}} X \Theta\quad\quad\quad (21) Z=D 21A D 21XΘ(21)

其中, Θ ∈ R C × F \Theta \in R^{C \times F} ΘRC×F是参数矩阵, Z ∈ R N × F Z \in R^{N \times F} ZRN×F是卷积后的顶点特征,时间复杂度为 O ( ∣ E ∣ F C ) O(|E|FC) O(EFC)

根据上式一层卷积,多层图卷积计算公式公式为:
H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) ( 22 ) H^{(l+1)}=\sigma\left(\widetilde{D}^{-\frac{1}{2}} \widetilde{A} \widetilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)}\right)\quad\quad\quad (22) H(l+1)=σ(D 21A D 21H(l)W(l))(22)

其中, A ~ = A + I N \widetilde{A}=A+I_{N} A =A+IN A A A 为邻接矩阵, I N I_N IN 为单位矩阵,所以 A ~ \widetilde{A} A 为添加自连接的邻接矩阵; D ~ i i = ∑ j A ~ i j \widetilde{D}_{i i}=\sum_{j} \widetilde{A}_{i j} D ii=jA ij D ~ \widetilde{D} D 为顶点的度数矩阵; W ( l ) W^{(l)} W(l) 为神经网络第 l l l 层的权重矩阵; σ ( ⋅ ) \sigma(\cdot) σ() 是激活函数; H ( l ) ∈ R N × D H^{(l)} \in R^{N \times D} H(l)RN×D 是第 l l l 层的激活矩阵,并且 H ( 0 ) = X H^{(0)}=X H(0)=X X X X 是由顶点的特征向量组成矩阵。

总结第三代图卷积:

  • 令K=1,相当于只考虑1-hop 邻点。通过堆叠层数来增加感受野。
  • 每层计算复杂度降低为 O ( ∣ E ∣ ) O(|E|) O(E)

总结

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

关注作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值