簡單的圖的參數介紹: \(\mathcal { G } = ( V , E , A )\)node
圖網絡有不少結構, 這裏按照最新的綜述論文 A Comprehensive Survey on Graph Neural Networks 文中的分類方式, 主要分爲:算法
這裏主要介紹圖卷積網絡GCN. 由於GCN在捕獲結構化依賴上扮演着中心角色.api
Inspired by the huge success of convolutional networks in the computer vision domain, a large number of methods that re-define the notation of convolutionfor graph data have emerged recently.網絡
These approaches are under the umbrella of graph convolutional networks (GCNs). The first prominent research on GCNs is presented in Bruna et al. (2013), which develops a variant of graph convolution based on spectral graph theory [20]. Since that time, there have been increasing improvements, extensions, and approximations on spectral-based graph convolutional networks [12], [14],[21], [22], [23].架構
As spectral methods usually handle the whole graph simultaneously and are difficult to parallel or scale to large graphs, spatial-based graph convolutional networks have rapidly developed recently [24], [25], [26],[27]. These methods directly perform the convolution in the graph domain by aggregating the neighbor nodes' information. Together with sampling strategies, the computation can be performed in a batch of nodes instead of the whole graph[24], [27], which has the potential to improve the efficiency.app
將應用於傳統數據的卷積操做, 泛化到了圖數據上面. 關鍵是學習一個函數f, 來經過集成本身和鄰居的特徵生成節點的表示. GCN在構建其餘複雜的圖神經網絡的任務上, 扮演着重要的角色. 包括auto-encoder-based models, generative models, spatial-temporal networks等.dom
對於GCN而言, 在集成鄰居的過程的時候, 使用的權重是無參數的, 而GAN(圖注意力網絡)使用了一個端到端神經網絡架構捕獲的權重, 來使得更重要的節點擁有更大的權重.(這裏更多的是表述空域的GCN)異步
對於圖卷積網絡, 實際上是在嘗試經過圖譜理論或者局部空間來定義圖卷積的方式來在圖數據上覆制CNN的成功.ide
使用圖結構和節點內容信息做爲輸入, GCN的輸出使用如下不一樣的機制, 能夠關注於不一樣的圖分析任務.函數
這裏有一個總結的表, 總結了主要方法的狀況:
對於圖卷積網絡, 是能夠經過半監督/全監督/無監督的方式進行端到端訓練的, 注意取決於學習任務和標籤信息的獲取.
基於圖信號處理的知識, 圖上的卷積能夠被定義爲: \(\mathbf { x } * _ { G } \mathbf { g } _ { \theta } = \mathbf { U } \mathbf { g } _ { \theta } \mathbf { U } ^ { T } \mathbf { x }\)
其中\(\mathbf { g } _ { \theta } = \operatorname { diag } \left( \mathbf { U } ^ { T } \mathbf { g } \right)\)表示濾波器. 能夠看作是L特徵值的函數, 也就是 \(g _ { \theta } ( \Lambda )\).
這裏有\(\mathbf { x } \in \mathbf { R } ^ { N }\), xi表示第i個節點的值(這裏至關於節點的特徵向量長度只有1).
這個等式計算消耗大, 計算L的特徵分解對於大圖來講多是很是昂貴的.
在後續的改進中, 這裏的信號的設定被進一步擴展, 輸入信號表示爲: \(\mathbf { X } ^ { k } \in \mathbf { R } ^ { N \times f _ { k - 1 } }\), 這裏\(f_k-1\)表示輸入通道數, \(f_k\)表示輸出通道數. 濾波器也整合表示爲\(\mathbf { g } _ { \theta } = \Theta _ { i , j } ^ { k }\), 表示爲:
\(\mathbf { X } _ { : , j } ^ { k + 1 } = \sigma \left( \sum _ { i = 1 } ^ { f _ { k - 1 } } \mathbf { U } \Theta _ { i , j } ^ { k } \mathbf { U } ^ { T } \mathbf { X } _ { \mathbf { s } , i } ^ { k } \right) \quad \left( j = 1,2 , \cdots , f _ { k } \right)\)
這裏的 \(\sigma\) 表示的是一個非線性轉換.
以後有人利用切比雪夫多項式來近似表示了濾波器, 進一步簡化了公式的計算:
\(\mathbf { g } _ { \theta } = \sum _ { i = 1 } ^ { K } \theta _ { i } T _ { k } ( \tilde { \boldsymbol { \Lambda } } ) ,\) where \(\tilde { \boldsymbol { \Lambda } } = 2 \Lambda / \lambda _ { \max } - \mathbf { I } _ { \mathrm { N } }\)
Chebyshev polynomials are defined recursively by \(T _ { k } ( x ) = 2 x T _ { k - 1 } ( x ) - T _ { k - 2 } ( x )\) with \(T _ { 0 } ( x ) = 1\) and \(T _ { 1 } ( x ) = x\)
所以卷積操做進一步表示爲:
\(\begin{aligned} \mathbf { x } * _ { G } \mathbf { g } _ { \theta } & = \mathbf { U } \left( \sum _ { i = 1 } ^ { K } \theta _ { i } T _ { k } ( \tilde { \boldsymbol { \Lambda } } ) \right) \mathbf { U } ^ { T } \mathbf { x } \\ & = \sum _ { i = 1 } ^ { K } \theta _ { i } T _ { i } ( \tilde { \mathbf { L } } ) \mathbf { x } \\ \text { where } \tilde { \mathbf { L } } = 2 \mathbf { L } / \lambda _ { \max } - \mathbf { I } _ { \mathrm { N } } \end{aligned}\)
這個時候, 能夠看這個表達式, 這個卷積的計算只依賴於中心節點的K階鄰居.(K步之內可達的節點). 並且這樣定義的濾波器也是稀疏的.
當前面的公式中, K=1的時候, 而且使得 \(\lambda_{max}=2\), 則進一步簡化爲:
\(\mathbf { x } * _ { G } \mathbf { g } _ { \theta } = \theta _ { 0 } \mathbf { x } - \theta _ { 1 } \mathbf { D } ^ { - \frac { 1 } { 2 } } \mathbf { A } \mathbf { D } ^ { - \frac { 1 } { 2 } } \mathbf { x }\)
爲了進一步減小參數, 以免過擬合, 這裏進行了進一步簡化, 讓兩個 \(\theta\) 相反. 也就是\(\theta = \theta _ { 0 } = - \theta _ { 1 }\), 這就獲得了最終簡化後的定義:
\(\mathbf { x } * _ { G } \mathbf { g } _ { \theta } = \theta \left( \mathbf { I } _ { \mathbf { n } } + \mathbf { D } ^ { - \frac { 1 } { 2 } } \mathbf { A } \mathbf { D } ^ { - \frac { 1 } { 2 } } \right) \mathbf { x }\)
這裏最終表示爲:
\(\mathbf { X } ^ { \mathbf { k } + \mathbf { 1 } } = \tilde { \mathbf { A } } \mathbf { X } ^ { \mathbf { k } } \Theta\)
where \(\tilde { \mathbf { A } } = \mathbf { I } _ { \mathbf { N } } + \mathbf { D } ^ { - \frac { 1 } { 2 } } \mathbf { A } \mathbf { D } ^ { - \frac { 1 } { 2 } }\)
經過一階ChebNet定義的圖卷積在空間上是局部的, 這彌補了譜方法與空域方法的差異. 輸出的每行表示每一個節點經過一個加權集成了自身和相鄰節點的信息了的線性轉換來得到的潛在表徵.
然而, 一階ChebNet主要的問題是, 在批量訓練過程當中,隨着1stChebNet層數的增長,計算代價呈指數增加. 最後一層中的每一個節點必須在之前的層中遞歸地擴展其鄰域. 一些工做已這對這些問題進行了改進.
爲了探索沒有被圖拉普拉斯矩陣指定的隱藏結構關係, 有人提出了AGCN, AGCN用一個所謂的殘差圖來擴充一個圖,這個圖是經過計算節點之間的成對距離來構造的, 儘管可以捕獲互補的關係信息, 可是它的計算複雜度爲\(O(N^2)\).
譜方法主要依賴於拉普拉斯矩陣的分解, 它有三種影響:
對於譜方法, 一般它們都須要載入整個圖到內存中, 來應用圖卷積, 這對於處理大的圖來講, 不是頗有效率.
空域方法定義卷積主要基於節點的空間關係. 爲了關聯圖和圖像, 圖像的每一個像素認爲是節點. 每一個像素直接鏈接到它的相鄰像素.
因爲相鄰節點的特殊排序,可訓練權值能夠在不一樣的位置共享。相似地,對於通常圖,基於空間的圖卷積採用中心節點表示和其鄰居表示的聚合來得到該節點的新表示。爲了探索節點感覺域的深度和寬度,一般的作法是將多個圖形卷積層堆疊在一塊兒.
根據卷積層疊加方法的不一樣,空間GCN又可分爲基於遞歸(recurrent-based)的GCN和基於合成(composition-based)的空間GCN兩大類. 基於遞歸的方法使用相同的圖卷積層來更新隱藏表示,而基於合成的方法使用不一樣的圖卷積層來更新隱藏表示.
基於遞歸的方法主要想法是更新節點節點的隱藏狀態直到獲得一個穩定的固定點. 這是經過施加對遞歸函數的約束,或者使用門控遞歸單元結構,或者異步地和隨機地更新節點潛在表示。
這是圖神經網絡的早期工做, GNN遞歸更新節點的潛在表徵, 直到收斂. 換句話說,從擴散過程的角度來看,每一個節點與鄰居交換信息直到達到平衡爲止。
爲了處理異質圖(heterogeneous graph), 這類GNN的空間圖卷積被定義爲
\(\mathbf { h } _ { v } ^ { t } = f \left( 1 _ { \mathbf { v } } , 1 _ { c o } [ v ] , \mathbf { h } _ { n e } ^ { t - 1 } [ v ] , \mathbf { l } _ { n e } [ v ] \right)\)
這裏使用了針對節點v的標籤屬性, 邊的標籤屬性, 其鄰居在時間步t的隱藏表徵, 以及其鄰居的標籤屬性.
爲了確保收斂, 遞歸函數必須是一個約束映射, 這個會在映射以後壓縮兩點之間的距離. 若f()是一個神經網絡, 那麼一個懲罰項就會使用在參數的Jacobian矩陣上.
Jacobian矩陣是一階偏導數以必定的方式排列成的矩陣.
GNN使用Almeida-Pineda算法來訓練模型. 核心思想是經過運行傳播過程到達固定點,而後給出收斂解的後向過程.
GGNN使用門控遞歸單元(GRU)做爲遞歸函數, 來說遞歸下降爲一個固定的步數.
GGNN的空間圖卷積定義爲:
\(\mathbf { h } _ { v } ^ { t } = G R U \left( \mathbf { h } _ { v } ^ { t - 1 } , \sum _ { u \in N ( v ) } \mathbf { W h } _ { u } ^ { t } \right)\)
不一樣於GNN, GGNN使用基於時間的反向傳播算法(BPTT)來學習參數, 它的優點在於不用再學習約束參數來確保收斂了. 然而,BPTT訓練的缺點是它犧牲了時間和存儲的效率. 尤爲是在處理大圖的時候, GGNN會在全部節點上運行遞歸函數屢次, 須要全部節點的中間態被存儲下來.
爲了提高學習效率, SSE算法用來隨機地更新節點的潛在表徵, 以一種異步的方式. 下面是SSE的迭代算法.
如上, SSE迭代評估節點潛在表徵而且使用抽樣的批數據更新參數.
爲了確保收斂到穩態, 遞歸函數被定義爲一個歷史狀態和新狀態的加權平均.
\(\mathbf { h } _ { \mathbf { v } } ^ { t } = ( 1 - \alpha ) \mathbf { h } _ { \mathbf { v } } ^ { t - 1 } + \alpha \mathbf { W } _ { \mathbf { 1 } } \sigma \left( \mathbf { W } _ { 2 } \left[ \mathbf { x } _ { \mathbf { v } } , \sum _ { u \in N ( v ) } \left[ \mathbf { h } _ { \mathbf { u } } ^ { t - 1 } , \mathbf { x } _ { \mathbf { u } } \right] \right] \right) \; (10)\)
上式中, 第二項應該是新的結果, 結合第一項的歷史狀態, 能夠獲得新的真正的狀態.
雖然對鄰域信息的求和隱含地考慮了節點度,但這種求和的規模是否影響該算法的穩定性還是個問題.
基於合成的方法更新節點表徵, 經過堆疊多個圖卷積層.
MPNN包含兩個階段, 消息傳送階段(message passing phase)和讀出階段(readout phase). 消息傳送階段實際上運行T步的空間圖卷積. 圖卷積操做經過消息函數\(M_t()\)和一個更新函數\(U_t()\)來定義:
\(\mathbf { h } _ { v } ^ { t } = \mathbf { U } _ { t } \left( \mathbf { h } _ { v } ^ { t - 1 } , \sum _ { w \in N ( v ) } M _ { t } \left( \mathbf { h } _ { v } ^ { t - 1 } , \mathbf { h } _ { w } ^ { t - 1 } , \mathbf { e } _ { v w } \right) \right)\)
經過函數M傳遞來自舊狀態的消息獲得新的狀態, 使用U來結合新舊狀態進行更新, 獲得當前時間的真正狀態.
這裏的讀出階段其實是一個池化操做, 產生了一個整個圖的表徵, 基於每一個單獨節點的隱藏表徵. 它被定義爲:
\(\hat { \mathbf { y } } = R \left( \mathbf { h } _ { v } ^ { T } | v \in G \right)\)
經過函數R的輸出, 最終的表徵y被用來處理圖級預測任務. 不少的其餘工做均可以看作是使用了U,M的不一樣形式的結果.
引入了聚合函數的概念來定義圖的卷積, 聚合函數實質上是聚合節點的鄰域信息. 它必須對節點順序的排列具備不變性, 例如求均值、和、極大值函數等.
這樣的圖卷積操做能夠被定義爲:
\(\mathbf { h } _ { v } ^ { t } = \sigma \left( \mathbf { W } ^ { t } \cdot aggregate _ { k } \left( \mathbf { h } _ { v } ^ { t - 1 } , \left\{ \mathbf { h } _ { u } ^ { k - 1 } , \forall u \in \mathcal { N } ( v ) \right\} \right)\right.\)
GraphSage並無在全部節點上更新狀態, 而是提出了一個批學習算法, 這個提高了對於大圖的可擴展性. 其學習過程主要有三步:
對於GraphSage而言, 計算損耗隨着跳的階段的增長, 而呈指數增加. 這致使該算法不能有太深的結構, 然而, 實際測試, 跳兩步的GraphSage已經能夠是實現很高的性能了.
空域方法定義圖卷積, 經過集成來自鄰居的特徵信息. 更具不一樣的堆疊圖卷積層的方式, 主要分類兩種, 一種是基於遞歸的要得到節點的穩態的方法, 一種是基於組合的要去合併更高階的鄰域信息的方法.
在訓練時, 每一層中, 兩種方法都必須更新全部節點的隱藏狀態. 然而, 將全部的中間狀態存儲到內存中並非一個有效的策略. 爲了解決這個問題, 一些訓練策略被提出來, 包括針對組合方法的子圖訓練(GraphSage)和針對遞歸方法的隨機異步訓練(SSE)
泛化卷積神經網絡到圖結構數據的另外一個關鍵點, 那就是圖池化模塊了. 尤爲是對於圖級分類任務.
和原始CNN中的池化模塊相似, 圖池化模塊能夠容易的減小方差和經過從原始特徵數據中下采樣來減小計算複雜度.
Mean/max/sum池化是實現這一點的最原始和最有效的方法,由於在池化窗口中計算均值/最大/和值是快速的。
\(\mathbf { h } _ { G } = m e a n / \max / \operatorname { sum } \left( \mathbf { h } _ { 1 } ^ { T } , \mathbf { h } _ { 2 } ^ { T } , \ldots , \mathbf { h } _ { n } ^ { T } \right)\)
做爲針對圖數據的早期卷積網絡, 譜方法已經在許多圖相關分析任務中取得了不錯的結果. 這些模型出如今已有的在圖信號處理的理論基礎上. 經過設計新的圖信號濾波器, 能夠設計新的圖卷積網絡.
做爲最先的圖形數據卷積網絡,基於譜的模型在許多與圖形相關的分析任務中取得了使人印象深入的結果. 這些模型具備很好的吸引力,由於它們具備圖形信號處理的理論基礎. 經過設計新的圖信號濾波器[23],咱們能夠從理論上設計新的圖卷積網絡。
然而,基於譜的模型有幾個缺點, 咱們從效率、通常性和靈活性三個方面來講明這一點:
所以,空間模型近年來受到愈來愈多的關注.