1. 預備知識
1.1 圖網絡的種類、區別和聯繫
Graph Embedding
Graph Embedding指圖嵌入,屬於表示學習的範疇,也可以稱爲網絡嵌入、圖表示學習、網絡表示學習等等。
具體可以參考博主之前整理的關於圖嵌入相關內容的資料:鏈接。
Graph Neural Network (GNN)
GNN指神經網絡在圖上應用的模型的統稱,根據採用的技術不同和分類方法的不同,又可以分爲很多不同種類。如從傳播的方式來看,圖神經網絡可以分爲圖卷積網絡(GCN),圖注意力網絡(GAT)等。
具體來說GNN指的是神經網絡模型在圖領域所用到的方法的統稱。
Graph Convolutional Network
GCN屬於GNN的一類,是採用卷積操作的圖神經網絡。這種方法屬於一類採用圖卷積的神經網絡,可以應用於圖嵌入的方法中。
上述三者的關係可以用下圖來表示:
1.2 離散卷積
離散卷積本質就是一種加權求和。如下圖所示,CNN中的卷積本質上就是一個共享參數的過濾器,通過計算中心像素點及相鄰像素點的加權來構成feature map實現空間特徵的提取。
其中卷積核的係數,通過隨機化初值,然後根據loss反向傳播梯度下降迭代優化。卷積核的函數通過優化求出才能實現特徵提取的作用,GCN的理論很大一部分工作就是爲了引入可以優化的卷積參數。
1.3 爲什麼要研究GCN
CNN是計算機視覺領域的法寶,究其原因,是因爲1.2中提到的,卷積核可以有效地提取出圖像或視頻數據中排列整齊的像素點矩陣,如下圖所示。
相對應的,在科學研究中存在非歐式模型的數據,如下圖所示,這是一個社交網絡的數據結構。
實際上,這樣的網絡結構就是圖論中抽象意義上的拓撲圖。所以,GCN中G代表用頂點和邊建立相應關係的拓撲圖。
研究GCN的主要原因有以下幾點:
- CNN無法處理Non Euclidean Structure的數據,學術上的表達是傳統的離散卷積在這類數據上無法保持平移不變性。通俗講就是在拓撲圖中每個頂點的相鄰頂點數目都可能不同,無法使用同樣尺寸的卷積核來進行運算。
- 我們希望在這種類似於拓撲圖的結構上有效地提取空間特徵來進行機器學習。
- 廣義上來說任何問題在賦範空間內都可以建立拓撲關聯,譜聚類就是應用了這樣的思想。這句話意思就是我們熟知的CV/NLP等問題實際上都可以通過建立拓撲關聯轉化爲拓撲圖的形式。所以說拓撲連接是一種廣義的數據結構,GCN有很大的應用空間。
1.4 譜聚類
譜聚類(Spectral Clustering)是一種針對圖結構的聚類方法,它跟其他聚類算法的區別在於,他將每個點都看作是一個圖結構上的點,所以判斷兩個點是否屬於同一類的依據就是,兩個點在圖結構上是否有邊相連,可以是直接相連也可以是間接相連。舉個例子,一個緊湊的子圖(完全圖)一定比一個鬆散的子圖更容易聚成一類。
如上圖,在k-means算法中會把空間分佈距離較近的歸爲一類,而譜聚類則會把更緊湊的點聚爲一類。
2. 圖卷積預備定理
2.1 Motivation
圖嵌入理論中我們說明了如果想把拓撲圖轉化爲模型的輸入,就必須將每個節點用其特徵進行向量表示。而在試圖得到節點表示的時候,容易想到的最方便的手段就是利用它周圍的節點,也就是他的鄰居節點等。
主要問題
- 我們需要按照什麼條件去找neighbors?
- 確定感受野之後,按照什麼方式處理包含不同數目的節點特徵?
2.2 傅里葉變換
爲了解決在拓撲圖上無法有效地進行卷積計算的問題,我們需要了解Fourier變換的作用。
首先GCN中C(Convolution)的數學定義:
(f∗g)(t)=∫ℜf(x)g(t−x)dx
一般稱g爲作用在f上的filter或kernel
根據卷積定理,卷積公式還可以寫成: f∗g=F−1{F{f}⋅F{g}}
這樣我們只需要定義圖上的傅里葉變換,就可以定義出圖上的卷積變換。
到這裏,我們首先需要推導上面的定理。
首先看看傅里葉變換的定義:
F{f}(v)=∫ℜf(x)e−2πix⋅vdx
其逆變換(Inverse Fourier)則是:
F−1{f}(x)=∫ℜf(v)e2πix⋅vdx
根據Fourier變換及其逆變換的定義,我們可以證明卷積定理。定義h是f和g的卷積,那麼:
h(z)=∫ℜf(x)g(z−x)dx
有:
F{f∗g}(v)=F{h}(v)=∫ℜh(z)e−2πiz⋅vdz=∫ℜ∫ℜf(x)g(z−x)e−2πiz⋅vdxdz=∫ℜf(x)(∫ℜg(z−x)e−2πiz⋅vdz)dz
可以令y=z−x;dy=dz,得到:
F{f∗g}(v)=∫ℜf(x)(∫ℜg(y)e−2πi(y+x)⋅vdy)dx=∫ℜf(x)e−2πix⋅v(∫ℜg(y)e−2πiy⋅vdy)dx=∫ℜf(x)e−2πix⋅vdx∫ℜg(y)e−2πiy⋅vdy=F{f}(v)⋅F{g}(v)
最後等式兩邊同時作用F−1,得到:
f∗g=F−1{F{f}⋅F{g}}
2.3 Laplacian算子
一階導數定義爲:
f′(x)=h→0limhf(x+h)−f(x)
laplacian算子簡單來說就是二階導數:
Δf(x)=h→0limh2f(x+h)−2f(x)+f(x−h)
在graph上,我們可以定義一階導數爲:
f∗g′(x)=f(x)−f(y)
其中y是x的鄰居節點
那麼對應的Laplacian算子可以定義爲:
Δ∗gf′(x)=y∼x∑f(x)−f(y)
定義D是N×N的度數矩陣(degree matrix)
D(i,j)={di0ifi=jotherwise
定義A爲N×N的鄰接矩陣(adjacency matrix)
A(i,j)={10ifxi∼xjotherwise
這裏的兩個矩陣定義都可以參考2.4中的例子來理解。
那麼拉普拉斯算子可以寫成:
L=D−A
標準化之後可以得到:
L=IN−D−1/2AD−1/2
定義Laplacian算子的目的是爲了找到Fourier變換的基,比如傳統的Fourier變換的基e2πix⋅v就是Laplacian算法的一組特徵向量:
Δe2πix⋅v=λe2πix⋅v
其中λ是一個常數。
那麼上面的Fourier基就是L矩陣的n個特徵向量U=[u1,...,un],L可以分解爲:
L=UΛUT
其中Λ是特徵值組成的對角矩陣
|
傳統Fourier變換 |
Graph Fourier變換 |
Fourier變換基 |
e−2πixv |
UT |
逆Fourier變換基 |
e2πixv |
U |
維度 |
∞ |
點的個數n |
那麼Graph Fourier變換可以定義爲:
GF{f}(λl)=i=1∑nf(i)ul∗(i)
其中fi可以看做是作用在第i個點上的signal,用向量x=(f(1)…f(n))∈ℜn來表示。ul∗是ul的對偶向量,ul∗是矩陣UT的第l行,ul是矩陣U的第l行。
那麼我們可以用矩陣形式來表示Graph Fourier變換:
GF{x}=UTx
類似的,Inverse Graph Fourier變換定義爲:
IGFf^(i)=l=0∑n−1f^(λl)ul(i)
它的矩陣形式表達爲:
IGF{x}=Ux
2.4 相關矩陣定義
圖中拉普拉斯矩陣就是由度矩陣D-鄰接矩陣A構造出的。
3. 推導Graph Convolution
首先我們可以根據2中推導的卷積定理:
f∗g=F−1{F{f}⋅F{g}}
那麼圖的卷積公式可以表示爲:
g∗x=U(UTg⋅UTx)
作爲圖卷積的filter函數g,我們希望具有很好的局部性。就像CNN模型裏的filter一樣,隻影響到一個像素附近的像素。那麼我們可以把g定義成一個laplacian矩陣的函數g(L)。
作用一次laplacian矩陣相當於在圖上傳播了一次鄰居節點。進一步我們可以把UTg看做是gθ(Λ)一個laplacian特徵值的函數。
改寫上面的圖卷積公式,我們就可以得到論文SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS(鏈接)的公式:
gθ∗x=UgθUTx=Ugθ′(Λ)UTx
可以看到這個卷積計算的複雜度非常高,涉及到求Laplacian矩陣的特徵向量,和大量的矩陣計算。下面我們考慮對filter函數做近似,目標是省去特徵向量的求解:
gθ′(Λ)≈k=0∑Kθk′Tk(Λ~)
其中Tk是Chebyshev多項式。這裏可以把簡單gθ(Λ)簡單看成是Λ的多項式。
因爲:
UΛkUT=(UΛUT)k=Lk
所以上面filter函數可以寫成L的函數:
gθ′(Λ)≈k=0∑Kθk′Tk(L~)
設定K=1,卷積公式可以簡化爲:
gθ′∗x≈θ(IN+L)x=θ(IN+D−1/2AD−1/2)x
令A~=A+IN,D~ii=∑jA~ij可以得到:
gθ′∗x=θ(D~−1/2A~D~−1/2)x
那麼再加上激活層,我們就可以得到最終的GCN公式:
Hl+1=σ(D~−1/2A~D~−1/2H(l)W(l))
以上。