[GCN] 图卷积知识梳理 -持续更新

图卷积知识梳理

文章目录

  • 图卷积知识梳理
      • 1. 为什么 Graph Laplacian L = D − A L=D-A L=DA ——差分的方式理解
      • 2. 为什么是 Graph Laplacian L L L —— Fourier变换的本质在Graph上的推广
      • 3. 如何使用 Graph Laplacian L L L —— 特征分解
      • 4. Graph Laplacian L L L 的特征分解 ⟹ \Longrightarrow Graph上的Fourier变换
      • 5. Graph上的Fourier变换 ⟹ \Longrightarrow 图卷积
      • 6. 为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?特征值表示频率?
        • 6.1 为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?
        • 6.2 怎么理解拉普拉斯矩阵的特征值表示频率?
      • 7. GCN的演变
        • 7.1 第一代GCN
        • 7.2 Chebyshev谱CNN(ChebNet)
        • 7.3 一阶ChebNet(1stChebNet)
      • 8. 行文到此的GCN的优点和不足
        • GCN的优点
        • GCN的不足

GCN相对来说还是比较新的。第一代GCN在2014年的论文 Spectral Networks and Deep Locally Connected Networks on Graphs 中被提出。2017年,一阶ChebNet(1stChebNet)在堪称GCN的开山之作的论文 Semi-supervised classification with Graph convolutional networks 中被提出,之后后面很多变种都是基于这篇文章的。


1. 为什么 Graph Laplacian L = D − A L=D-A L=DA ——差分的方式理解

参考知乎:图拉普拉斯算子为何定义为D-W,文章从类比的角度,以差分的思路解释了 L L L = D − A D-A DA 的原因。

对 Graph Laplacian L L L 做操作的方法,都可以归类为 GCN 的 spectral 的方法。

Graph Laplacian L L L (图拉普拉斯) 的来源是拉普拉斯算子。拉普拉斯算子数学定义是这样的:
Δ = ∑ i δ 2 δ x i 2 (1.1) \Delta=\sum_i \frac{\delta^2}{\delta x_i^2} \tag{1.1} Δ=iδxi2δ2(1.1)
含义是非混合二阶偏导数的和

类比图像处理,图像是一种离散数据,那么其拉普拉斯算子必然要进行离散化。拉普拉斯矩阵也叫做离散的拉普拉斯算子

从导数的定义说起。对于一维信号 f ( x ) f(x) f(x)(比如语音信号):
f ′ ( x ) = δ f ( x ) δ x ≈ f ( x + 1 ) − f ( x ) (1.2) \begin{aligned} f'(x) &=\frac{\delta f(x)}{\delta x} \\ &\approx f(x+1)-f(x) \end{aligned} \tag{1.2} f(x)=δxδf(x)f(x+1)f(x)(1.2)
那么其拉普拉斯算子为:
δ 2 f ( x ) δ x 2 = f ′ ′ ( x ) ≈ f ′ ( x ) − f ′ ( x − 1 ) ≈ [ f ( x + 1 ) − f ( x ) ] − [ f ( x ) − f ( x − 1 ) ] = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) (1.3) \begin{aligned} \frac{\delta^2 f(x)}{\delta x^2} &= f''(x) \\ &\approx f'(x)-f'(x-1) \\ &\approx [f(x+1)-f(x)] - [f(x)-f(x-1)] \\ &=f(x+1) + f(x-1) - 2f(x) \end{aligned} \tag{1.3} δx2δ2f(x)=f(x)f(x)f(x1)[f(x+1)f(x)][f(x)f(x1)]=f(x+1)+f(x1)2f(x)(1.3)
结论1:二阶导数近似等于其二阶差分。

结论2:二阶导数等于其在所有自由度上微扰之后获得的增益。一维函数其自由度可以理解为2,分别是+1和-1两个方向。

对于二维信号(比如图像)来说,其有两个方向(4个自由度)可以变化,即如果对(x,y)处的像素进行扰动,其可以变为四种状态(x+1,y),(x-1,y),(x,y+1),(x,y-1) 。当然了,如果将对角线方向也认为是一个自由度的话,会再增加几种状态(x+1,y+1),(x+1,y-1),(x-1,y+1),(x-1,y-1),事实上图像处理上正是这种。

以4个自由度来说,其拉普拉斯算子为:
Δ = δ 2 f ( x , y ) δ x 2 + δ 2 f ( x , y ) δ y 2 ≈ [ f ( x + 1 , y ) + f ( x − 1 , y ) − 2 f ( x , y ) ] + [ f ( x , y + 1 ) + f ( x , y − 1 ) − 2 f ( x , y ) ] = f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y + 1 ) + f ( x , y − 1 ) − 4 f ( x , y ) (1.4) \begin{aligned} \Delta &= \frac{\delta^2 f(x,y)}{\delta x^2} + \frac{\delta^2 f(x,y)}{\delta y^2}\\ &\approx [f(x+1,y) + f(x-1,y) - 2f(x,y)] + [f(x,y+1) + f(x,y-1) - 2f(x,y)]\\ &=f(x+1,y) + f(x-1,y) + f(x,y+1) + f(x,y-1) - 4f(x,y) \end{aligned} \tag{1.4} Δ=δx2δ2f(x,y)+δy2δ2f(x,y)[f(x+1,y)+f(x1,y)2f(x,y)]+[f(x,y+1)+f(x,y1)2f(x,y)]=f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)4f(x,y)(1.4)
上式可以理解为,在图像上某一点,其拉普拉斯算子的值,即为对其进行扰动,使其变化到相邻像素后得到的增益。

这给我们一种形象的结论:拉普拉斯算子就是在所有自由度上进行微小变化后获得的增益。

那么推广到Graph,对于有 N N N个节点的Graph,设节点为 1 , ⋯   , N 1,\cdots,N 1,,N 吧,且其邻接矩阵为 W W W

那么Graph的自由度**最多为N。**即任意两个节点之间都有一条边,那么对一个节点进行微扰,它可能变成任意一个节点。

上面的函数f就理所当然是一个 N N N维的向量,即:
f = ( f 1 , ⋯   , f N ) f=(f_1 , \cdots, f_N) f=(f1,,fN)
其中 f i f_i fi 表示函数 f f f 在节点 i i i 的值 (其实为该节点的feature)。类比 f ( x , y ) f(x,y) f(x,y) 即为 f f f ( x , y ) (x,y) (x,y) 处的值。

结合之前的结论,拉普拉斯算子就是在所有自由度上进行微小变化后获得的增益。

对于Graph,文章提出使用边权相关 W i , j W_{i,j} Wi,j 来表征从节点 i i i 变化到节点 j j j 增益 f j − f i f_j - f_i fjfi

那么,对于节点i来说,其变化的增益就是
∑ j ∈ N i W i , j [ f j − f i ] \sum_{j \in \mathcal{N}_i} W_{i,j} [f_j-f_i] jNiWi,j[fjfi]
所以,对于Graph来说,其拉普拉斯算子如下:
Δ = ∑ i δ 2 f δ i 2 ≈ ∑ j ∈ N i W i , j [ f j − f i ] (1.5) \begin{aligned} \Delta &= \sum _i \frac{\delta^2 f}{\delta i^2} \\ &\approx \sum_{j \in \mathcal{N}_i} W_{i,j} [f_j-f_i] \end{aligned} \tag{1.5} Δ=iδi2δ2fjNiWi,j[fjfi](1.5)
由于节点 i i i j j j 不直接相邻的话, W i , j W_{i,j} Wi,j 为0,所以省略上式的 j ∈ N i j \in \mathcal{N}_i jNi ,得到:
∑ j ∈ N i W i , j [ f j − f i ] = ∑ j W i , j f j − ∑ j W i , j f i (1.6) \begin{aligned} \sum_{j \in \mathcal{N}_i} W_{i,j} [f_j-f_i] &= \sum_j W_{i,j}f_j - \sum_j W_{i,j}f_i \\ \end{aligned} \tag{1.6} jNiWi,j[fjfi]=jWi,jfjjWi,jfi(1.6)
对于前一项 $ \sum_j W_{i,j}f_j , , W_{i,j}$ 和 f j f_j fj 都与求和变量 j j j 有关,而积分结果仅与 i i i 有关,所以:
∑ j W i , j f j = ( W f ) i \sum_j W_{i,j}f_j = (Wf)_i jWi,jfj=(Wf)i
对于后一项 ∑ j W i , j f i \sum_j W_{i,j}f_i jWi,jfi,仅 W i , j W_{i,j} Wi,j 与求和变量 j j j 有关,而积分结果仅与 i i i 有关,所以:
∑ j W i , j f i = f i ∑ j W i , j = f i D = ( D f ) i \begin{aligned} \sum_j W_{i,j}f_i &= f_i \sum_j W_{i,j} \\ &=f_i D \\ &=(Df)_i \end{aligned} jWi,jfi=fijWi,j=fiD=(Df)i

所以 Equation 1.6 可以化简为:
∑ j ∈ N i W i , j [ f j − f i ] = ∑ j W i , j f j − ∑ j W i , j f i = ( W f ) i − ( D f ) i = ( W − D ) f i (1.7) \begin{aligned} \sum_{j \in \mathcal{N}_i} W_{i,j} [f_j-f_i] &= \sum_j W_{i,j}f_j - \sum_j W_{i,j}f_i \\ &= (Wf)_i - (Df)_i \\ &=(W-D) f_i \end{aligned} \tag{1.7} jNiWi,j[fjfi]=jWi,jfjjWi,jfi=(Wf)i(Df)i=(WD)fi(1.7)
即:
( Δ f ) i = [ ( W − D ) f ] i (1.8) (\Delta f)_i = [(W-D)f]_i \tag{1.8} (Δf)i=[(WD)f]i(1.8)
对于任意的 i i i 成立,那么也就是:
Δ f ≡ ( W − D ) f (1.9) \Delta f \equiv (W-D)f \tag{1.9} Δf(WD)f(1.9)
也就是图上的拉普拉斯算子应该定义为 W − D W-D WD

对于有权重图,邻接矩阵 A A A 以权重 W W W 的形式表示;对于无权重图来说, A A A W W W 是一个东西。

关于 L = D − A L=D-A L=DA,还是 L = A − D L=A-D L=AD 的问题,其实二者都一样。原因在下一节中解释。

Graph Laplacian L L L 还有另一种常见的定义方式,即对称归一化的拉普拉斯矩阵 (Symmetric normalized Laplacian):
L s y s = D − 1 / 2 L D − 1 / 2 = I − D − 1 / 2 A D − 1 / 2 (1.10) L^{sys}=D^{−1/2} L D^{−1/2}=I−D^{−1/2}AD^{−1/2} \tag{1.10} Lsys=D1/2LD1/2=ID1/2AD1/2(1.10)
上式是 L = D − A L=D-A L=DA 的归一化形式,本质上还是 L = D − A L=D-A L=DA,推导过程如下:
L = D − 1 / 2 ( D − A ) D − 1 / 2 = D − 1 / 2 D D − 1 / 2 − D − 1 / 2 A D − 1 / 2 = I N − D − 1 / 2 A D − 1 / 2 (1.11) \begin{aligned} L &= D^{-1/2} (D-A) D^{-1/2}\\ &= D^{-1/2}D D^{-1/2} - D^{-1/2}A D^{-1/2} \\ &=I_N- D^{-1/2}A D^{-1/2} \end{aligned} \tag{1.11} L=D1/2(DA)D1/2=D1/2DD1/2D1/2AD1/2=IND1/2AD1/2(1.11)
至此此节结束。


2. 为什么是 Graph Laplacian L L L —— Fourier变换的本质在Graph上的推广

参考博客:图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导-持续更新

  • 5.傅里叶变换
  • 6.Graph上的傅里叶变换及卷积
  • 7.为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?特征值表示频率?

Graph Laplacian L L L 被应用于GCN的 spectral 方法。这种思路就是希望借助图谱的理论来实现拓扑图上的卷积操作,即根据卷积定理,借用频域的乘积来实现空间域的卷积。

为什么 Graph 的卷积操作要用 Graph Laplacian L L L 来实现呢?

这一节,我们通过类比的方式,将传统Fourier变换推广到Graph上,即从拉普拉斯算子 Δ \Delta Δ 的特征函数到拉普拉斯矩阵 L L L 的特征向量

要理解GCN中的卷积操作 (spectral 方法),首先要从最简单的传统傅里叶变换说起:
F ( ω ) = F [ f ( x ) ] = ∫ − ∞ + ∞ f ( x ) e − i ω x d x (2.1) F( \omega ) = \mathcal{F}[f(x)] =∫_{−∞}^{+∞}f(x) e ^{−iωx} dx \tag{2.1} F(ω)=F[f(x)]=+f(x)eiωxdx(2.1)
对信号 f ( x ) f(x) f(x) 的傅立叶变换 F ( ω ) F(\omega) F(ω) 形式上 f ( x ) f(x) f(x) 与基函数 e − i ω x e^{-i\omega x} eiωx 的积分,而 e − i ω x e^{-i\omega x} eiωx 就是拉普拉斯算子 Δ \Delta Δ 的特征函数传统傅立叶变换的基,就是拉普拉斯矩阵的一组特征向量。

由此我们得到第一个重要结论

傅里叶变换本质上将函数 f ( x ) f(x) f(x) 映射到了以拉普拉斯算子 Δ \Delta Δ 的特征函数 e − i ω x e^{-i\omega x} eiωx 为基向量的空间中,即 original domain 的信号通过**拉普拉斯算子 Δ \Delta Δ 的特征函数 (基向量) **映射到 spectral domain

所以,把传统的傅里叶变换以及卷积迁移到Graph上来,核心工作其实就是找到映射所需的基向量

传统傅里叶变换的基向量是拉普拉斯算子 Δ \Delta Δ 的特征函数,对应到Graph上,Graph的傅里叶变换的基向量就是拉普拉斯矩阵 L L L 的特征向量 U U U

[GCN] 图卷积知识梳理 -持续更新_第1张图片

至此, 就解决了为什么要在图卷积中使用 Graph Laplacian 的问题。

至于它为什么好用,见 Section 6


3. 如何使用 Graph Laplacian L L L —— 特征分解

参考博客:图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导-持续更新

  • 3.什么是拉普拉斯矩阵?

使用方法当然就是求 Graph Laplacian L L L 的特征向量,目的是实现Fourier变换,从而将空间域的信号转变到频域。

这要从 Graph Laplacian L L L 的性质出发。

无向图的拉普拉斯矩阵 L L L 有以下性质:

  • 拉普拉斯矩阵是半正定对称矩阵,可以进行特征分解(谱分解)。(最小特征值大于等于0)
  • 特征值中0出现的次数就是图连通区域的个数。
  • 最小特征值是0,因为拉普拉斯矩阵(普通形式: L = D − A L = D − A L = D − A L=D−A L=D-AL=D−A L=DAL=DAL=DA)每一行的和均为0,并且最小特征值对应的特征向量是每个值全为1的向量
  • 最小非零特征值是图的代数连通度。

求 Graph Laplacian L L L 的特征向量的方法,就是特征分解(谱分解)。

特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。只有对可对角化矩阵或有n个线性无关的特征向量的矩阵才可以施以特征分解。

不是所有的矩阵都可以特征分解,其充要条件n阶方阵存在n个线性无关的特征向量

但是 Graph Laplacian L L L 是半正定矩阵(半正定矩阵本身就是对称矩阵),有如下三个性质:

  • 对称矩阵一定n个线性无关的特征向量
  • 半正定矩阵的特征值一定非负
  • 对阵矩阵的不同特征值对应的特征向量相互正交,这些正交的特征向量构成的矩阵为正交矩阵。

由上拉普拉斯矩阵对称知一定可以谱分解,且分解后有特殊的形式。
L = U Λ U − 1 = U [ λ 1 ⋱ λ n ] U − 1 (3.1) L= U \Lambda U^{-1} = U \begin{bmatrix} \lambda_1 \\ & \ddots & \\ & & \lambda_n \end{bmatrix} U^{-1} \tag{3.1} L=UΛU1=Uλ1λnU1(3.1)
其中 U = ( u 1 ⃗ , u 2 ⃗ , ⋯   , u n ⃗ ) U=(\vec{u_1},\vec{u_2},\cdots,\vec{u_n}) U=(u1 ,u2 ,,un )是列向量为单位特征向量的矩阵,也就说 $ \vec{u_l} $是列向量,Λ是n个特征值构成的对角阵。

由于 U U U 是正交矩阵,即 U U T = E UU^{T}=E UUT=E ,所以特征分解又可以写成:
L = U Λ U − 1 = U Λ U T (3.2) L= U \Lambda U^{-1} = U \Lambda U^{T} \tag{3.2} L=UΛU1=UΛUT(3.2)


4. Graph Laplacian L L L 的特征分解 ⟹ \Longrightarrow Graph上的Fourier变换

结合传统傅里叶变换Graph上的Fourier变换为
f ^ = U T f (4.1) \widehat{f} = U^T f \tag{4.1} f =UTf(4.1)
表示为矩阵形式为:
[ f ^ ( λ 1 ) f ^ ( λ 2 ) ⋮ f ^ ( λ N ) ] = [ u 1 ( λ 1 ) u 1 ( λ 2 ) ⋯ u 1 ( λ N ) u 2 ( λ 1 ) u 2 ( λ 2 ) ⋯ u 2 ( λ N ) ⋮ ⋮ ⋱ ⋮ u N ( λ 1 ) u N ( λ 2 ) ⋯ u N ( λ N ) ] [ f ( 1 ) f ( 2 ) ⋮ f ( N ) ] (4.2) \begin{bmatrix} \widehat{f}(\lambda_1) \\ \widehat{f}(\lambda_2) \\ \vdots \\ \widehat{f}(\lambda_N) \end{bmatrix}= \begin{bmatrix} u_1(\lambda_1) &u_1(\lambda_2) & \cdots & u_1(\lambda_N) \\ u_2(\lambda_1) &u_2(\lambda_2) & \cdots & u_2(\lambda_N) \\ \vdots & \vdots & \ddots & \vdots\\ u_N(\lambda_1) &u_N(\lambda_2) & \cdots & u_N(\lambda_N) \\ \end{bmatrix} \begin{bmatrix} f(1) \\ f(2) \\ \vdots \\ f(N) \end{bmatrix} \tag{4.2} f (λ1)f (λ2)f (λN)=u1(λ1)u2(λ1)uN(λ1)u1(λ2)u2(λ2)uN(λ2)u1(λN)u2(λN)uN(λN)f(1)f(2)f(N)(4.2)

  • 空间域的信号 f f f 的自变量为 1 , ⋯   , N 1,\cdots,N 1,,N,分别表示 N N N 个节点的feature。
  • 频域的信号 f ^ \widehat{f} f 的自变量为 λ 1 , ⋯   , λ N \lambda_1, \cdots, \lambda_N λ1,,λN,表示相应特征值 λ i \lambda_i λi 与整个空间域信号 f f f 作乘积的结果。

相应的,Graph上的Fourier反变换为
f = U f ^ (4.3) f = U \widehat{f} \tag{4.3} f=Uf (4.3)
表示为矩阵形式为:
[ f ( 1 ) f ( 2 ) ⋮ f ( N ) ] = [ u 1 ( λ 1 ) u 2 ( λ 2 ) ⋯ u N ( λ N ) u 1 ( λ 1 ) u 2 ( λ 2 ) ⋯ u N ( λ N ) ⋮ ⋮ ⋱ ⋮ u 1 ( λ 1 ) u 2 ( λ 2 ) ⋯ u N ( λ N ) ] [ f ^ ( λ 1 ) f ^ ( λ 2 ) ⋮ f ^ ( λ N ) ] (4.4) \begin{bmatrix} f(1) \\ f(2) \\ \vdots \\ f(N) \end{bmatrix}= \begin{bmatrix} u_1(\lambda_1) &u_2(\lambda_2) & \cdots & u_N(\lambda_N) \\ u_1(\lambda_1) &u_2(\lambda_2) & \cdots & u_N(\lambda_N) \\ \vdots & \vdots & \ddots & \vdots\\ u_1(\lambda_1) &u_2(\lambda_2) & \cdots & u_N(\lambda_N) \\ \end{bmatrix} \begin{bmatrix} \widehat{f}(\lambda_1) \\ \widehat{f}(\lambda_2) \\ \vdots \\ \widehat{f}(\lambda_N) \end{bmatrix} \tag{4.4} f(1)f(2)f(N)=u1(λ1)u1(λ1)u1(λ1)u2(λ2)u2(λ2)u2(λ2)uN(λN)uN(λN)uN(λN)f (λ1)f (λ2)f (λN)(4.4)


5. Graph上的Fourier变换 ⟹ \Longrightarrow 图卷积

卷积定理:
F ( f ( t ) ∗ g ( t ) ) = F ( ω ) ⋅ G ( ω ) (5.1) \mathcal{F} (f(t)*g(t)) = F (\omega)·G(\omega) \tag{5.1} F(f(t)g(t))=F(ω)G(ω)(5.1)
所以Graph上的卷积可以表示为:
( f ∗ g ) G = U [ ( U T g ) ⊙ ( U T f ) ] (5.2) (f*g)_G = U[ (U^T g) \odot (U^T f) ] \tag{5.2} (fg)G=U[(UTg)(UTf)](5.2)
如果把 U T g U^Tg UTg 整体看作可学习的卷积核(频域滤波器),这里我们把它写作 g θ g_\theta gθ。最终图上的卷积公式即是:
( f ∗ g ) G = U g θ U T f (5.3) (f*g)_G = U g_\theta U^T f \tag{5.3} (fg)G=UgθUTf(5.3)
有的地方,还把 g θ = U T g g_\theta = U^Tg gθ=UTg 写成对角矩阵的形式,即定义一个滤波 g θ = d i a g ( U T g ) g_\theta = diag(U^Tg) gθ=diag(UTg),则图卷积就可以表示为:
f ∗ g θ = U g θ U T f = U [ g ^ ( λ 1 ) ⋱ g ^ ( λ N ) ] U T f (5.4) f*g_\theta = Ug_\theta U^Tf = U \begin{bmatrix} \widehat{g}(\lambda_1) \\ & \ddots & \\ & & \widehat{g}(\lambda_N) \end{bmatrix} U^Tf \tag{5.4} fgθ=UgθUTf=Ug (λ1)g (λN)UTf(5.4)


6. 为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?特征值表示频率?

参考博客:图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导-持续更新

  • 7.为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?特征值表示频率?

6.1 为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?

傅里叶变换一个本质理解就是:把任意一个函数表示成了若干个正交函数(由sin,cos 构成)的线性组合。

[GCN] 图卷积知识梳理 -持续更新_第2张图片

f f f 在Graph上傅里叶逆变换 f = U f ^ f=U \widehat{f} f=Uf 的矩阵形式 (Equation 4.4)
[ f ( 1 ) f ( 2 ) ⋮ f ( N ) ] = [ u 1 ( λ 1 ) u 2 ( λ 2 ) ⋯ u N ( λ N ) u 1 ( λ 1 ) u 2 ( λ 2 ) ⋯ u N ( λ N ) ⋮ ⋮ ⋱ ⋮ u 1 ( λ 1 ) u 2 ( λ 2 ) ⋯ u N ( λ N ) ] [ f ^ ( λ 1 ) f ^ ( λ 2 ) ⋮ f ^ ( λ N ) ] (4.4) \begin{bmatrix} f(1) \\ f(2) \\ \vdots \\ f(N) \end{bmatrix}= \begin{bmatrix} u_1(\lambda_1) &u_2(\lambda_2) & \cdots & u_N(\lambda_N) \\ u_1(\lambda_1) &u_2(\lambda_2) & \cdots & u_N(\lambda_N) \\ \vdots & \vdots & \ddots & \vdots\\ u_1(\lambda_1) &u_2(\lambda_2) & \cdots & u_N(\lambda_N) \\ \end{bmatrix} \begin{bmatrix} \widehat{f}(\lambda_1) \\ \widehat{f}(\lambda_2) \\ \vdots \\ \widehat{f}(\lambda_N) \end{bmatrix} \tag{4.4} f(1)f(2)f(N)=u1(λ1)u1(λ1)u1(λ1)u2(λ2)u2(λ2)u2(λ2)uN(λN)uN(λN)uN(λN)f (λ1)f (λ2)f (λN)(4.4)
可以看出,Graph傅里叶变换把Graph上定义的任意向量 f f f ,表示成了拉普拉斯矩阵 L L L 特征向量的线性组合,即:
f = f ^ ( λ 1 ) u 1 ( λ 1 ) + f ^ ( λ 2 ) u 2 ( λ 2 ) + ⋯ + f ^ ( λ n ) u n ( λ n ) (6.1) f = \widehat{f}(\lambda_1) u_1(\lambda_1) +\widehat{f}(\lambda_2) u_2(\lambda_2) +\cdots +\widehat{f}(\lambda_n) u_n(\lambda_n) \tag{6.1} f=f (λ1)u1(λ1)+f (λ2)u2(λ2)++f (λn)un(λn)(6.1)
那么:为什么graph上任意的向量f都可以表示成这样的线性组合?

原因在于 ( u 1 ⃗ , u 2 ⃗ , ⋯   , u n ⃗ ) (\vec{u_1},\vec{u_2},\cdots,\vec{u_n}) (u1 ,u2 ,,un ) 是graph上 n 维空间中的 n 个线性无关的正交向量(拉普拉斯矩阵是对称矩阵,必定可以进行特征分解,有n个线性无关的特征向量)。

由线性代数的知识可以知道:n 维空间中n 个线性无关的向量可以构成空间的一组基,而且拉普拉斯矩阵的特征向量还是一组正交基。

6.2 怎么理解拉普拉斯矩阵的特征值表示频率?

在Graph空间上无法可视化展示“频率”这个概念,那么从特征方程的角度上来抽象理解。如果通过类比的话,可以类比PCA算法对信息的保持。

将拉普拉斯矩阵 L L L 的 n 个非负实特征值,从小到大排列为 λ 1 ≤ λ 2 ≤ ⋯ ≤ λ N \lambda_1 \le \lambda_2 \le \cdots \le \lambda_N λ1λ2λN,而且最小的特征值 λ 1 \lambda_1 λ1 为0。因为 n 维的全1向量对应的特征值为0(由 L L L 的定义就可以得出):
L [ 1 1 ⋮ 1 ] = 0 (6.2) L \begin{bmatrix} 1 \\ 1\\ \vdots \\ 1 \end{bmatrix} =0 \tag{6.2} L111=0(6.2)
从特征方程的数学理解来看:
L u = λ u (6.3) Lu=\lambda u \tag{6.3} Lu=λu(6.3)
在由Graph确定的 n 维空间中,越小的特征值 λ i \lambda_i λi 表明:拉普拉斯矩阵 L L L 其所对应的基, u i u_i ui 上的分量、“信息”越少,那么当然就是可以忽略的部分了。

注:原博客将小的特征值理解为低频成份,本人认为这样理解不太妥当。因为对于图像和语音信号来说,低频成份是有用的信息,高频成份是可以忽略的细节信息。也就是说,低频成份承载的信息多,高频成份承载的信息少。

但是原博客的“小特征值对于的特征向量承载的信息少”这一结论,我认为是没有问题的。


7. GCN的演变

参考博客:图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导-持续更新

  • 8.深度学习中GCN的演变

最典型的 Graph Convolution 公式如下:
g θ ∗ x = U g θ U T x = U [ g ^ ( λ 1 ) ⋱ g ^ ( λ N ) ] U T x (7.1) g_{\theta} * x =U g_{\theta} U^Tx=U \begin{bmatrix} \widehat{g}(\lambda_1) \\ & \ddots & \\ & & \widehat{g}(\lambda_N) \end{bmatrix} U^T x \tag{7.1} gθx=UgθUTx=Ug (λ1)g (λN)UTx(7.1)
Deep learning 中的Convolution就是要设计含有trainable共享参数的kernel。而上式中 g θ g_{\theta} gθ 就是可训练的参数 (kernel) 。

上式计算量很大,原因有二:

  • 由于 Graph Laplacian L L L 的特征分解必定有 n 个线性无关的特征向量,特征向量矩阵 U U U 的复杂度是 O ( N 2 ) O(N^2) O(N2)
  • 对于大型图来说, L L L 特征值分解的计算量也很大

7.1 第一代GCN

Spectral networks and locally connected networks on graphs 论文中提出第一代GCN,将图卷积操作定义为:
x k + 1 , j = h ( V ∑ i = 1 f k − 1 F k , i , j V T x k , i ) , ( j = 1 … f k ) (7.2) x_{k+1,j}=h (V\sum_{i=1}^{f_{k-1}} F_{k,i,j}V^T x_{k,i}) ,(j=1…f_k) \tag{7.2} xk+1,j=h(Vi=1fk1Fk,i,jVTxk,i),(j=1fk)(7.2)

  • x k , i x_{k,i} xk,i:第 k k k 层的信号的第 i i i 个特征。
  • f k − 1 f_{k-1} fk1 是输入通道的数量, f k f_k fk 是输出通道的数量。
  • h h h:实值非线性激活函数。
  • V V Vgraph Laplacian L L L 的特征向量,由特征值排序。the eigenvectors of the graph Laplacian L L L, ordered by eigenvalue.
  • F k , i , j F_{k,i,j} Fk,i,j:是一个可学习参数的对角矩阵,初始化赋值然后利用误差反向传播进行调整。

第一代的参数方法存在着一些弊端,主要在于:

  1. 计算复杂

如果以单个图为样本,那么每个样本都需要进行 L L L 的特征分解求 U U U 矩阵;

每一次前向传播,都要计算 U U U d i a g ( θ l ) diag(\theta_l ) diag(θl) U T U^T UT 三者的乘积,特别是对于大规模的Graph,计算的代价较高,需要 O ( n 2 ) \mathcal{O}(n^2) O(n2) 的计算复杂度。

  1. 是非局部性连接的
  2. 卷积核需要N个参数 (参数数目与节点数相同),对于大型图操作会使得参数值过多

由于以上的缺点第二代的卷积核设计应运而生。

7.2 Chebyshev谱CNN(ChebNet)

Convolutional neural networks on graphs with fast localized spectral filtering 提出对下式:
KaTeX parse error: Undefined control sequence: \notag at position 37: …{\theta} U^Tx \̲n̲o̲t̲a̲g̲ ̲
中的滤波器以特征向量对角矩阵的切比雪夫多项式等效(利用Chebyshev多项式拟合卷积核的方法,来降低计算复杂度),也就是:
g θ = g θ ( Λ ) ≈ ∑ i = 0 K − 1 θ i T k ( Λ ~ ) (7.3) g_{\theta} = g_{\theta}( \Lambda ) \approx \sum_{i=0}^{K-1} \theta_{i} T_k(\widetilde{\Lambda}) \tag{7.3} gθ=gθ(Λ)i=0K1θiTk(Λ )(7.3)
其中:

  • Λ ~ = 2 Λ λ m a x − I N \widetilde{\Lambda} = \frac{2 \Lambda}{\lambda_{max}} - I_N Λ =λmax2ΛIN 为缩放后的特征向量矩阵,缩放后范围是[−1,1] ,单位矩阵的特征值是n重1,缩放的目的是为了满足Chebyshev多项式 T k ( x ) T_k(x) Tk(x) K − t h K^{-th} Kth 阶截断展开的条件 (即自变量范围需要在[−1,1]之间)
  • λ m a x \lambda_{max} λmax L L L 的最大特征值,也叫谱半径
  • θ ∈ R K \theta \in \R^K θRK 是切比雪夫系数的向量。
  • 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 0 ( x ) = 1 T_0(x)=1 T0(x)=1 T 1 ( x ) = x T_1(x)=x T1(x)=x

回到对信号x与滤波器 g θ g_{θ} gθ 的卷积的定义,则有下面这个重要的 Graph Convolution 公式:
g θ ∗ x = ∑ k = 0 K θ k T k ( L ~ ) x (7.4) g_{\theta} * x = \sum_{k=0}^{K} \theta_{k} T_k(\widetilde{L})x \tag{7.4} gθx=k=0KθkTk(L )x(7.4)
其中:

  • L ~ = 2 L λ m a x − I N = U Λ ~ U T \widetilde{L} = \frac{2 L}{\lambda_{max}} - I_N = U \widetilde{\Lambda} U^T L =λmax2LIN=UΛ UT
  • 易证 ( U Λ U T ) k = U Λ k U T (U\Lambda U^T)^k = U\Lambda^k U^T (UΛUT)k=UΛkUT

现在,相比于第一代GCN:

  • 此表达式现在是 K K K-localized,具有局部连接性,因为它是拉普拉斯算子中的 K − t h K^{-th} Kth阶多项式,即它仅取决于离中央节点 ( K t h K^{th} Kth 阶邻域) 最大 K K K 步的节点。

    关于为什么以Chebyshev多项式的 K − t h K^{-th} Kth 截断来拟合卷积核会导致 K K K-localized,我现在并不明白。询问了老师,得到的结果是 “就是L的幂次越高,就会引入越多的近邻参与计算。那个一阶切比雪夫,只有当前节点周围的几个节点被考虑进来。如果二阶的话,就会有更多的节点被考虑进来。”

  • T k ( L ~ ) x T_k(\widetilde{L})x Tk(L )x 的计算复杂度是 O ( ∣ E ∣ ) \mathcal{O}(|E|) O(E) ,,即与边数 E E E 呈线性关系,整个运算的复杂度是 $\mathcal{O}(K|E|) $,当graph是稀疏图的时候,计算加速尤为明显,这个时候复杂度远低于 O ( n 2 ) \mathcal{O}(n^2) O(n2)

Equation 7.3 到 Equation 7.4 的补充证明参见原博客。

7.3 一阶ChebNet(1stChebNet)

Semi-supervised classification with graph convolutional networks 这篇论文基于前面的工作,正式成为GCN的开山之作,后面很多变种都是基于这篇文章的。

该篇论文贡献有两点:

  • 作者对于直接操作于图结构数据的网络模型根据频谱图卷积(Hammond等人于2011年提出的Wavelets on graphs via spectral graph theory)使用一阶近似简化计算的方法,提出了一种简单有效的层式传播方法。
  • 作者验证了图结构神经网络模型可用于快速可扩展式的处理图数据中节点半监督分类问题,作者通过在一些公有数据集上验证了自己的方法的效率和准确率能够媲美现有的顶级半监督方法。

作者引入了一种一阶近似的ChebNet,在Equation 7.4
g θ ∗ x = ∑ k = 0 K θ k T k ( L ~ ) x (7.4) g_{\theta} * x = \sum_{k=0}^{K} \theta_{k} T_k(\widetilde{L})x \tag{7.4} gθx=k=0KθkTk(L )x(7.4)
的基础上,令 K = 1 K=1 K=1 λ m a x = 2 \lambda_{max}=2 λmax=2,则ChebNet卷积公式简化近似为:
g θ ∗ x = θ 0 x − θ 1 D − 1 / 2 A D − 1 / 2 x (7.5) g_{\theta} * x=\theta_0x - \theta_1D^{− 1/2} AD^{− 1/2}x \tag{7.5} gθx=θ0xθ1D1/2AD1/2x(7.5)
为了抑制参数数量防止过拟合,1stChebNet假设 θ = θ 0   ′ = − θ 1   ′ \theta=\theta_0^{\ '}=-\theta_1^{\ '} θ=θ0 =θ1 ,图卷积的定义就近似为:
g θ ∗ x = θ ( I N + D − 1 / 2 A D − 1 / 2 ) x (7.6) g_{\theta} * x = \theta (I_N+D^{− 1/2} AD^{− 1/2})x \tag{7.6} gθx=θ(IN+D1/2AD1/2)x(7.6)
I N + D − 1 / 2 A D − 1 / 2 I_N+D^{− 1/2} AD^{− 1/2} IN+D1/2AD1/2 是有范围[0,2]的特征值。因此,如果在深度神经网络模型中使用该算子,则反复应用该算子会导致数值不稳定(发散)和梯度爆炸/消失

为了解决梯度爆炸/消失的问题,引入了 renormalization trick
I N + D − 1 / 2 A D − 1 / 2 ⟶ D ~ − 1 / 2 A ~ D ~ − 1 / 2 (7.7) I_N+D^{− 1/2} AD^{− 1/2} \longrightarrow \widetilde{D}^{-1/2}\widetilde{A} \widetilde{D}^{-1/2} \tag{7.7} IN+D1/2AD1/2D 1/2A D 1/2(7.7)
其中: A ~ = A + I N \widetilde{A}=A+I_N A =A+IN D ~ i i = ∑ j A ~ i j \widetilde{D}_{ii}=\sum_j\widetilde{A}_{ij} D ii=jA ij,即图中加上自环。

再加上一个激活函数,最后就可以得到了论文中的快速卷积公式:
H l + 1 = f ( H l , A ) = σ ( D ~ − 1 / 2 A ~ D ~ − 1 / 2 H ( l ) W ( l ) ) (7.8) H^{l+1} = f(H^l, A) = \sigma(\widetilde{D}^{-1/2}\widetilde{A} \widetilde{D}^{-1/2} H^{(l)} W^{(l)}) \tag{7.8} Hl+1=f(Hl,A)=σ(D 1/2A D 1/2H(l)W(l))(7.8)
将这个定义推广到具有C个输入通道(即每个节点的C维特征向量)的信号 X ∈ R N × C X \in \R ^{N×C} XRN×C 和 F 个滤波器或特征映射如下:
Z = D ~ − 1 / 2 A ~ D ~ − 1 / 2 X Θ Z=\widetilde{D}^{-1/2}\widetilde{A} \widetilde{D}^{-1/2} X \Theta Z=D 1/2A D 1/2XΘ

  • X ∈ R N × C X \in \R ^{N×C} XRN×C signal C C C input channels (i.e. a C-dimensional feature vector for every node)
  • Θ ∈ R C × F \Theta \in \R^{C×F} ΘRC×F,matrix of filter parameters
  • Z ∈ R N × F Z \in \R^{N×F} ZRN×F is the convolved signal matrix

这个滤波操作复杂度是 O ( ∣ E ∣ F C ) \mathcal{O}(|E|FC) O(EFC) (其中E为边数,C为特征向量维度,F为卷积核数量),并且 A ~ X \widetilde{A}X A X 可以有效地实现为密集矩阵和稀疏矩阵的乘积。(在源代码中使用了稀疏矩阵和稠密矩阵乘法)


8. 行文到此的GCN的优点和不足

搬运博客:图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导-持续更新 中GCN的优点和GCN的不足。

GCN的优点

  1. 权值共享,参数共享,从 A X W AXW AXW 可以看出每一个节点的参数矩阵都是 W W W,权值共享;
  2. 具有局部性Local Connectivity,也就是局部连接的,因为每次聚合的只是一阶邻居; 上述两个特征也是CNN中进行参数减少的核心思想
  3. 感受野正比于卷积层层数,第一层的节点只包含与直接相邻节点有关的信息,第二层以后,每个节点还包含相邻节点的相邻节点的信息,这样的话,参与运算的信息就会变多。层数越多,感受野越大,参与运算的信息量越充分。也就是说随着卷积层的增加,从远处邻居的信息也会逐渐聚集过来。
  4. 复杂度大大降低,不用再计算拉普拉斯矩阵及其特征分解

GCN的不足

  1. 扩展性差:由于训练时需要需要知道关于训练节点、测试节点在内的所有节点的邻接矩阵 A A A,因此是transductive的,不能处理大图,然而工程实践中几乎面临的都是大图问题,因此在扩展性问题上局限很大,为了解决transductive的的问题,GraphSAGE:Inductive Representation Learning on Large Graphs 被提出;
  2. 局限于浅层:GCN论文中表明,目前GCN只局限于浅层,实验中使用2层GCN效果最好,为了加深,需要使用残差连接等trick,但是即使使用了这些trick,也只能勉强保存性能不下降,并没有提高,Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning一文也针对When GCNs Fail ?这个问题进行了分析。虽然有一篇论文:DeepGCNs-Can GCNs Go as Deep as CNNs?就是解决GCN局限于浅层的这个问题的,但个人觉得并没有解决实质性的问题,这方面还有值得研究的空间。
  3. 不能处理有向图:理由很简单,推导过程中用到拉普拉斯矩阵的特征分解需要满足拉普拉斯矩阵是对称矩阵的条件。

你可能感兴趣的:(paper,reading,图卷积神经网络)