前言node
在大型圖中,節點的低維向量embedding被證實了做爲各類各樣的預測和圖分析任務的特徵輸入是很是有用的。頂點embedding最基本的基本思想是使用降維技術從高維信息中提煉一個頂點的鄰居信息,存到低維向量中。這些頂點嵌入以後會做爲後續的機器學習系統的輸入,解決像頂點分類、聚類、連接預測這樣的問題
GCN基本思想:把一個節點在圖中的高緯度鄰接信息降維到一個低維的向量表示.算法
GCN的優勢: 能夠捕捉graph的全局信息,從而很好地表示node的特徵.網絡
GCN的缺點: Transductive learning的方式,須要把全部節點都參與訓練才能獲得node embedding,沒法快速獲得新node的embedding。框架
transductive learning機器學習
GCN的方法 本質上是transductive learning (直推式的),圖中的因此頂點都在訓練embedding時參與.函數
前人的工做專一於從一個固定的圖中對頂點進行表示,不少現實中的應用須要很快的對未見過的頂點或是全新的圖(子圖)生成embedding。這種推斷的能力對於高吞吐的機器學習系統來講很重要,這些系統都運做在不斷演化的圖上,並且時刻都會遇到未見過的頂點(好比Reddit上的帖子(posts),Youtube上的用戶或視頻)。所以,一種inductive的學習方法比transductive的更重要。
Transductive learning 獲得新節點的難處:post
要想獲得新節點的表示,須要讓新的graph或者subgraph去和已經優化好的node embedding去「對齊(align)」。然而每一個節點的表示都是受到其餘節點的影響,所以添加一個節點,意味着許許多多與之相關的節點的表示都應該調整。這會帶來極大的計算開銷,即便增長几個節點,也要徹底從新訓練全部的節點。學習
節點embedding優化
Grarep: Learning graph representations with global structural information. In KDD, 2015
node2vec: Scalable feature learning for networks. In KDD, 2016
Deepwalk: Online learning of social representations. In KDD, 2014
Line: Large-scale information network embedding. In WWW, 2015
Structural deep network embedding. In KDD, 2016
以上論文 embedding算法直接訓練單個節點的節點embedding,本質上是transductive.並且須要大量的額外訓練(如隨機梯度降低)使他們能預測新的頂點。spa
圖卷積網絡
Spectral networks and locally connected networks on graphs. In ICLR, 2014
Convolutional neural networks on graphs with fast localized spectral filtering. In NIPS, 2016
Convolutional networks on graphs for learning molecular fingerprints. In NIPS,2015
Semi-supervised classification with graph convolutional networks. In ICLR, 2016
Learning convolutional neural networks for graphs. In ICML, 2016
這些方法中的大多數不能擴展到大型圖,或者設計用於全圖分類(或者二者都是)
GraphSAGE能夠看做是對transductive的GCN框架對inductive下的擴展。
詳細介紹GCN:
GCN爲何出現?
當前的CNN RNN不可以處理圖結構的數據, 圖的結構不規則, 可認爲爲無線維的數據, 沒有平移不變性,
出現了 GNN, DeepWalk, node2vec等方法.
GNN 概述
GCN,圖卷積神經網絡,實際上跟CNN的做用同樣,就是一個特徵提取器,只不過它的對象是圖數據。GCN精妙地設計了一種從圖數據中提取特徵的方法,從而讓咱們可使用這些特徵去對圖數據進行節點分類(node classification)、圖分類(graph classification)、邊預測(link prediction),還能夠順便獲得圖的嵌入表示(graph embedding),可見用途普遍。所以如今人們腦洞大開,讓GCN到各個領域中發光發熱。
GCN的定義
設 圖中數據是 N個節點, 這些節點的特徵組成一個N*D維的矩陣$X$做爲特徵矩陣, 造成一個N*N的鄰接矩陣$A$,
通常在初始化時候:
$H_{v}^{0}=X_{v}^{0} \quad v\in NodeSet$
層以前的傳播方式:
$H^{l+1}=\sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}W^{(l)})$ (1)
$\tilde{A}=A+I$, I是一個單位矩陣,$\tilde{A}$是對稱矩陣
$\tilde{D}$是度量矩陣,D在實數域是正定對稱的,在複數域是hemite正定,$(\alpha,\beta)=x^{T}Ay$表示
$H^{l}$是每一層的特徵, 對於輸入層的話$H=x$
$\sigma$是非線性激活函數
$\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}$ 知道鄰接矩陣,能夠求得他的在線性空間中的一組基,
進行初等行變換,且A加上了單位矩陣且是對稱的,極易求解.整個部分能夠獲得.
Eqn. (1) 很好的提取了圖的特徵
經過若干層的 node的特徵由x變爲了z, node以前的鏈接關係 均可由鄰接矩陣 線性表述, 始終保持着
node之間的關係.
兩層 GCN, 激活函數爲Relu 和 Softmax 總體的forward:
$Z=f(X,A)= softmax(\hat{A}ReLU(\hat{A}XW^{0})W^{1})$,
where $\hat{A}=\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}$
若是任務是有監督的, 經過label計算crossentropy loss:
$L=- \sum \sum Y_{lf}lnZ_{lf}$
不多有節點有label, 因此稱爲semi-supervised.
每層 輸入都包含了鄰接矩陣A和node的特徵H, 直接作一個內積,再乘一個可學習的參數矩陣, 並進行
非線性激活,可簡單表示爲:
$f(H^{l},A)=\sigma(AH^{(l)}W^{(l)})$
這個簡單模型有一些侷限性:
1.因爲A爲對稱矩陣,且主對角線是0, 加上單位矩陣,便可引入本身的特徵,避免只計算neighbor特徵的加權和.
2.A是沒有通過歸一化的矩陣,這樣與特徵矩陣相乘會改變特徵本來的分佈,產生一些不可預測的問題。因此咱們對A作一個標準化處理。首先讓A的每一行加起來爲1,咱們能夠乘以一個$D^{-1}$, 進一步的將
$D^{-1}$拆開與A相乘,獲得對稱歸一化矩陣,與對稱歸一化拉普拉斯矩陣十分相似,而在譜圖卷積的核心就是使用對稱歸一化拉普拉斯矩陣,這也是GCN的卷積叫法的來歷
實驗結果:
由於即便不訓練,徹底使用隨機初始化的參數W,GCN提取出來的特徵就以及十分優秀了!這跟CNN不訓練是徹底不同的,後者不訓練是根本得不到什麼有效特徵的。
GCN網絡的層數多少比較好?論文的做者作過GCN網絡深度的對比研究,在他們的實驗中發現,GCN層數不宜多,2-3層的效果就很好了。