GCN | 图卷积 | Graph Convolution 入门笔记

图卷积目标

实现一个函数, Z = f ( X , A ) Z=f(X,A) , 其中 X R N × D 1 X\in R^{N\times D_1} 为输入特征, A R N × N A\in R^{N\times N} 为稀疏邻接矩阵, Z R N × D 2 Z\in R^{N\times D_2} 为输出特征, N N 是图 (graph) 中的节点数.

Naive GCN

信号在空域的卷积等于其在频域相乘, 即 f g = F 1 ( F ( f ) F ( g ) ) f*g=F^{-1}(F(f)F(g)) , 其中 F F 为傅里叶变换. 常见的图卷积的做法是将图的信息转换到频域, 然后作乘, 这个过程也称为谱卷积.

对于图像而言,时频傅里叶变换的基是拉普拉斯算子的特征函数;
对于图而言, 我们可以通过对图的拉普拉斯矩阵 L L 进行特征值分解来得到图上的傅里叶变换的数学形式.他们之间的关系可以参考这个链接.

拉普拉斯矩阵的定义如下

  • D D N × N N\times N 的对角矩阵, D i i D_{ii} 为图上结点 v i v_i 的度
  • A A 为邻接矩阵
  • 拉普拉斯矩阵 L = D A L=D-A
  • 对其进行正则化则有 L = I D 1 2 A D 1 2 L=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}} , 其中 I I 为单位矩阵

L L 是一个实对称阵, 对其进行特征值分解得到 L = U Λ U T L=U\Lambda U^T , 特征向量构成的矩阵 U U 即为图所对应的傅里叶基.
因此我们可以将图上的傅里叶变换形式化为:

  • 傅里叶变换: x ^ = U T x \hat{x}=U^Tx
  • 逆变换: x = U x ^ x=U\hat{x}

图的谱卷积从而可以形式化为 g x = U ( U T g U T x ) , g*x=U(U^Tg\odot U^Tx), 其中 \odot 为哈达玛积 (element-wise Hadamard product).

在最早的GCN (graph convolution network) 中, 令 g θ g_\theta 为定义在频域的filter, 即 g x = g θ ( L ) x = g θ ( U Λ U T ) x = U g θ ( Λ ) U T x . g*x=g_\theta(L)x=g_\theta(U\Lambda U^T)x=Ug_\theta(\Lambda)U^Tx.
g θ ( Λ ) = d i a g ( θ ) g_\theta(\Lambda)=diag(\theta) 为一个non-paramatric filter, 即它的所有参数 θ R N \theta\in R^N 是自由的.

上述计算涉及到三次 N × N N\times N 的矩阵乘法, 以及对 L L 的特征值分解, 计算开销为 O ( N 2 + M ) O(N^2+M) , 且考虑输入输出的channel数量,可学习的参数必须为 N × D 1 × D 2 N\times D_1 \times D_2

Fast Localized Spectral Filtering

上述的谱卷积计算开销很大, 不利于神经网络的训练, 于是有了利用切比雪夫多项式 (Chebyshev polynomials)进行近似的改进版.
切比雪夫多项式常用于多项式插值逼近, 可以参考这个链接对它进行进一步的了解, 其递归定义如下:

  • T 0 ( x ) = 1 T_0(x)=1
  • T 1 ( x ) = x T_1(x)=x
  • T k ( x ) = 2 x T k 1 ( x ) T k 2 ( x ) T_k(x)=2xT_{k-1}(x)-T_{k-2}(x)

于是可以近似表示 g θ ( Λ ) = k = 1 K θ k T k ( Λ ~ ) g_\theta(\Lambda)=\sum_{k=1}^K\theta_kT_k(\tilde{\Lambda}) , 其中 Λ ~ = 2 Λ λ m a x I \tilde{\Lambda}=\frac{2\Lambda}{\lambda_{max}}-I , (归一化到 [ 1 , 1 ] [-1,1] ).
由于 U U T = I UU^T=I , 因此 U T k ( Λ ~ ) U T = T k ( L ~ ) UT_k(\tilde{\Lambda})U^T=T_k(\tilde{L}) , 其中 L ~ = 2 L λ m a x I \tilde{L}=\frac{2L}{\lambda_{max}}-I
滤波操作可以进一步写成: g θ ( L ) x = k = 1 K θ k T k ( L ~ ) x g_\theta(L)x=\sum_{k=1}^K\theta_kT_k(\tilde{L})x

于是可学习的参数变为了 K K 个, 类似传统卷积的kernel size, 常取 K = 3 K=3 K = 5 K=5 , 计算复杂度由于递推关系和 L L 的稀疏性, 也降低为 O ( K E ) O(K|E|) , E E 为图的边数.

Layer-wise Linear model

进一步的, 如果令上述 K = 1 , λ m a x = 2 K=1,\lambda_{max}=2 , 可以使得图卷积运算变成一个与 L L 线性相关的函数:
g θ ( L ) = θ 0 + θ 1 ( L I ) = θ 0 θ 1 D 1 2 A D 1 2 g_\theta(L)=\theta_0+\theta_1(L-I)\\ =\theta_0-\theta_1D^{-\frac{1}{2}}AD^{-\frac{1}{2}}
约束 θ = θ 0 = θ 1 \theta=\theta_0=-\theta_1 以进一步防止过拟合,得到: g θ x = θ ( I + D 1 2 A D 1 2 ) x g_\theta*x=\theta(I+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})x

为了防止梯度爆炸/弥散, 对A和D进行正则化:

  • A ~ = A + I \tilde{A}=A+I
  • D ~ i i = j A ~ i j \tilde{D}_{ii}=\sum_{j}\tilde{A}_{ij}
  • g θ x = θ ( D ~ 1 2 A ~ D ~ 1 2 ) x g_\theta*x=\theta (\tilde{D}^{-\frac{1}{2}}\tilde A \tilde D^{-\frac{1}{2}})x

考虑channel数量, 图卷积层可表示为: Z = D ~ 1 2 A ~ D ~ 1 2 X Θ , Z=\tilde{D}^{-\frac{1}{2}}\tilde A \tilde D^{-\frac{1}{2}}X\Theta, Θ R D 1 × D 2 \Theta\in R^{D_1\times D_2} 为可学习参数

Reference

Semi-Supervised Classification with Graph Convolutional Networks
Graph Convolution Network
Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering

发布了5 篇原创文章 · 获赞 0 · 访问量 237

猜你喜欢

转载自blog.csdn.net/rzy1010470038/article/details/103698385