参考链接:
知乎文章:一文带你理解图卷积网络本质和发展脉络
知乎文章:谱域GCN小结
b站视频:图卷积神经网络(GCN)的数学原理详解,谱图理论和傅立叶变换初探
预备知识:
实对称矩阵可以正交相似对角化。即:若\(A = A^T,\)则\(A = P\Lambda P^{-1}, P^T = P^{-1}\)
定义:
定义图\(\mathcal{G}=(\mathcal{V}, \mathcal{E}, A)\)图中有n个节点
邻接矩阵\(A \in R^{n \times n}\), 如果节点\(v_i\)与\(v_j\)之间存在边, 则\(A_{ij} = 1\), 否则\(A_{ij} = 0\)
度矩阵\(D \in R^{n \times n}\), 它是一个对角矩阵, \(D_{i i}=\Sigma_{j} A_{i j}\)
拉普拉斯矩阵 \(L = D - A\)。
在一种简单的情况下谈论, 假设图中每个节点有一个标量信息, 所有节点的信息表示为\(x \in R^{n \times 1}\).
1. \(Lx\)做了什么事情?
令:\(G_{ij} = \begin{bmatrix} \ddots & & & \\ & 1 & \cdots & -1 \\ & & \ddots & \\ & -1& \cdots & 1 & & \\ & & & & \ddots \end{bmatrix}\), 则\(G_{ij}x = \begin{bmatrix} \vdots \\ x_i-x_j \\ \vdots \\ x_j - x_i \\ \vdots \end{bmatrix}\), \(G_{ij}x\)将\(v_i\),\(v_j\)两个节点间的信息做了一个交互.
而拉普拉斯矩阵\(L = \sum_{{i,j}\in \mathcal{E}}G_{ij}\),
所以\(Lx = \sum_{\{i,j\}\in \mathcal{E}}G_{ij}x = \begin{bmatrix} \sum_{\{1,j\}\in \mathcal{E}}(x_1-x_j) \\ \sum_{\{2,j\}\in \mathcal{E}}(x_2-x_j) \\ \vdots \\ \sum_{\{n,j\}\in \mathcal{E}}(x_n-x_j) \end{bmatrix}\), 含义就是对所有的节点做了一阶邻居信息的聚合.
\(L^2x\)则是对所有节点做了二阶邻居信息的聚合; \(L^kx\)是对k阶邻居信息的聚合.
2. 从谱域进行卷积操作
类比时序信号,要对时序的频域进行一些操作, 需要将信号转换到频域进行操作,之后再转换回时序(例如去除声音中频率高的女声).
图信号也有类似的傅里叶变换. 由于\(L\)为实对称矩阵,\(L= P\Lambda P^{T}\). 其中\(P\)为正交矩阵. 则\(Lx = P\Lambda P^{T}x\) 分解为以下三个步骤:
在谱域的卷积中,关键的操作是\(\Lambda\), 在第一代谱域图网络Spectral CNN (SCNN)中, 将特征值处理后的结果\(g(\Lambda) =\left\{\begin{array}{lll} \Theta_{1} & & \\ & \ddots & \\ & & \Theta_{n} \end{array}\right\}\)视为可学习的卷积. 这里的卷积是\(x^, = Pg(\Lambda) P^T x\). 由于没有限定\(g(\Lambda)\)为多项式,所以特征分解操作不可避免(时间复杂度为\(O(n^3)\)),而且它是全局的,并不是局部的,所以并没有利用上数据中经常存在的局部不变性的特点。
注意这里学习的参数的数量是节点的数量\(n\)
3. 通过限定卷积操作为多项式,降低运算量
k阶信息聚合操作: \(L^kx = P\Lambda^k P^{T}x\)
为了增加学习能力, 参数化卷积核, 定义一个卷积操作\(g_\theta * x = P g_\theta(\Lambda) P^{T}x\)
由于要聚合k阶信息, \(g_\theta(\Lambda)\)是一个k阶多项式(特征分解的时间复杂度为\(O(n^3)\),限制为多项式可以避免特征分解). 即\(g_\theta(\Lambda) = \theta_0 + \theta_1 \Lambda^1 + \theta_2 \Lambda^2 + \cdots+ \theta_k \Lambda^k = \sum_{i=0}^{k}\theta_i \Lambda^i\)
\(g_\theta * x = P g_\theta(\Lambda) P^{T}x = P\sum_{i=0}^{k}\theta_i \Lambda^i P^T x = \sum_{i=0}^{k}\theta_i (P\Lambda P^T)^i x = \sum_{i=0}^{k}\theta_i L^i x\)
使用\(k\)阶多项式的好处是:
-
学习的参数数量是阶数\(k\), \(k << n\)
-
k代表着k阶邻居. 这样的卷积操作具有局部性,而不是全局性.(类似CNN中的局部不变性)
4. 使用切比雪夫多项式替代原始的多项式(ChebNet)
使用切比雪夫多项式(迭代式的计算)替代原始的多项式, 降低计算的复杂度.
切比雪夫多项式的定义:
要求\(x \in [-1, 1]\). 其实是余弦二倍角公式.
使用切比雪夫多项式的图卷积操作:
这里注意为了获得特征值在\([-1,1]\)之间的拉普拉斯矩阵,有两种方法:
方法1.\(\hat{L}=\frac{2}{\lambda \max } L-I_{N}\)
方法2.$\hat{L}=L_{sym}-I_{N} = -D^{-\frac{1}{2}} A D^{-\frac{1}{2}} $,
5. 从ChebNet继续化简到GCN
令ChebNet中的\(k=1\),
进一步简化, 令\(\theta_0 = -\theta_1\)(\(L_{sym}\)的计算方法见本文末尾)
renormorlize, 将I 加到A里
去掉\(\theta\), \(x\)右乘一个线性映射, 得到GCN的公式
由公式可知,每层GCN只能聚合一阶邻居的信息.
附注一些公式:
其中$\hat{A} = A + I $
\(L = D - A\)
对称归一化的拉普拉斯矩阵