當前位置: 華文星空 > 心靈

如何理解 Graph Convolutional Network(GCN)?

2018-12-03心靈

從CNN到GCN的聯系與區別——GCN從入門到精(fang)通(qi)

1 什麽是離散摺積?CNN中摺積發揮什麽作用?

了解GCN之前必須對離散摺積(或者說CNN中的摺積)有一個明確的認識:

如何通俗易懂地解釋摺積?這個連結的內容已經講得很清楚了, 離散摺積本質就是一種加權求和。

如圖1所示,CNN中的摺積本質上就是利用一個共享參數的過濾器(kernel), 透過計算中心像素點以及相鄰像素點的加權和來構成feature map實作空間特征的提取 ,當然加權系數就是摺積核的權重系數。

那麽摺積核的系數如何確定的呢?是隨機化初值,然後根據誤差函數透過反向傳播梯度下降進行叠代最佳化。這是一個關鍵點, 摺積核的參數透過最佳化求出才能實作特征提取的作用,GCN的理論很大一部份工作就是為了引入可以最佳化的摺積參數。

圖1 CNN中摺積提取feature map示意圖

註:這裏的摺積是指深度學習(CNN)中的摺積,與數學中定義的摺積運算嚴格意義上是有區別的。兩者的區別與聯系可以見我的另一個回答。

2 GCN中的Graph指什麽?為什麽要研究GCN?

CNN是Computer Vision裏的大法寶,效果為什麽好呢?原因在上面已經分析過了,可以很有效地提取空間特征。但是有一點需要註意: CNN處理的影像或者影片數據中像素點(pixel)是排列成成很整齊的矩陣 (如圖2所示,也就是很多論文中所提到的Euclidean Structure)。

圖2 影像矩陣示意圖(Euclidean Structure)

與之相對應,科學研究中還有很多Non Euclidean Structure的數據,如圖3所示。社交網絡、資訊網絡中有很多類似的結構。

圖3 社交網絡拓撲示意(Non Euclidean Structure)

實際上,這樣的網絡結構(Non Euclidean Structure)就是圖論中抽象意義上的拓撲圖。

所以, Graph Convolutional Network中的Graph是指數學(圖論)中的用頂點和邊建立相應關系的拓撲圖。

那麽為什麽要研究GCN?原因有三:

(1) CNN無法直接處理Non Euclidean Structure的數據。通俗理解就是在拓撲圖中每個頂點的相鄰頂點數目都可能不同,那麽當然無法用一個同樣尺寸的摺積核來進行摺積運算。

(2) 由於CNN無法處理Non Euclidean Structure的數據,又 希望在這樣的數據結構(拓撲圖)上有效地提取空間特征來進行機器學習 ,所以GCN成為了研究的重點。

(3) 讀到這裏大家可能會想,自己的研究問題中沒有拓撲結構的網絡,那是不是根本就不會用到GCN呢?其實不然, 廣義上來講任何數據在賦範空間內都可以建立拓撲關聯,譜聚類就是套用了這樣的思想 (譜聚類(spectral clustering)原理總結)。 所以說拓撲連線是一種廣義的數據結構,GCN有很大的套用空間。

綜上所述,GCN是要為除CV、NLP之外的任務提供一種處理、研究的模型。

3 提取拓撲圖空間特征的兩種方式

GCN的本質目的就是用來提取拓撲圖的空間特征,那麽實作這個目標只有graph convolution這一種途徑嗎?當然不是,在vertex domain(spatial domain)和spectral domain實作目標是兩種最主流的方式。

3.1 空間維度

Vertex domain (spatial domain)是非常直觀的一種方式。顧名思義:提取拓撲圖上的空間特征,那麽就把每個頂點相鄰的neighbors找出來。這裏面蘊含的科學問題有二:

a.按照什麽條件去找中心vertex的neighbors,也就是如何確定receptive field?

b.確定receptive field,按照什麽方式處理包含不同數目neighbors的特征?

根據a,b兩個問題設計演算法,就可以實作目標了。推薦閱讀這篇文章Learning Convolutional Neural Networks for Graphs(圖4是其中一張圖片,可以看出大致的思路)。

圖4 vertex domain提取空間特征示意

這種方法主要的缺點如下:

c.每個頂點提取出來的neighbors不同,使得計算處理必須針對每個頂點

d.提取特征的效果可能沒有摺積好

當然,對這個思路喜歡的讀者可以繼續搜尋相關文獻,學術的魅力在於百家爭鳴嘛!

3.2 圖譜維度

Spectral domain 就是GCN的理論基礎了。這種思路就是希望借助圖譜的理論來實作拓撲圖上的摺積操作。從整個研究的時間行程來看:首先研究GSP(graph signal processing)的學者定義了graph上的Fourier Transformation,進而定義了graph上的Convolution,最後與深度學習結合提出了Graph Convolutional Network。

從上面的介紹可以看出,從vertex domain分析問題,需要逐節點(node-wise)的處理,而圖結構是非歐式的連線關系,這在很多場景下會有明顯的局限性。

而spectral domain是將問題轉換在「頻域」裏分析,不再需要node-wise的處理,對於很多場景能帶來意想不到的便利,也成為了GSP的基礎。

關於Spectral graph theory的具體介紹,可以參下面的一些資料,簡單的概括就是 借助於圖的拉普拉斯矩陣的特征值和特征向量來研究圖的性質。

Spectral graph theory

小傑:譜圖理論(spectral graph theory)

4 什麽是拉普拉斯矩陣?為什麽GCN要用拉普拉斯矩陣?

Graph Fourier Transformation及Graph Convolution的定義都用到圖的拉普拉斯矩陣,那麽首先來介紹一下拉普拉斯矩陣。

對於圖 G=(V,E) ,其Laplacian矩陣的定義為 L=D-A ,其中 L 是Laplacian 矩陣, D 是頂點的度矩陣(對角矩陣),對角線上元素依次為各個頂點的度, A 是圖的鄰接矩陣。看圖5的範例,就能很快知道Laplacian 矩陣的計算方法。

圖5 Laplacian 矩陣的計算方法

這裏要說明的是: 常用的拉普拉斯矩陣實際有三種:

No.1 L=D-A 定義的Laplacian 矩陣更專業的名稱叫 Combinatorial Laplacian

No.2 L^{sys}=D^{-1/2}LD^{-1/2} 定義的叫 Symmetric normalized Laplacian ,很多GCN的論文中套用的是這種拉普拉斯矩陣

No.3 L^{rw}=D^{-1}L 定義的叫 Random walk normalized Laplacian ,有讀者的留言說看到了 Graph Convolution與Diffusion相似之處 ,當然從Random walk normalized Laplacian就能看出了兩者確有相似之處( 其實兩者只差一個相似矩陣的變換 ,可以參考Diffusion-Convolutional Neural Networks,以及下圖)

不需要相關內容的讀者可以略過此部份

Diffusion Graph Convolution與Spectral Graph Convolution相似性證明

其實維基本科對Laplacian matrix的定義上寫得很清楚, 國內的一些介紹中只有第一種定義 。這讓我在最初看文獻的過程中感到一些的困惑,特意寫下來,幫助大家避免再遇到類似的問題。

為什麽GCN要用拉普拉斯矩陣?

拉普拉斯矩陣矩陣有很多良好的性質,這裏寫三點我感觸到的和GCN有關之處:

(1)拉普拉斯矩陣是對稱矩陣,可以進行特征分解(譜分解),這就和GCN的spectral domain對應上了

(2)拉普拉斯矩陣只在中心頂點和一階相連的頂點上(1-hop neighbor)有非0元素,其余之處均為0

(3)透過拉普拉斯算子與拉普拉斯矩陣進行類比(詳見第6節)

兩者的關系可以參考我的另一個文章:

5 拉普拉斯矩陣的譜分解(特征分解)

GCN的核心基於拉普拉斯矩陣的譜分解,文獻中對於這部份內容沒有講解太多,初學者可能會遇到不少誤區,所以先了解一下特征分解。

矩陣的譜分解,特征分解,對角化都是同一個概念 (特征分解_百度百科)。

不是所有的矩陣都可以特征分解 ,其充要條件為n階方陣存在n個線性獨立的特征向量。

但是拉普拉斯矩陣是半正定對稱矩陣 (半正定矩陣本身就是對稱矩陣,半正定矩陣_百度百科,此處這樣寫為了和下面的性質對應,避免混淆),有如下三個性質:

  • 實對稱矩陣一定n個線性獨立的特征向量
  • 半正定矩陣的特征值一定非負
  • 實對陣矩陣的特征向量總是可以化成兩兩相互正交的正交矩陣
  • 由上可以知道拉普拉斯矩陣一定可以譜分解,且分解後有特殊的形式。

    對於拉普拉斯矩陣其譜分解為:

    L= U\left(\begin{matrix}\lambda_1 & \\&\ddots \\ &&\lambda_n \end{matrix}\right) U^{-1}

    其中 U=(\vec{u_1},\vec{u_2},\cdots,\vec{u_n}) ,是 列向量 為單位特征向量的矩陣, 也就說 \vec{u_l} 是列向量

    \left(\begin{matrix}\lambda_1 & \\&\ddots \\ &&\lambda_n \end{matrix}\right) 是n個特征值構成的對角陣。

    由於 U 是正交矩陣,即 UU^{T}=E , E 是單位矩陣。

    所以特征分解又可以寫成:

    L= U\left(\begin{matrix}\lambda_1 & \\&\ddots \\ &&\lambda_n \end{matrix}\right) U^{T}

    文獻中都是最後匯出的這個公式,但大家不要誤解,特征分解最右邊的是特征矩陣的逆,只是拉普拉斯矩陣的性質才可以寫成特征矩陣的轉置。

    其實從上可以看出:整個推導用到了很多數學的性質,在這裏寫得詳細一些,避免大家形成錯誤的理解。

    6 如何從傳統的傅立葉變換、摺積類比到Graph上的傅立葉變換及摺積?

    把傳統的傅立葉變換以及摺積遷移到Graph上來,核心工作其實就是把拉普拉斯算子的特征函數 e^{-i\omega t} 變為Graph對應的拉普拉斯矩陣的特征向量

    6.1 推廣傅立葉變換

    想親自躬行的讀者可以閱讀The Emerging Field of Signal Processing on Graphs: Extending High-Dimensional Data Analysis to Networks and Other Irregular Domains這篇論文,下面是我的理解與提煉:

    (a)Graph上的傅立葉變換

    傳統的傅立葉變換定義為:

    F(\omega)=\mathcal{F}[f(t)]=\int_{}^{}f(t)e^{-i\omega t} dt

    訊號 f(t) 與基函數 e^{-i\omega t} 的積分, 那麽為什麽要找 e^{-i\omega t} 作為基函數呢?從數學上看, e^{-i\omega t} 是拉普拉斯算子的特征函數(滿足特征方程式), \omega 就和特征值有關。

    廣義的特征方程式定義為:

    A V=\lambda V

    其中 A 是一種變換, V 是特征向量或者特征函數(無窮維的向量), \lambda 是特征值。

    e^{-i\omega t} 滿足:

    \Delta e^{-i\omega t}=\frac{\partial^{2}}{\partial t^{2}} e^{-i\omega t}=-\omega^{2} e^{-i\omega t}\

    當然 e^{-i\omega t} 就是變換 \Delta 的特征函數, \omega 和特征值密切相關

    那麽,可以聯想了, 處理Graph問題的時候,用到拉普拉斯矩陣 (拉普拉斯矩陣就是離散拉普拉斯算子,想了解更多可以參考Discrete Laplace operator), 自然就去找拉普拉斯矩陣的特征向量了。

    L 是拉普拉斯矩陣, V 是其特征向量,自然滿足下式:

    LV=\lambda V

    離散積分就是一種內積形式,仿上定義Graph上的傅立葉變換:

    F(\lambda_l)=\hat{f}(\lambda_l)=\sum_{i=1}^{N}{f(i) u_l^*(i)}

    f 是Graph上的 N 維向量, f(i) 與Graph的頂點一一對應, u_l(i) 表示第 l 個特征向量的第 i 個分量。那麽特征值(頻率) \lambda_l 下的, f 的Graph 傅立葉變換就是與 \lambda_l 對應的特征向量 u_l 進行內積運算。

    註:上述的內積運算是在復數空間中定義的, 所以采用了 u_l^*(i) ,也就是特征向量 u_l 的共軛。 Inner product更多可以參考Inner product space。

    利用矩陣乘法將Graph上的傅立葉變換推廣到矩陣形式:

    \left(\begin{matrix} \hat{f}(\lambda_1)\\ \hat{f}(\lambda_2) \\ \vdots \\\hat{f}(\lambda_N) \end{matrix}\right)=\left(\begin{matrix}\ u_1(1) &u_1(2)& \dots &u_1(N) \\u_2(1) &u_2(2)& \dots &u_2(N)\\ \vdots &\vdots &\ddots & \vdots\\ u_N(1) &u_N(2)& \dots &u_N(N) \end{matrix}\right)\left(\begin{matrix}f(1)\\ f(2) \\ \vdots \\f(N) \end{matrix}\right)

    f 在Graph上傅立葉變換的矩陣形式為 : \hat{f}=U^Tf \qquad(a)

    式中: U^T 的定義與第五節中的相同

    (b)Graph上的傅立葉逆變換

    類似地, 傳統的傅立葉逆變換是對頻率 \omega 求積分:

    \mathcal{F}^{-1}[F(\omega)]=\frac{1}{2\Pi}\int_{}^{}F(\omega)e^{i\omega t} d\omega

    遷移到Graph上變為對特征值 \lambda_l 求和:

    f(i)=\sum_{l=1}^{N}{\hat{f}(\lambda_l) u_l(i)}

    利用矩陣乘法將Graph上的傅立葉逆變換推廣到矩陣形式:

    \left(\begin{matrix}f(1)\\ f(2) \\ \vdots \\f(N) \end{matrix}\right)= \left(\begin{matrix}\ u_1(1) &u_2(1)& \dots &u_N(1) \\u_1(2) &u_2(2)& \dots &u_N(2)\\ \vdots &\vdots &\ddots & \vdots\\ u_1(N) &u_2(N)& \dots &u_N(N) \end{matrix}\right) \left(\begin{matrix} \hat{f}(\lambda_1)\\ \hat{f}(\lambda_2) \\ \vdots \\\hat{f}(\lambda_N) \end{matrix}\right)

    f 在Graph上傅立葉逆變換的矩陣形式為: f=U\hat{f} \qquad(b)

    式中: U 的定義與第五節中的相同

    6.2 推廣摺積

    在上面的基礎上,利用 摺積定理 類比來將摺積運算,推廣到Graph上。

    摺積定理:函數摺積的傅立葉變換是函數傅立葉變換的乘積,即對於函數 f(t) 與 h(t) 兩者的摺積是其函數傅立葉變換乘積的逆變換:

    f*h=\mathcal{F}^{-1}\left[ \hat{f}(\omega)\hat{h}(\omega) \right]=\frac{1}{2\Pi}\int_{}^{} \hat{f}(\omega)\hat{h}(\omega)e^{i\omega t} d\omega

    類比到Graph上並把傅立葉變換的定義帶入, f 與摺積核 h 在Graph上的摺積可按下列步驟求出:

    f 的傅立葉變換為 \hat{f}=U^Tf

    摺積核 h 的傅立葉變換寫成對角矩陣的形式即為: \left(\begin{matrix}\hat h(\lambda_1) & \\&\ddots \\ &&\hat h(\lambda_n) \end{matrix}\right)

    \hat{h}(\lambda_l)=\sum_{i=1}^{N}{h(i) u_l^*(i)} 是 根據需要設計的摺積核 h 在Graph上的傅立葉變換。

    兩者的傅立葉變換乘積即為: \left(\begin{matrix}\hat h(\lambda_1) & \\&\ddots \\ &&\hat h(\lambda_n) \end{matrix}\right)U^Tf

    再乘以 U 求兩者傅立葉變換乘積的逆變換,則求出摺積:

    (f*h)_G= U\left(\begin{matrix}\hat h(\lambda_1) & \\&\ddots \\ &&\hat h(\lambda_n) \end{matrix}\right) U^Tf \qquad(1)

    式中: U 及U^{T} 的定義與第五節中的相同。

    註:很多論文中的Graph摺積公式為:

    (f*h)_G=U((U^Th)\odot(U^Tf)) \qquad(2)

    \odot 表示Hadamard product(哈達馬積),對於兩個維度相同的向量、矩陣、張量進行對應位置的逐元素乘積運算。

    其實式(2)與式(1)是完全等價的,詳細的證明見我的另一篇文章。

    這裏主要推(1)式是為了和後面的deep learning相結合。

    這部份理論也是我看了很久才想明白的,在此記錄下來,如果是想繼續探究理論的朋友,可以作為「入門小引」,畢竟理論還很深!對於喜歡實踐的朋友,也能初步了解理論基礎,也是「開卷有益」。

    7 為什麽拉普拉斯矩陣的 特征向量可以作為傅立葉變換的基?

    傅立葉變換一個本質理解就是: 把任意一個函數表示成了若幹個正交函數(由 \sin\omega t,\cos\omega t 構成)的線性組合。

    圖6 傅立葉逆變換圖示

    透過第六節中(b)式也能看出, graph傅立葉變換也把graph上定義的任意向量 f ,表示成了拉普拉斯矩陣特征向量的線性組合,即:

    f=\hat{f}(\lambda_1)u_1+\hat{f}(\lambda_2)u_2+\cdots +\hat{f}(\lambda_n)u_n

    那麽 :為什麽graph上任意的向量 f 都可以表示成這樣的線性組合?

    原因在於 (\vec{u_1},\vec{u_2},\cdots,\vec{u_n}) 是graph上 n 維空間中的 n 個線性獨立的正交向量 (原因參看第五節中拉普拉斯矩陣的性質),由線性代數的知識可以知道:n 維空間中 n 個線性獨立的向量可以構成空間的一組基,而且拉普拉斯矩陣的特征向量還是一組正交基。

    此外,對於傳統的傅立葉變換,拉普拉斯算子的特征值 \omega 表示諧波 \sin\omega t,\cos\omega t 的頻率。與之類似,拉普拉斯矩陣的特征值 \lambda_i 也表示圖拉普拉斯變換的頻率。具體的分析可以看如下的文章。

    Graph Convolution的理論告一段落了,下面開始介紹Graph Convolution Neural Network。

    8 Deep Learning中的Graph Convolution

    Deep learning 中的Graph Convolution直接看上去會和第6節推匯出的圖摺積公式有很大的不同,但是萬變不離其宗,(1)式是推導的本源。

    第1節的內容已經解釋得很清楚:Deep learning 中的Convolution就是要設計含有trainable共享參數的kernel,從(1)式看很直觀:graph convolution中的摺積參數就是 diag(\hat h(\lambda_l) ) 。

    8.1 第一代GCN

    Spectral Networks and Locally Connected Networks on Graphs中 簡單粗暴地把 diag(\hat h(\lambda_l) ) 變成了摺積核 diag(\theta_l ) 也就是:

    y_{output}=\sigma \left(U g_\theta(\Lambda) U^T x \right) \qquad(3)

    (為避免混淆,本文中稱 g_\theta(\Lambda) 是摺積核, U g_\theta(\Lambda) U^T 的運算結果為摺積運算矩陣)

    g_\theta(\Lambda)=\left(\begin{matrix}\theta_1 &\\&\ddots \\ &&\theta_n \end{matrix}\right)

    式(3)就是標準的第一代GCN中的layer了,其中 \sigma(\cdot) 是啟用函數, \Theta=({\theta_1},{\theta_2},\cdots,{\theta_n}) 就跟三層神經網絡中的weight一樣是任意的參數,透過初始化賦值然後利用誤差反向傳播進行調整, x 就是graph上對應於每個頂點的feature vector(由特數據集提取特征構成的向量)。

    第一代的參數方法存在著一些弊端:主要在於:

    (1)每一次前向傳播,都要計算 U ,diag(\theta_l ) 及 U^T 三者的矩陣乘積,特別是對於大規模的graph,計算的代價較高,也就是論文中 \mathcal{O}(n^3) 的計算復雜度

    (2)摺積核不具有spatial localization(這個在第9節中進一步闡述)

    (3)摺積核需要 n 個參數

    由於以上的缺點第二代的摺積核設計應運而生。

    8.2 第二代GCN

    (Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering),把 \hat h(\lambda_l) 巧妙地設計成了 \sum_{j=0}^K \alpha_j \lambda^j_l ,也就是:

    y_{output}=\sigma \left(U g_\theta(\Lambda) U^T x \right) \qquad(4)

    g_\theta(\Lambda)=\left(\begin{matrix}\sum_{j=0}^K \alpha_j \lambda^j_1 &\\&\ddots \\ && \sum_{j=0}^K \alpha_j \lambda^j_n \end{matrix}\right)

    上面的公式仿佛還什麽都看不出來,下面利用矩陣乘法進行變換,來一探究竟。

    \left(\begin{matrix}\sum_{j=0}^K \alpha_j \lambda^j_1 &\\&\ddots \\ && \sum_{j=0}^K \alpha_j \lambda^j_n \end{matrix}\right)=\sum_{j=0}^K \alpha_j \Lambda^j

    進而可以匯出:

    U \sum_{j=0}^K \alpha_j \Lambda^j U^T =\sum_{j=0}^K \alpha_j U\Lambda^j U^T = \sum_{j=0}^K \alpha_j L^j

    上式成立是因為 L^2=U \Lambda U^TU \Lambda U^T=U \Lambda^2 U^T 且 U^T U=E

    各符號的定義都同第五節。

    (4)式就變成了:

    y_{output}=\sigma \left( \sum_{j=0}^{K-1} \alpha_j L^j x \right) \qquad(5)

    其中 ({\alpha_0},{\alpha_1},\cdots,{\alpha_{K-1}}) 是任意的參數,透過初始化賦值然後利用誤差反向傳播進行調整。

    式(5)所設計的摺積核其優點在於在於:

    (1)摺積核只有 K 個參數,一般 K 遠小於 n ,參數的復雜度被大大降低了。

    (2)矩陣變換後,神奇地發現不需要做特征分解了,直接用拉普拉斯矩陣 L 進行變換。然而由於要計算 L^j ,計算復雜度還是 \mathcal{O}(n^3)

    (3)摺積核具有很好的spatial localization,特別地, K 就是摺積核的receptive field,也就是說每次摺積會將中心頂點K-hop neighbor上的feature進行加權求和,權系數就是 \alpha_k

    更直觀地看, K =1就是對每個頂點上一階neighbor的feature進行加權求和,如下圖所示:

    圖7 k=1 的graph convolution示意

    同理, K =2的情形如下圖所示:

    圖8 k=2 的graph convolution示意

    註:上圖只是以一個頂點作為例項,GCN每一次摺積對所有的頂點都完成了圖示的操作。

    8.3 利用Chebyshev多項式作為摺積核

    在GCN領域中,利用Chebyshev多項式作為摺積核是非常通用的形式。針對這部份內容,我專門整理了如下的文章。

    上述的內容已經闡明了GCN的整體思路,其他的一些形式都是「萬變不離其宗」。例如Semi-Supervised classification with Graph Convolutional Networks一文中的GCN形式,其實是二階Chebyshev多項式推匯出的特例。

    在我最近發表的一篇論文中:就是用這種GCN形式作為基於有限檢測器的路網規模交通流量估計問題(一種特殊的時空矩陣填充問題)的baseline,即原文4.2節部份的CGMC模型。感興趣的朋友可以閱讀如下的連結。

    Zhang, Z., Li, M., Lin, X., & Wang, Y. (2020). Network-wide traffic flow estimation with insufficient volume detection and crowdsourcing data. Transportation Research Part C: Emerging Technologies ,121, 102870.

    9 在GCN中的 Local Connectivity Parameter Sharing

    CNN中有兩大核心思想:網絡局部連線,摺積核參數共享。這兩點內容的詳細理解可以看我的這個回答。

    那麽我們不禁會聯想:這兩點在GCN中是怎樣的呢?以下圖的graph結構為例來探究一下。

    graph結構示意

    9.1 GCN中的Local Connectivity

    (a)如果利用第一代GCN,根據式(3)摺積運算矩陣( U g_\theta(\Lambda) U^T ) 即為:

    第一代摺積核示意(需要放大觀看)

    這個時候,可以發現這個摺積核沒有 local的性質,因為該摺積核得到的運算矩陣在所有位置上都有非0元素。以第一個頂點為例,如果考慮一階local關系的話,那麽摺積核中第一行應該只有[1,1],[1,2],[1,5]這三個位置的元素非0。換 句話說,這是一個global全連線的摺積核。

    (b)如果是第二代GCN,根據式(5)當 K=0 摺積運算矩陣即為:

    \left[ \begin{matrix} \alpha_0 & 0 & 0 &0&0&0\\ 0 & \alpha_0 & 0 &0&0&0 \\ 0 & 0 & \alpha_0 &0&0&0\\ 0 & 0 & 0 &\alpha_0&0&0\\ 0 & 0 & 0 &0&\alpha_0&0\\ 0 & 0 & 0 &0&0&\alpha_0 \end{matrix} \right]

    當 K=1 摺積運算矩陣即為:

    \left[ \begin{matrix} \alpha_0+2\alpha_1 & -\alpha_1 & 0 &0&-\alpha_1&0\\ -\alpha_1 & \alpha_0+3\alpha_1 & -\alpha_1 &0&-\alpha_1&0 \\ 0 &- \alpha_1 & \alpha_0+2\alpha_1 &-\alpha_1&0&0\\ 0 & 0 & -\alpha_1 &\alpha_0+3\alpha_1&-\alpha_1&-\alpha_1\\ -\alpha_1 & -\alpha_1 & 0 &-\alpha_1&\alpha_0+3\alpha_1&0\\ 0 & 0 & 0 &-\alpha_1&0&\alpha_0+\alpha_1 \end{matrix} \right]

    當 K=2 摺積運算矩陣即為:

    \left[ \begin{matrix} \alpha_0+2\alpha_1+6\alpha_2 & -\alpha_1-4\alpha_2 & \alpha_2 &\alpha_2&-\alpha_1-4\alpha_2&0\\ -\alpha_1-4\alpha_2 & \alpha_0+3\alpha_1+12\alpha_2 & -\alpha_1-5\alpha_2 &2\alpha_2&-\alpha_1-5\alpha_2&0 \\ \alpha_2 &- \alpha_1-5\alpha_2 & \alpha_0+2\alpha_1+6\alpha_2 &-\alpha_1-5\alpha_2&2\alpha_2&\alpha_2\\ \alpha_2 & 2\alpha_2 & -\alpha_1-5\alpha_2 &\alpha_0+3\alpha_1+12\alpha_2&-\alpha_1-6\alpha_2&-\alpha_1-4\alpha_2\\ -\alpha_1-4\alpha_2 & -\alpha_1-5\alpha_2 & 2\alpha_2 &-\alpha_1-6\alpha_2&\alpha_0+3\alpha_1+12\alpha_2&\alpha_2\\ 0 & 0 & \alpha_2 &-\alpha_1-4\alpha_2&\alpha_2&\alpha_0+\alpha_1+2\alpha_2 \end{matrix} \right]

    看一下圖的鄰接結構,摺積運算矩陣的非0元素都在localize的位置上。

    9.2 GCN中的Parameter Sharing

    相關內容比較多,我專門寫了一篇文章,感興趣的朋友可以閱讀一下。

    在我最近新發表的一篇論文中, 就充分利用摺積模組,提出了結合圖摺積(GCN)與 1\times1 摺積的全新GRU單元,進一步構建雙向迴圈神經網絡,來一體化解決路網級即時交通數據補全與預測問題,算例實驗充分討論了該模型對於提取時空數據中語意資訊的有效性。

    論文連結如下 歡迎感興趣的朋友下載閱讀

    如果這篇論文的內容對於大家的研究工作有幫助,也希望進行參照。

    Zhang, Z., Lin, X., Li, M., & Wang, Y. (2021). A customized deep learning approach to integrate network-scale online traffic data imputation and prediction. Transportation Research Part C: Emerging Technologies , 132, 103372.

    10 GCN的可解釋性

    前面的內容,已經介紹了GCN的基本原理以及一些特性的理解。 這章節的內容是我個人的部份研究工作,將GCN套用於大規模交通路網速度預測問題中,透過參數的視覺化,給出了所提出深度學習模型的可解釋性分析。 感興趣的朋友可以閱讀一下我們的論文。

    如果這個回答的內容對於大家的研究工作有幫助,也希望參照我們的論文。

    Zhang, Z., Li, M., Lin, X., Wang, Y., & He, F. (2019). Multistep speed prediction on traffic networks: A deep learning approach considering spatio-temporal dependencies. Transportation Research Part C: Emerging Technologies , 105, 297-322.

    11 關於有向圖問題

    前面的理論推導都是 關於無向圖, 如果是 有向圖問題,最大的區別就是鄰接矩陣會變成非對稱矩陣, 這個時候不能直接定義 拉普利矩陣及其譜分解(拉普拉斯矩陣本身是定義在無向圖上的)。這個時候有兩條思路解決問題:

    (a)要想保持理論上的完美,就需要重新定義圖的鄰接關系,保持對稱性

    比如MotifNet: a motif-based Graph Convolutional Network for directed graphs 提出利用 Graph Motifs定義圖的鄰接關系。

    (b)如果只是為了套用,有其他形式的GCN或者GAT可以處理有向圖

    簡而言之,要想簡單地處理有向圖問題,那就換成一種逐頂點(node-wise)的運算方式,可以參考下面這篇文章中的3.2及3.3節。

    值得說明的是:GAT作者寫道「It is worth noting that, as Kipf & Welling (2017) and Atwood & Towsley (2016), our work can also be reformulated as a particular instance of MoNet (Monti et al., 2016). 」

    也就是說本質上這些模型都可以認為是在重新定義了圖的鄰接關系後,再進行基本的摺積運算。

    12 GCN的過度平滑問題

    公式(5)給出的摺積核中,含有拉普拉斯矩陣的 j 次冪。 當 j 的取值較大時,GCN學習到的特征可能會存在過度平滑現象,即每個頂點的輸出特征都十分相似。這個問題的原因及解決方法可以參考我下面的回答。

    13 GCN的相關資料

    ——————GCN的綜述與論文合輯————————

    ——————動手教程————————

    ——————華麗的分割線————————

    還寫了一些關於機器學習比較熱點的文章,大家有需要可以看看,一起學習進步!