圖神經網路的介紹(基礎,DeepWalk和GraphSage)

dicksonjyl560101發表於2019-11-04
作者:Steeve Huang
編譯:ronghuaiyang

導讀

給大家介紹目前非常熱門的圖神經網路,包括基礎和兩個常用演算法,DeepWalk和GraphSage。

近年來,圖神經網路(GNN)在社交網路、知識圖譜、推薦系統甚至生命科學等各個領域得到了越來越廣泛的應用。GNN具有對圖中節點間依賴關係建模的強大功能,使得圖分析相關研究領域取得了突破。本文會介紹圖神經網路的基本原理,以及兩種更高階的演算法,DeepWalk和GraphSage。

在討論GNN之前,讓我們先了解什麼是 Graph。在電腦科學中,圖是由頂點和邊兩部分組成的資料結構。一個圖 G可以由它所包含的頂點 V和邊 E的集合很好地描述。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

根據頂點之間是否存在方向依賴關係,邊可以是有向的,也可以是無向的。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

有向圖

這些頂點通常稱為節點。在本文中,這兩個術語是可以互換的。

圖神經網路

圖神經網路是一種直接作用於圖結構上的神經網路。GNN的一個典型應用是節點分類。本質上,圖中的每個節點都與一個標籤相關聯,我們希望在沒有ground-truth的情況下預測節點的標籤。本節將說明本文中描述的演算法。第一個提出的GNN常常被稱為原始GNN。

在節點分類問題設定中,每個節點 v的特徵是 x_v,並與一個ground-truth標籤 t_v關聯。給定一個部分標記的圖 G,目標是利用這些標記的節點來預測未標記的標籤。它學習用一個 d維向量(狀態) h_v表示每個節點,其中包含其鄰域的資訊。具體地說,

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

其中 x_co[v]表示與 v相連的邊的特徵, h_ne[v]表示與 v相鄰節點的嵌入, x_ne[v]表示與 v相鄰節點的特徵。函式 f是將這些輸入投射到d維空間的轉換函式。因為我們正在為h_v尋找一個惟一的解,所以我們可以應用Banach定點定理並將上面的等式重寫為迭代更新過程。這種操作通常稱為 訊息傳遞鄰居聚合

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

H和X分別表示所有H和X的級聯。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

H和X分別表示所有H和X的級聯。

透過將狀態 h_v和特徵 x_v傳遞給輸出函式g來計算GNN的輸出。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

這裡的f和g都可以解釋為前饋全連線神經網路。L1損失可以直接表述為:

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

可以透過梯度下降來最佳化。

然而,有文章指出,GNN的這一原始方法存在三個主要限制:

  1. 如果放鬆“不動點”的假設,就有可能利用多層感知器來學習更穩定的表示,並消除迭代更新過程。這是因為,在原方案中,不同的迭代使用相同的轉換函式f的引數,而MLP不同層中不同的引數允許分層特徵提取。
  2. 它不能處理邊緣資訊(例如,知識圖中不同的邊緣可能表示節點之間不同的關係)
  3. 不動點會阻礙節點分佈的多樣化,因此可能不適合學習表示節點。

已經提出了幾個GNN的變體來解決上述問題。然而,它們沒有被涵蓋,因為它們不是本文的重點。

DeepWalk

DeepWalk是第一個提出以無監督方式學習節點嵌入的演算法。就訓練過程而言,它非常類似於單詞嵌入。其動機是圖中節點和語料庫中單詞的分佈遵循冪律,如下圖所示:

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

演算法包括兩個步驟:

  1. 在圖中的節點上執行隨機漫步以生成節點序列
  2. 根據步驟1生成的節點序列,執行skip-gram,學習每個節點的嵌入

在隨機遊走的每個時間步長上,下一個節點均勻地從前一個節點的鄰居中取樣。然後將每個序列截斷為長度 2|w| + 1的子序列,其中w表示skip-gram的視窗大小。

本文采用層次softmax 演算法,解決了節點數量大、計算量大的softmax問題。要計算每個單獨輸出元素的softmax值,我們必須計算所有元素k的所有e^xk。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

因此,原始softmax的計算時間為 O(|V|),其中 V表示圖中頂點的集合。

層次softmax利用二叉樹來處理該問題。在這個二叉樹中,所有的葉子(上圖中的v1 v2…v8)都是圖中的頂點。在每個內部節點中,都有一個二進位制分類器來決定選擇哪條路徑。要計算給定頂點 v_k的機率,只需計算從根節點到左節點的路徑上的每個子路徑的機率 v_k。由於每個節點的子節點的機率之和為1,所以所有頂點的機率之和等於1的性質在層次softmax中仍然成立。現在一個元素的計算時間減少到 O(log|V|),因為二叉樹的最長路徑以 O(log(n))為界,其中 n是葉子的數量。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

經過DeepWalk GNN的訓練,模型學習到每個節點的良好表示,如下圖所示。不同的顏色表示輸入圖中不同的標籤。我們可以看到,在輸出圖中(2維嵌入),具有相同標籤的節點聚集在一起,而具有不同標籤的大多數節點被正確地分離。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

然而,DeepWalk的主要問題是它缺乏泛化的能力。每當一個新節點出現時,它都必須對模型進行重新訓練,才可以表示這個節點。因此,這種GNN不適用於圖中節點不斷變化的動態圖。

GraphSage

GraphSage提供了一個解決上述問題的解決方案,以 歸納的方式學習每個節點的嵌入。具體地說,每個節點由其鄰域的聚合表示。因此,即使在圖中出現了訓練過程中沒有出現過的新的節點,也可以用相鄰的節點來表示。下面是GraphSage的演算法。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

外迴圈表示更新迭代次數, h^k_v表示更新迭代時節點 v的隱向量 k。在每次更新迭代中,根據一個聚集函式、前一次迭代中 vv鄰域的隱向量以及權矩陣 W^kh^k_v進行更新。本文提出了三個聚合函式:

1. Mean aggregator:

mean aggregator取一個節點及其所有鄰域的隱向量的平均值。

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

與原始方程相比,它刪除了上面虛擬碼第5行中的連線操作。這種操作可以看作是一種“跳躍連線”,本文稍後的部分證明了這種連線在很大程度上提高了模型的效能。

2. LSTM aggregator:

由於圖中的節點沒有任何順序,它們透過遍歷這些節點來隨機分配順序。

3. Pooling aggregator:

這個運算子在相鄰的集合上執行一個元素池化函式。下面是最大池化的例子:

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

可以用均值池化或任何其他對稱池化函式替換。池化聚合器效能最好,而均值池化聚合器和最大池化聚合器效能相近。本文使用max-pooling作為預設的聚合函式。

損失函式定義如下:

圖神經網路的介紹(基礎,DeepWalk和GraphSage)

其中 uv共出現在固定長度的隨機遊動中, v_n是與 u不共出現的負樣本。這種損失函式鼓勵距離較近的節點進行類似的嵌入,而距離較遠的節點則在投影空間中進行分離。透過這種方法,節點將獲得越來越多的關於其鄰域的資訊。

GraphSage透過聚合其附近的節點,為不可見的節點生成可表示的嵌入。它允許將節點嵌入應用於涉及動態圖的領域,其中圖的結構是不斷變化的。例如,Pinterest採用GraphSage的擴充套件版本PinSage作為內容發現系統的核心。

總結

你學習了圖形神經網路、DeepWalk和GraphSage的基礎知識。GNN在複雜圖形結構建模方面的能力確實令人吃驚。鑑於其有效性,我相信在不久的將來,GNN將在人工智慧的發展中發揮重要的作用。

英文原文:




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2662485/,如需轉載,請註明出處,否則將追究法律責任。

相關文章