參考鏈接:
知乎文章:一文帶你理解圖卷積網絡本質和發展脈絡
知乎文章:譜域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\)
對稱歸一化的拉普拉斯矩陣