圖卷積神經網絡
現實世界許多資料都是以graph的形式存儲的,比如social networks(社交網絡),knowledge graphs(知識圖譜),最近有一些研究者把目光投向建立一種通用的神經網絡模型處理graph資料。
圖上的卷積網絡從卷積方式上可以分為兩種:1.譜(spectral)卷積,2.空間域卷積。譜卷積将卷積網絡的濾波器與圖信号同時搬移到傅裡葉域以後進行處理。而空間域的卷積,讓圖中的節點在空間域中相連、達成層級結構,進而進行卷積。

由于大家的思想普遍是如何将CNN等神經網絡的思想遷移到graph上,是以往往設計出來的結構都有一定的共性,使用類似convolution權重共享的思想,我們可以把這類網絡暫且稱為Graph Convolutional Networks(GCNs)。這類網絡從數學上來看,是想學習G=(V,E)上的一個函數,該函數的輸入是:
每一個節點的特征表示,如果節點數為N,特征次元為D維,則所有節點的特征組成一個的矩陣
圖結構的表達,往往使用圖的鄰接矩陣A表示
該函數産生一個node-level的輸出Z(是一個的矩陣,N代表點數量,每一行代表一個節點,F代表節點特征向量的次元)。如果想要得到graph-level的特征表達,隻需要将每一個node的表達綜合起來再經過一個映射操作即可。
和卷積神經網絡一樣,對于graph的特征提取我們同樣可以使用多層神經網絡結構,對于每一層,我們可以使用如下的映射函數來計算:
,X是圖的輸入,Z是圖的輸出,L是模型的層數。表示第l層graph的node-level表達,是一個維的矩陣,N代表node數量,代表第l層節點表達的次元(節點表達的次元可以在每一層都不一樣,由f決定可以靈活設定);
對于層間的映射函數f,我們可以采用如下式的方式實作:
其中,,,是非線性激活函數。這裡簡單解釋一下這麼做的實體意義,鄰接矩陣與相乘的作用是使節點的鄰接節點值求和聚集到該節點上,為了不丢失該節點本來資訊,我們往往會強制每一個節點到自己也有一個連接配接,即一個self-loop,相當于讓鄰接矩陣A加上一個機關矩陣I,則上式變成如下形式
不過我們還可以對模型進行更近一個的改進。鄰接矩陣并沒有歸一化,這樣會導緻每經過一次相乘節點特征的尺度就會變大,這樣我們可以進一步将公式變為如下形式:
利用上面介紹的模型實作一個分類問題。資料集可以以下圖的形式呈現,簡單介紹的話就是說一個空手道俱樂部内部出現沖突要被拆分為兩波人,我們需要依據隊員們平時的交往關系來判斷他們會站哪一支隊伍,圖中每個節點表示一個隊員,若兩個節點之間存在邊,則表示對應兩個隊員之間關系密切。
結果如下
GCN模型同樣具備深度學習的三種性質:
層級結構(特征一層一層抽取,一層比一層更抽象,更進階)
非線性變換(增加模型的表達能力)
端對端訓練(不需要再去定義任何規則,隻需給圖的節點一個标記,讓模型自己學習,融合特征資訊和結構資訊)
GCN四個特征:
GCN是對卷積神經網絡在graph domain上的自然推廣。
它能同時對節點特征資訊與結構資訊進行端對端學習,是目前對圖資料學習任務的最佳選擇。
圖卷積适用性極廣,适用于任何拓撲結構的節點與圖。
在節點分類與邊預測等任務上,在公開資料集上效果遠遠優于其他方法。