Introduction
這篇論文介紹了一種圖卷積網絡(Graph convolution network),該論文的圖卷積方法很容易理解,沒有涉及傅里葉變換。論文的出發點是爲圖中每個結點計算得到一個低維嵌入向量。已有的基於因式分解的嵌入方法直接爲每個單獨的結點訓練結點的嵌入向量,是transductive。不知道transductive該怎麼翻譯,我覺得它的意思得到的低維嵌入向量是特定於某個任務的,不是通過數據歸納得到的,泛化性能不好。論文提出來的GraphSAGE是一個泛化的歸納(inductive)框架。
與其他圖卷積網絡相比,該論文不需要計算整張圖的拉普拉斯矩陣,計算量少,適合用於有巨大的網絡結構的問題。
Method
圖卷積網絡的本質是圖中的每個結點無時無刻不因爲鄰居和更遠的點的影響而在改變着自己的狀態直到最終的平衡,關係越親近的鄰居影響越大1。圖的結點狀態的變化可以是一個迭代的過程,結點不斷地根據鄰居的信息改變自身的信息。論文的圖卷積方法會進行K次迭代,每次迭代通過聚集函數(aggregator function)聚合結點鄰居的信息來更新結點的信息,迭代完成之後,每個結點都得到一個低維的嵌入向量,被下游的機器學習算法用於預測。
Embedding generation
首先介紹結點嵌入向量的生成方法。算法本身如下圖所示
輸入的是一張圖,表示所有結點的集合,表示所有邊的集合。聚合函數,每個迭代一個。權重矩陣,每個迭代一個,用於聚合信息之後的線性變化。線性變化之後是非線性激活函數,比如ReLU。
首先是把每個結點初始化向量定義爲,表示結點。
接下來是K是迭代,在迭代中更新結點的狀態。
內層循環中,第4行,採樣結點v的鄰居信息,傳入聚合函數得到聚合信息。第5行,concat 和,之後是全連接的線性變化+非線性激活函數。
第7行,更新後的每個結點的嵌入向量要標準化。
迭代結束後,每個結點的嵌入向量記作,用於結點的預測。
算法的直觀示意圖是
GraphSAGE不會使用結點的所有鄰居,因爲結點可以有很多鄰居,考慮所有鄰居的信息會帶來很大的計算量,因此GraphSAGE只隨機採樣固定數量的鄰居,採樣數量。
Learning the parameters of GraphSAGE
GraphSAGE的參數可以通過無監督的方式進行訓練
該損失第一項目的是使鄰近的結點有相似的表徵,第二項是使不一樣的結點有截然不同的表徵。結點和結點的內積越大,說明二者之間相似性越高。應該是sigmoid函數。結點是結點固定跳數範圍內的結點。是負樣本的採樣概率分佈,是負樣本的數量。
如果樣本具有標籤,可以把無監督損失替換成監督損失,或者作爲額外的損失。
Aggregator Architectures
聚合函數的輸入是一堆無序的向量,因此聚合函數需要具備對稱性,現在也有論文稱permutation-invariant,無論輸入數據如何排列,聚合函數的輸出結果不變。具備這種性質的函數都可以作爲聚合函數。論文考慮了以下3中函數。
Mean aggregator:把鄰居的特徵向量和自身的特徵向量取平均,作爲新的特徵向量。把算法的第4和第5行換成下面的公式
LSTM aggregator:LSTM並不具有對稱性,但LSTM具有很強的表徵能力。
Pooling aggregator:
這裏max可以換成mean,但是實驗發現max效果更好。
Experiments
超參數設定:,,。
論文使用3種數據集,論文主題分類數據集、Reddit post 話題分類數據集和蛋白質功能分類的生物蛋白質-蛋白質相互作用(PPI)圖。
具體的實驗過程不多說了,直接看實驗結果