圖上的機器學習系列-聊聊GraphSAGE

前言


本篇結合《Inductive Representation Learning on Large Graphs》來聊聊GraphSAGE。這是一種已經在工業界得到廣泛採納的圖神經網絡方法,具有較好的分佈式實施特性,推薦大家關注。

方法定義


GraphSAGE是Graph SAmple and aggreGatE的簡稱,可以猜想該方法在抽樣與聚合上一定有其獨到之處。其更正式的定義如下(來自參考資料2):

GraphSAGE is a framework for inductive representation learning on large graphs. GraphSAGE is used to generate low-dimensional vector representations for nodes, and is especially useful for graphs that have rich node attribute information.

可以看到它本質上開展的是一種Graph Embedding的工作,即將圖中的每一個節點最終表示成一個更低維空間中的向量。這與我們此前講過的DeepWalk、Node2Vec就有了共同話題了。但仔細回想一下我們可以發現,後面兩者的算法過程中更多是通過將節點所在的網絡拓撲結構信息轉化成向量,並保持了節點之間的相似性。而GraphSAGE則明確可以包含節點本身的屬性信息,所以這一點上是有所進步的。

同時,注意其定義中有一個詞叫“inductive”,這個詞很重要,很重要,很重要(說三遍)。就像某些人擁有與衆不同、令人印象深刻的特徵一樣,它讓GraphSAGE具有了非常獨特的氣質,開創了一種新的潮流。

從字面上說,inductive可譯爲“歸納”。歸納法一般是指人們通過總結歷史上的一系列經驗,得到了一個普遍的規律,並猜想相同的事物都會遵循這個規律。例如“金導電、銀導電、銅導電、鐵導電、錫導電;所以一切金屬都導電”。在GraphSAGE的算法中,它使用這個術語是用於表達它學習到了一種從節點鄰居信息中提煉節點向量化表示的方法,該方法可以適用於新的未曾見過的節點。就彷彿被“授人以漁”了。用論文中的原話來講:

Instead of training a distinct embedding vector for each node, we train a set of aggregator functions that learn to aggregate feature information from a node’s local neighborhood.

Pretty cool, right?
與之相對地,如果對於新的節點,還要重新訓練一翻才能得到新節點的向量化表示,則稱這類方法爲“transductive”方法。日後別人聊到Graph Embedding時,你可以先問他一句“你這種方法是inductive的,還是transductive”,保證一秒鐘讓對方知道你也是行內人士:)

 

GraphSAGE原理消化

這張圖可謂濃縮了GraphSAGE的精華,建議深深地印入腦海裏。與此同時,我們肯定在腦海中會浮現出幾個疑問:
1. 節點的鄰域(neighborhood)怎麼界定?直接有邊相連的?隨機遊走的?
2. 領域中的信息(包括了節點本身的屬性信息,以及網絡拓撲結構信息)怎麼aggregate起來?
3. 傳播、聚合看上去是一個迭代重複進行的過程,那麼迭代多少次停止呢?
4. 最終的向量化表達,其中的每個向量元素是怎麼來的?
 
在邏輯上搞清楚了這幾個問題,即使暫時不是特別清楚計算機如果實現,也不妨礙我們已經入門了該方法,剩下的無非是理論結合實踐多去琢磨就是了。

同時,也把論文中的算法僞代碼放進來幫助我們理解算法執行過程。

關於第1個問題,論文中是這樣表述的:

we uniformly sample a fixed-size set of neighbors, instead of using full neighborhood sets in Algorithm…we draw different uniform samples at each iteration, k, in Algorithm 1.

 

所以,並不是取了每個節點所有鄰居來彙總信息,而是指定了鄰居個數後隨機抽樣。可見這也是一個超參數(需要實驗者自己進行一翻調參後發現一個比較好的參數值),作者在論文中的實驗採用了“neighborhood sample sizes S1 = 25 and S2 = 10”的設定。

關於第2個問題,論文的作者給出了好幾種可選的aggregate方法。包括Mean、LSTM、Pooling。通過實驗,作者說 LSTM- and pool-based 聚合方法效果更好。

關於第3個問題,這個問題其實等於問K設定多少比較合適。呃,這也是一個超參數,作者在論文中使用了K=2的設定,且效果還不錯。

關於第4個問題,我們還記得DeepWalk、Node2Vec中,最終的向量其實來自於Word2Vec算法過程中神經網絡隱藏層的權重向量。那麼GraphSAGE呢?首先我們看到原始輸入中,其實是把每個節點自己的屬性信息傳入了進來,然後就可以不斷計算出每個節點的一個向量化表示。但這其中依賴於W這個權重矩陣,所以還依賴於最終對該參數的最優化。這一個部分的操作與LINE方法類似,通過定義下面這樣一個損失函數,再加隨機梯度下降的方法來反覆更新W,直到損失函數求得極值。

 

 參考資料


1. 提出GraphSage的論文《Inductive Representation Learning on Large Graphs》
2. GraphSage官方論壇 [http://snap.stanford.edu/graphsage/]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章