[图神经网络] 图神经网络GNN基础入门
最近,深度學習領域關于圖神經網絡(Graph Neural Networks,GNN)的研究熱情日益高漲,圖神經網絡已經成為各大深度學習頂會的研究熱點,包括社交網絡,知識圖,推薦系統,甚至生命科學。GNN在對圖中節點之間的依賴關系建模方面的強大功能使得與圖分析相關的研究領域取得了突破。GNN處理非結構化數據時的出色能力使其在網絡數據分析、推薦系統、物理建模、自然語言處理和圖上的組合優化問題方面都取得了新的突破。
本文旨在介紹圖形神經網絡的基礎知識和兩種更高級的算法,DeepWalk和GraphSage。
一 圖
在我們學習GNN之前,讓我們先了解一下圖是什么。在計算機科學中,圖是由兩個組成部分組成的數據結構,即頂點和邊緣。圖G可以通過頂點集V和它包含的邊E來進行描述。
圖表示學習的主要目標是:將結點映射為向量表示的時候盡可能多地保留圖的拓撲信息。圖表示學習主要分為基于圖結構的表示學習和基于圖特征的表示學習
?
圖由頂點(Vertex)和連接頂點的邊(Edge)構成,邊可以是有向的或無向的,這取決于頂點之間是否存在方向依賴關系。
頂點和邊之間的關系可以用鄰接矩陣(A)表示,兩個頂點間有邊標識為1,否則為0。
如上圖所示,圖G=(V,E)其中 V={v1,v2,v3,v4,v5},E={(v1,v2),(v1,v3),(v2,v4),(v3,v4),(v4,v5)}
?
二 GNN 圖神經網絡
圖神經網絡是一種直接作用于圖結構上的神經網絡。GNN比較經典的是這篇《The Graph Neural Network Model》
GNN的一個典型應用是節點分類。本質上,圖中的每個節點都與一個標簽相關聯,我們希望在沒有ground-truth的情況下預測節點的標簽。本節將說明本文中描述的算法。第一個提出的GNN常常被稱為原始GNN。
在節點分類問題設置中,每個節點v的特征是x_v,并與一個ground-truth標簽t_v關聯。給定一個部分標記的圖G,目標是利用這些標記的節點來預測未標記的標簽。它學習用一個d維向量(狀態)h_v表示每個節點,其中包含其鄰域的信息。具體地說,
其中x_co[v]表示與v相連的邊的特征,h_ne[v]表示與v相鄰節點的嵌入,x_ne[v]表示與v相鄰節點的特征。函數f是將這些輸入投射到d維空間的轉換函數。因為我們正在為h_v尋找一個惟一的解,所以我們可以應用Banach定點定理并將上面的等式重寫為迭代更新過程。這種操作通常稱為消息傳遞或鄰居聚合。
H和X分別表示所有H和X的級聯。
通過將狀態h_v和特征x_v傳遞給輸出函數g來計算GNN的輸出。
這里的f和g都可以解釋為前饋全連接神經網絡。L1損失可以直接表述為:
可以通過梯度下降來優化。
然而,有文章指出,GNN的這一原始方法存在三個主要限制:
如果放松“不動點”的假設,就有可能利用多層感知器來學習更穩定的表示,并消除迭代更新過程。這是因為,在原方案中,不同的迭代使用相同的轉換函數f的參數,而MLP不同層中不同的參數允許分層特征提取。
它不能處理邊緣信息(例如,知識圖中不同的邊緣可能表示節點之間不同的關系)
不動點會阻礙節點分布的多樣化,因此可能不適合學習表示節點。
三 DeepWalk
DeepWalk是第一個提出以無監督方式學習節點嵌入的算法。就訓練過程而言,它非常類似于單詞嵌入。其動機是圖中節點和語料庫中單詞的分布遵循冪律,如下圖所示:
DeepWalk采用了Random walk的思想進行結點采樣。首先根據用戶的行為構建出一個圖網絡;隨后通過Random walk隨機采樣的方式構建出結點序列(例如:一開始在A結點,A->B,B又跳到了它的鄰居結點E,最后到F,得到"A->B->E->F"序列);對于序列的問題就是NLP中的語言模型,因為我們的句子就是單詞構成的序列。接下來我們的問題就變成Word2vec(詞用向量表示)的問題,采用Skip-gram的模型來得到最終的結點向量。可以說這種想法確實是十分精妙,將圖結構轉化為序列問題確實是非常創新的出發點。在這里,結點走向其鄰居結點的概率是均等的。當然,在有向圖和無向圖中,游走的方式也不一樣。無向圖中的游走方式為相連即可走;而有向圖中則是只沿著“出邊”的方向走。
上圖出自阿里Embedding實踐paper:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba
在隨機游走的每個時間步長上,下一個節點均勻地從前一個節點的鄰居中采樣。然后將每個序列截斷為長度2|w| + 1的子序列,其中w表示skip-gram的窗口大小。
本文采用層次softmax 算法,解決了節點數量大、計算量大的softmax問題。要計算每個單獨輸出元素的softmax值,我們必須計算所有元素k的所有e^xk。
因此,原始softmax的計算時間為O(|V|),其中V表示圖中頂點的集合。
層次softmax利用二叉樹來處理該問題。在這個二叉樹中,所有的葉子(上圖中的v1 v2…v8)都是圖中的頂點。在每個內部節點中,都有一個二進制分類器來決定選擇哪條路徑。要計算給定頂點v_k的概率,只需計算從根節點到左節點的路徑上的每個子路徑的概率v_k。由于每個節點的子節點的概率之和為1,所以所有頂點的概率之和等于1的性質在層次softmax中仍然成立。現在一個元素的計算時間減少到O(log|V|),因為二叉樹的最長路徑以O(log(n))為界,其中n是葉子的數量。
經過DeepWalk GNN的訓練,模型學習到每個節點的良好表示,如下圖所示。不同的顏色表示輸入圖中不同的標簽。我們可以看到,在輸出圖中(2維嵌入),具有相同標簽的節點聚集在一起,而具有不同標簽的大多數節點被正確地分離。
然而,DeepWalk的主要問題是它缺乏泛化的能力。每當一個新節點出現時,它都必須對模型進行重新訓練,才可以表示這個節點。因此,這種GNN不適用于圖中節點不斷變化的動態圖。
四 GraphSage
GraphSage提供解決上述問題的解決方案,以歸納方式學習每個節點的嵌入。具體而言,每個節點由其鄰域的聚合表示。因此,即使在訓練時間期間看不到的新節點出現在圖中,它仍然可以由其相鄰節點正確地表示。
具體實現中,訓練時它僅僅保留訓練樣本到訓練樣本的邊,然后包含Sample和Aggregate兩大步驟,Sample是指如何對鄰居的個數進行采樣,Aggregate是指拿到鄰居節點的embedding之后如何匯聚這些embedding以更新自己的embedding信息。下圖展示了GraphSAGE學習的一個過程,
第一步,對鄰居采樣
第二步,采樣后的鄰居embedding傳到節點上來,并使用一個聚合函數聚合這些鄰居信息以更新節點的embedding
第三步,根據更新后的embedding預測節點的標簽
網絡的層數可以理解為需要最大訪問的鄰居的跳數(hops),比如在上圖中,紅色節點的更新拿到了它一、二跳鄰居的信息,那么網絡層數就是2。為了更新紅色節點,首先在第一層(k=1),我們會將藍色節點的信息聚合到紅色解節點上,將綠色節點的信息聚合到藍色節點上。在第二層(k=2)紅色節點的embedding被再次更新,不過這次用到的是更新后的藍色節點embedding,這樣就保證了紅色節點更新后的embedding包括藍色和綠色節點的信息,也就是兩跳信息。
?
五 為何基于mean、max aggregate的GNN不夠強大
mean和max 無法區分哪些結構
節點v和v'為中心節點,通過聚合鄰居特征生成embeddind,分析不同aggregate設置下是否能區分不同的結構(如果能捕獲不同結構,二者的embedding應該不一樣)
設紅綠藍色節點特征值分別為r,g,b,不考慮combine
結論:由于mean和max-pooling 函數 不滿足單射性,無法區分某些結構的圖,故性能會比sum差一點。
sum, mean, max 分別可以捕獲什么信息?
三種不同的aggregate
- sum:學習全部的標簽以及數量,可以學習精確的結構信息
- mean:學習標簽的比例(比如兩個圖標簽比例相同,但是節點有倍數關系),偏向學習分布信息
- max:學習最大標簽,忽略多樣,偏向學習有代表性的元素信息
基于對 graph分類,證明了 sum 比 mean 、max 效果好,但是不能說明在node 分類上也是這樣的效果,另外可能優先場景會更關注鄰域特征分布,或者代表性, 故需要都加入進來實驗。
?
參考:
https://towardsdatascience.com/a-gentle-introduction-to-graph-neural-network-basics-deepwalk-and-graphsage-db5d540d50b3
https://zhuanlan.zhihu.com/p/136521625
How Powerful are Graph Neural Networks? GIN 圖同構網絡 ICLR 2019 論文詳解
?
?
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的[图神经网络] 图神经网络GNN基础入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统监视工具Glances怎么
- 下一篇: [图神经网络] 图节点Node表示(De