圖神經網絡基礎目錄:
1、圖的拉普拉斯矩陣
1.1 拉普拉斯算子
拉普拉斯算子 (Laplace Operator) 是為歐幾里德空間中的一個二階微分算子,定義為梯度的散度,可以寫作 $\Delta, \nabla^{2}, \nabla \cdot \nabla$ 這幾種形式。
如果函數 $f$ 是二階可微的實函數,則 $f$ 的拉普 拉斯算子可以寫作:
$\Delta f=\nabla^{2} f=\nabla \cdot \nabla f$
散度(divergence)用於表征空間各點矢量場發散的強弱程度。散度描述的是向量場里一個點是匯聚點還是發源點。值為正時表示該點為發源點,值為負時表示該點為匯聚點,值為零時表示該點無源。散度在物理上的含義可以理解為磁場、熱源等。在笛卡爾坐標系中,矢量 $V$ 的散度表示為:
$\nabla \cdot V=\frac{\partial V_{x}}{\partial x}+\frac{\partial V_{y}}{\partial y}+\frac{\partial V_{z}}{\partial z}$
那么拉普拉斯算子作為梯度的散度,則在笛卡爾坐標系中定義為:
$\Delta f=\sum \limits _{i=1}^{n} \frac{\partial^{2} f}{\partial x_{i}^{2}}$
即:表示為函數 $f$ 在各個維度上的二階偏導數的和。
接下來來看一下拉普拉斯算子直觀上表示什么含義,以一維空間為例:
$\begin{aligned}\Delta f(x)=& \frac{\partial^{2} f}{\partial x^{2}} \\=& f^{\prime \prime}(x) \\\approx & f^{\prime}(x)-f^{\prime}(x-1) \\\approx &[f(x+1)-f(x)]-[f(x)-f(x-1)] \\=&f(x+1)+f(x-1)-2 f(x)\end{aligned}$
也就是說二階導數近似於二階差分,從這一角度來看拉普拉斯算子直觀上表示函數 $f$ 在當前點 $x$ 的所有自由度上進行微小擾動后所獲得的函數值的增益,這里有 2 個自由度,方向是 $x$ 的 $+1$ 和 $-1$ 方向。
接着來看二維空間的例子:
$\begin{align*}\label{2}& \Delta f(x, y)=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} \\&\quad\quad\quad\quad\approx[f(x+1, y)+f(x-1, y)-2 f(x, y)]+[f(x, y+1)+f(x, y-1)-2 f(x, y)] \\&\quad\quad\quad\quad=f(x+1, y)+f(x-1, y)+f(x, y+1)+f(x, y-1)-4 f(x, y)\end{align*}$
二維空間中的拉普拉斯算子表征一個點 $x$ 在 $4$ 個自由度上微擾以后的函數增益,方向分別為 $ (1,0),(-1,0),(0,1),(0,-1) $。這就是圖像中的拉普拉斯卷積核,如果算上對角線以后 可以認為有 $8$ 個自由度:
現在用散度的概念解讀一下:
- $\Delta f>0$ 時,表示該點有散發通量的正源 (發散源) 。如下圖中綠圈所示,即為散度大於 $0$ 的 點,其附近的矢量場情況。
- $ \Delta f<0$ 時,表示該點有吸收通量的負源 (洞或匯) 。如下圖中紅圈所示,即為散度小於 $0$ 的 點,其附近的矢量場情況。
- $ \Delta f=0$ 時,該點無源
另一個角度,拉普拉斯算子計算了周圍點與中心點的梯度差。當 $f(x, y)$ 受到擾動之后,其可能 變為相鄰的 $f(x-1, y)$, $ f(x+1, y)$ , $f(x, y-1)$ , $f(x, y+1)$ 之一,拉普拉斯算子得到 的是對該點進行微小擾動后可能獲得的總增益 (或者說是總變化) 。
即:拉普拉斯算子是所有自由度上進行微小變化后所獲得的增益。
1.2 圖的表示
一個網絡(無向圖)由節點與節點之間的邊組成。每個節點是有值的,我們用 $f $ 來表示節點的值向量:
$f=\left(\begin{array}{llll}f_{1} & f_{2} & \cdots & f_{N}\end{array}\right)^{T}$
其中 $f_{i}$ 表示網絡中節點 $i$ 的值,也就是函數 $f$ 在節點 $i$ 處的值。對 $i$ 節點進行擾動,它可能變為任意一個與它相鄰 的節點 $j \in N_{i}$ , $N_{i}$ 表示節點 $i$ 的一階鄰域節點。
網絡中除了節點還有邊,每條邊可能有權重,用 $W$ 表示網絡的加權鄰接矩陣, $W_{N \times N}=\left[w_{i j}\right]$ , $ 1 \leq i, j \leq N $, 其 中 $w_{i j}$ 表示節點 $i$ 和節點 $j$ 的邊的權重,另外 $W$ 是一 個對稱矩陣,有 $w_{i j}=w_{j i}$ 。
度,可以類比有向圖中的出度和入度的概念,不過圖中點 $v_i$ 的度 $d_i$ 並不是和該點相連的點的數量,而是和其相連的邊的權重之和,也就是鄰接矩陣的每一行的值加起來,即:
$d_{i}=\sum \limits _{j=1}^{N} w_{i j}$
而圖的度矩陣 (對角矩陣) $D_{N \times N}$ 可以表示如下:
$D=\left[\begin{array}{lll} d_{1} & & \\ & d_{2} & \\ & & \\ & & d_{N} \end{array}\right]$
1.3 圖的拉普拉斯矩陣
可以將拉普拉斯算子推廣到網絡(無向圖)中,對於有 $N$ 個節點的網絡,我們想要獲得一個節點關於其鄰居節點(自由度)的增益,然而每個節點的鄰居個數不一定是相同的,一個節點的最大自由度為 $N$ 。
我們上面已經知道拉普拉斯算子可以計算一個點到它所有自由度上微小擾動的增益,則通過圖來表 示就是任意一個節點 $j$ 變化到節點 $i$ 所帶來的增益,考慮圖中邊的權值相等(簡單說就是 1 ) 則 有:
$\Delta f_{i}=\sum \limits _{j \in N_{i}}\left(f_{i}-f_{j}\right)$
而如果邊 $E_{i j} $ 具有權重 $W_{i j}$ 時,則有:
$\Delta f_{i}=\sum \limits _{j \in N_{i}} W_{i j}\left(f_{i}-f_{j}\right)$
由於當 $W_{i j}=0$ 時表示節點 $i, j$ 不相鄰,所以上式可以簡化為:
$\Delta f_{i}=\sum_{j \in N} W_{i j}\left(f_{i}-f_{j}\right) $
繼續推導有:
$\begin{array}{l}\Delta f_{i}&=\sum \limits _{j \in N} w_{i j}\left(f_{i}-f_{j}\right) \\&=\sum\limits_{j \in N} w_{i j} f_{i}-\sum\limits_{j \in N} w_{i j} f_{j} \\&=d_{i} f_{i}-w_{i:} f\end{array}$
其中
-
-
- $d_{i}=\sum \limits_{j \in N} w_{i j}$ 是頂點 $i $ 的度;
- $w_{i:}=\left(w_{i 1}, \ldots, w_{i N}\right)$ 是 $N$ 維的行向量;
- $f=\left(\begin{array}{c}f_{1} \\ \vdots \\ f_{N}\end{array}\right) $ 是 $N$ 維的列向量;
- $w_{i:} f $ 表示兩個向量的內積。
-
對於所有的 $N$ 個節點有:
$\begin{aligned}\Delta f &=\left(\begin{array}{c}\Delta f_{1} \\\Delta f_{2} \\\vdots \\\Delta f_{N}\end{array}\right) \\&=\left(\begin{array}{cc}d_{1} f_{1}-w_{1:} f \\d_{2} f_{2}-w_{2:} f \\\vdots \\d_{N} f_{N}-w_{N:} f\end{array}\right) \\&=\left(\begin{array}{cccc}d_{1} & & & \\& d_{2} & & \\& & \ddots & \\& & & d_{N}\end{array}\right) f-\left(\begin{array}{c}w_{1:} \\w_{2:} \\\vdots \\w_{N:}\end{array}\right) f \\&\begin{array}{l}=\operatorname{diag}\left(d_{i}\right) f-W f \\=(D-W) f \\=L f\end{array}\end{aligned}$
這里的 $D-W$ 就是圖的拉普拉斯矩陣 (Graph Laplacian),記作 $L$ 。
拉普拉斯矩陣中的第 $i$ 行實際上反應了第 $i$ 個節點在對其他所有節點產生擾動時所產生的增益累積。直觀上來講,圖拉普拉斯反映了當我們在節點 $i$ 上施加一個勢,這個勢以哪個方向能夠多順暢的流向其他節點。譜聚類中的拉普拉斯矩陣可以理解為是對圖的一種矩陣表示形式。
1.4 拉普拉斯矩陣的譜分解
特征分解(譜分解)可以參考:《譜分解(SD)》
拉普拉斯矩陣的譜分解(Laplace Spectral Decomposition)就是拉普拉斯矩陣的特征分解:
$L \mu_{k}=\lambda_{k} \mu_{k}$
對於無向圖來說,拉普拉斯矩陣是實對稱矩陣(見下文有例子),而實對稱矩陣一定可以用正交矩陣進行正交相似對角化:
$L=U \Lambda U^{-1}$
這里的 $ \Lambda$ 為特征值構成的對角矩陣, $U$ 為特征向量構成的正交矩陣, $U$ 的每一列都是一個 特征向量。又因為正交矩陣的逆等於正交矩陣的轉置: $U^{-1}=U^{T} $,所以有:
$L=U \Lambda U^{-1}=U \Lambda U^{T}$
實對稱矩陣可以參考《實對稱矩陣》
正交矩陣可以參考《正交矩陣》
1.5 拉普拉斯矩陣的性質
舉例:
拉普拉斯矩陣有一些性質如下:
1、拉普拉斯矩陣是 對稱矩陣;
2、$L$ 的行和為零 ;
3、$\mathbf{L} $ 有一個特征值為零 ;
-
-
熟愁線性代數的人都知道,對一個方陣求行和,其實相當於乘以一個 $n$ 維的,每一個維度都為 $1$ 的向量,一般我們用 $\vec{e} $ 表示。所以 $L * \vec{e}=\overrightarrow{0}$ (等於 $ 0$ 是因為 性質 $1$ ),其中 $0$ 向量也是 $n $ 維向量,每一個維度都為 $ 0 $。
對應於性質 2: $L$ 的每個行和為 0 ,共有 $n$ 行。我們將上述等式改寫成 $L * \vec{e}=0 * \vec{e}$ ,這是特征值和特征向量的定義,這個等式告訴我們:$L$ 有一個特征值為 $0 $ ,且這個特征值對應的特 征向量中有一個是 $ \vec{e}$。 - 設 $\boldsymbol{A}$ 是 $\boldsymbol{n}$ 階矩陣, 如果數 $\lambda$ 和 $\boldsymbol{n}$ 維非零 向量 $x$ 滿足$A x=\lambda x$則稱 $\lambda$ 是矩陣 $\boldsymbol{A}$ 的特征值(eigenvalue)。
-
4、$\mathrm{L} $ 是半正定矩陣 ;
5、設 $\mathrm{G}$ 為一個具有非負連接權重的無向圖,由圖 $\mathrm{G}$ 導 出的拉普拉斯矩陣 $\mathbf{L}$ 的零特征值的重數等於圖 $\mathrm{G} $ 的 連通子圖的個數 $k$。
6、對於任意向量 $f$,有:
$f^{T} L f=\frac{1}{2} \sum \limits _{i=1}^{N} \sum \limits _{j=1}^{N} w_{i j}\left(f_{i}-f_{j}\right)^{2}$
這一性質利用拉普拉斯矩陣的性質很容易可以得到:
$\begin{array}{l}f^{T} L f&=f^{T} D f-f^{T} W f \\&=\sum \limits _{i=1}^{N} d_{i} f_{i}^{2}-\sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{i} f_{j} \\&=\frac{1}{2}\left(\sum\limits_{i=1}^{N} d_{i} f_{i}^{2}-2 \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{i} f_{j}+\sum\limits_{j=1}^{N} d_{j} f_{j}^{2}\right) \\&=\frac{1}{2}\left(\sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{i}^{2}-2 \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{i} f_{j}+\sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{j}^{2}\right) \\&=\frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j}\left(f_{i}-f_{j}\right)^{2}\end{array}$
對於上面的性質6,如果 $f$ 為網絡中信號的值的向量,那么 $f^{T} L f$ 稱為圖信號的總變差 (Total Variation),可以刻畫圖信號整體的平滑度 (Smoothness)。
那么為什么 $f^{T} L f$ 可以刻畫圖的平滑度呢? 這里我們可以直觀地來看一下,從 6 的式子中可以看出如果相鄰節點的值 $f_{i}$ 和 $f_{j}$ 差異很大,那么 $f^{T} L f$ 這個值就會很大,也就會不平滑。
舉例來說, $f_{i}$ 表示節點 $v_{i}$ 的函數,對應實際應用它可以是一個概率值、一個像素值等等。這里將 $f^{T} L f$ 記作 $S$ 。如果一個圖比較平滑的 話,那么圖中相鄰節點的 $f$ 值應該是盡可能一致的,如果相鄰節點的 $f$ 值差異很大,那么這 個圖就不是很平滑。如下圖:
上圖中的兩個網絡,第一個網絡的節點 $f$ 值差異較小(更平滑),因此 $S$ 較小,而第二個網絡節點 $f$ 值差異較大(不平滑),因此 $S$ 較大。因此 $S=f^{T} L f$ 可以用來刻畫網絡的平滑度(越小越平滑)。
圖的拉普拉斯矩陣是多種多樣的,對於更多的拉普拉斯矩陣可以參考《 拉普拉斯矩陣》。
2、圖傅里葉變換
本章節需要了解傅里葉變換的相關知識。參考《圖神經網絡基礎一:傅里葉級數與傅里葉變換》。
2.1 回顧傅里葉變換
對於連續非周期函數 $f(t)$ 的傅里葉變換,其公式為:
$F(W)=\int_{-\infty}^{+\infty} f(t) e^{-i W t} \mathrm{~d} t$
傅里葉變換將函數分解成無數個基函數的線性組合,向每個基函數 $e^{-i W t} $ 上投影, $F(W)$ 就 是投影后對應的該基函數的系數。
定義在 $(-\infty,+\infty) $ 上的函數 $f(t)$ 可以看做一個無限維的向量,而 $t$ 代表的就是維度, $f(t)$ 就是這個維度上的值,因此函數的內積也就是積分。 $e^{-i W t}$ 是傅里葉變換的基函數,而 $W \in(-\infty,+\infty)$ ,也就是說有無限多個基函數, $F(W)$ 表示函數 $f(t)$ 在這個基函數上的坐標。
2.2 亥姆霍茲方程與傅里葉變換
亥姆霍茲方程的公式為:
$\nabla^{2} f=-k^{2} f$
亥姆霍茲方程可以看做廣義的特征函數 $A x=\lambda x$ ,$ f $ 為特征函數,$-k^{2} $ 為特征值(之前說 過一個函數 $f$ 可以看做無限維的向量,這里也可以用這個觀點來理解亥姆霍茲方程)。
現在我們讓拉普拉斯算子 $ \nabla^{2}$ 作用到傅里葉變換的基函數上,則有:
$\nabla^{2} e^{-i \omega t}=\frac{\partial^{2} e^{-i \omega t}}{\partial t^{2}}=-\omega^{2} e^{-i \omega t}$
因此我們可以看出,傅里葉變換的基函數其實就是拉普拉斯算子的特征函數,而 $w$ 就代表了拉普拉斯算子的特征值。
2.3 從傅里葉變換到圖傅里葉變換
對於傅里葉變換,存在卷積定理:在適當條件下,兩個信號的卷積的傅立葉變換是他們的傅立葉變換的點積,換句話說就是時域卷積等於頻域相乘。
為了能夠應用卷積定理來處理卷積,所以可以將兩個信號 $f$ 和 $g$ 首先進行傅里葉變換再相乘,從而得到卷積結果,這樣做的好處在於可以降低算法的時間復雜度。用公式表達卷積定理就是:
$F(f * g)=F(f) \cdot F(g)$
對於網絡來說,直接進行卷積是困難的,因為網絡不具備圖像那樣規則的網格結構,因此考慮應用圖傅里葉變換將網絡的空域信息映射到頻域來應用卷積定理完成卷積操作。
圖傅里葉變換是使用類比的方式直接定義的,並非經過嚴格推導,類比的方法如下:
(1)拉普拉斯算子與拉普拉斯矩陣:拉普拉斯算子的作用是能夠得到一個點在某些自由度上微擾以后獲得的增益,而拉普拉斯矩陣能夠獲得網絡中的每個節點微擾以后從它的鄰居節點上獲得的增益,也就是說:拉普拉斯矩陣之於網絡就相當於拉普拉斯算子之於函數。
(2)拉普拉斯算子的特征函數與拉普拉斯矩陣的特征向量:傅里葉變換的基函數 $e^{-i \omega t}$ 是拉普拉斯算子的特征函數,那么同樣的圖傅里葉變換的基向量就是拉普拉斯矩陣的特征向量 $\mu_{k}$ 。
(3)拉普拉斯算子的特征值與拉普拉斯矩陣的特征值:傅里葉變換的頻率 $\omega$ 是拉普拉斯算子的特征值,那么同樣的圖傅里葉變換的頻率就是拉普拉斯矩陣的特征值 $\lambda_{k} $ 。
總而言之,這個類比的過程如下:
$\begin{array}{c}\nabla^{2} e^{-i \omega t}=-\omega^{2} e^{-i \omega t} \\\Updownarrow \\L \mu_{k}=\lambda_{k} \mu_{k}\end{array}$
既然對於函數來說拉普拉斯算子的特征值和特征函數能夠用於函數的傅里葉變換,那么對於網絡來說拉普拉斯矩陣的特征值和特征向量就能夠用於網絡的傅里葉變換。
換句話說,傅里葉變換是以拉普拉斯算子的特征函數為基進行投影,那么圖傅里葉變換就以拉普拉斯矩陣的特征向量為基進行投影,因此圖傅里葉變換定義為:
${F}\left(\lambda_{k}\right)=\hat{f}\left(\lambda_{k}\right)=\sum \limits_{i=1}^{N} f(i) u_{k}(i)$
這里的 $f$ 還是表示由圖節點信息構成的向量, $ \lambda_{k} $ 和 $\mu_{k}$ 分別表示拉普拉斯矩陣的特征值和特征向量。
現在用 $\widehat{f}$ 來表示 $ f $ 經過圖傅里葉變換后的坐標,那么圖傅里葉變換可以表示成 矩陣形式:
$\widehat{f}=\left(\begin{array}{c}\widehat{f}_{1} \\\vdots \\\widehat{f}_{N}\end{array}\right)=\left(\begin{array}{ccc}\mu_{1}(1) & \cdots & \mu_{1}(N) \\\vdots & \ddots & \vdots \\\mu_{N}(1) & \cdots & \mu_{N}(N)\end{array}\right)\left(\begin{array}{c}f_{1} \\\vdots \\f_{N}\end{array}\right)=U^{T} f$
我們也可以得到圖傅里葉變換的逆變換:
$f=U U^{-1} f=U U^{T} f=U \widehat{f}$

https://zhuanlan.zhihu.com/p/85287578
https://mp.weixin.qq.com/s/bkHxNONeTIzWUR6eiGjsmg
https://qddmj.cn/gcn-laplacian.htm
https://qddmj.cn/gcn-laplacian2.htm
https://zhuanlan.zhihu.com/p/81502804
『總結不易,加個關注唄!』