神經網路圖的簡介(基本概念,DeepWalk以及GraphSage演算法)
近來,圖神經網路(GNN)在各個領域廣受關注,比如社交網路,知識圖譜,推薦系統以及生命科學。GNN在對圖節點之間依賴關係進行建模的強大功能使得與圖分析相關的研究領域取得了突破。 本文旨在介紹圖形神經網路的基礎知識兩種較高階的演算法,DeepWalk和GraphSage。
圖
在我們學習GAN之前,大家先了解一下什麼圖。在電腦科學中,圖是一種資料結構,由頂點和邊組成。圖G可以透過頂點集合V和它包含的邊E來進行描述。
根據頂點之間是否存在方向性,邊可以是有向或無向的。
頂點通常稱為節點。在本文中,這兩個術語是可以互換的。
圖神經網路
圖神經網路是一種直接在圖結構上執行的神經網路。GNN的一個典型應用是節點分類。本質上,圖中的每個節點都與一個標籤相關聯,我們希望預測未標記節點的標籤。本節將介紹論文中描述的演算法,GNN的第一個提法,因此通常被視為原始GNN。
在節點分類問題中,每個節點v都可以用其特徵x_v表示並且與已標記的標籤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層中的不同引數允許分層特徵提取。
它不能處理邊緣資訊(例如知識圖譜中的不同邊可能表示節點之間的不同關係)
固定點會限制節點分佈的多樣化,因此可能不適合學習節點表示。
已經提出了幾種GNN變體來解決上述問題。 但是,他們不是這篇文章的重點。
DeepWalk
DeepWalk是第一個以無監督學習的節點嵌入演算法。 它在訓練過程中類似於詞嵌入。 它的初衷是圖中的兩個節點分佈和語料庫中的單詞分佈都遵循冪律,如下圖所示:
演算法包括兩個步驟:
在圖中的節點上執行隨機遊走生成節點序列
執行skip-gram,根據步驟1中生成的節點序列學習每個節點的嵌入
在隨機遊走過程中,下一個節點是從前一節點的鄰居統一取樣。 然後將每個序列截短為長度為2 | w |+1的子序列,其中w表示skip-gram中的視窗大小。如果您不熟悉skip-gram,我之前的部落格文章已經向您介紹它的工作原理。
在論文中,分層softmax用於解決由於節點數量龐大而導致的softmax計算成本過高的問題。為了計算每個單獨輸出元素的softmax值,我們必須為所有元素k計算ek。
softmax的定義
因此,原始softmax的計算時間是 O(|V|) ,其中其中V表示圖中的頂點集。
多層的softmax利用二叉樹來解決softmax計算成本問題。 在二叉樹中,所有葉子節點(上面所說的圖中的v1,v2,... v8)都是圖中的頂點。 在每個內部節點中(除了葉子節點以外的節點,也就是分枝結點),都透過一個二元分類器來決定路徑的選取。 為了計算某個頂點v_k的機率,可以簡單地計算沿著從根節點到葉子節點v_k的路徑中的每個子路徑的機率。 由於每個節點的孩子節點的機率和為1,因此在多層softmax中,所有頂點的機率之和等於1的特性仍然能夠保持。如果n是葉子的數量,二叉樹的最長路徑由O(log(n))限定,因此,元素的計算時間複雜度將減少到O(log | V |)。
多層softmax()
在訓練DeepWalk GNN之後,模型已經學習到了了每個節點的良好表示,如下圖所示。 不同的顏色在輸入圖中(圖a)表示不同標籤。 我們可以看到,在輸出圖(每個頂點被嵌入到2維平面)中,具有相同標籤的節點聚集在一起,而具有不同標籤的大多數節點被正確分開。
然而,DeepWalk的主要問題是它缺乏泛化能力。 每當有新節點加入到圖中時,它必須重新訓練模型以正確表示該節點( 直推式學習 )。 因此,這種GNN不適用於圖中節點不斷變化的動態圖。
GraphSage
GraphSage提供瞭解決上述問題的解決方案,它以歸納方式學習每個節點的嵌入。 具體來講,它將每個節點用其鄰域的聚合重新表示。 因此,即使在訓練時間期間未出現在圖中新節點,也仍然可以由其相鄰節點正確地表示。 下圖展示了GraphSage的演算法過程。
https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf
外層for迴圈表示更新迭代次數,而 h^k_v 表示節點v 在迭代第 k 次時的本徵向量。 在每次迭代時,將透過聚合函式,前一次迭代中 v 和 v 領域的本徵向量以及權重矩陣W^k 來更新h^k_v 。這篇論文提出了三種聚合函式:
1.均值聚合器:
均值聚合器取一個節點及其鄰域的本徵向量的平均值。
https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf
與原始方程相比,它刪除了上述虛擬碼中第5行的連線操作。 這種操作可以被視為"skip-connection" ("跳連線"),這篇論文後面將證明其可以在很大程度上提高模型的效能。
2. LSTM聚合器:
由於圖中的節點沒有任何順序,因此他們透過互換這些節點來隨機分配順序。
3.池聚合器:
此運算子在相鄰頂點集上執行逐元素池化函式。下面顯示了最大池的例子:
https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf
可以用平均池或任何其他對稱池函式替換這種最大池函式。儘管均值池和最大池聚合器效能相似,但是池聚合器(也就是說採用最大池函式)被實驗證明有最佳的效能。 這篇論文使用max-pooling作為預設聚合函式
損失函式定義如下:
https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf
其中u 和v 共同出現在一定長度的隨機遊走中,而 v_n 是不與u共同出現的負樣本。這種損失函式鼓動節點在投影空間中更靠近嵌入距離更近的節點,而與那些相距很遠的節點分離。透過這種方法,節點將獲得越來越多其鄰域的資訊。
GraphSage透過聚合其附近的節點,可以為看不見的節點生成可表示的嵌入位置。它讓節點嵌入的方式可以被應用於涉及動態圖的研究領域,這類動態圖的圖的結構是可以不斷變化的。例如,Pinterest採用了GraphSage的擴充套件版本PinSage作為他們的內容探索系統的核心。
結束語
您已經學習了圖形神經網路,DeepWalk和GraphSage的基礎知識。 GNN在複雜圖形結構建模中的強大功能確實令人驚訝。鑑於其高效性,我相信GNN將在人工智慧的發展中發揮重要作用。如果您覺得我的文章還不錯,請不要忘記在Medium和Twitter上關注我,我經常分享AI,ML和DL的高階發展動態。
想要繼續檢視該篇文章相關連結和參考文獻?
點選【神經網路圖的簡介(基本概念。DeepWalk以及GraphSage演算法)】或長按下方地址:
AI研習社今日推薦:
卡耐基梅隆大學 2019 春季《神經網路自然語言處理》是CMU語言技術學院和計算機學院聯合開課,主要內容是教學生如何用神經網路做自然語言處理。神經網路對於語言建模任務而言,可以稱得上是提供了一種強大的新工具,與此同時,神經網路能夠改進諸多工中的最新技術,將過去不容易解決的問題變得輕鬆簡單。
作者:AI研習社
連結:
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2649095/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 圖神經網路的介紹(基礎,DeepWalk和GraphSage)神經網路
- 簡單的圖神經網路介紹神經網路
- 人工神經網路簡介神經網路
- Machine Learning:神經網路簡介Mac神經網路
- JavaScript 實現簡單的神經網路演算法JavaScript神經網路演算法
- 用 JS 實現簡單的神經網路演算法JS神經網路演算法
- 圖神經網路GNN 庫,液體神經網路LNN/LFM神經網路GNN
- 網路表述學習經典論文——DeepWalk
- BP神經網路流程圖神經網路流程圖
- 圖神經網路入門神經網路
- 圖神經網路知識神經網路
- 簡單的神經網路測試神經網路
- 迴圈神經網路介紹神經網路
- 簡單理解LSTM神經網路神經網路
- MATLAB神經網路工具箱(簡單操作介紹)Matlab神經網路
- RBF神經網路簡單介紹與MATLAB實現神經網路Matlab
- 機器學習——BP神經網路演算法機器學習神經網路演算法
- 簡述脈衝神經網路SNN:下一代神經網路神經網路
- 神經網路訓練的三個基本概念Epoch, Batch, Iteration神經網路BAT
- 神經網路簡介--啟用函式、網路架構、生物模型解釋神經網路函式架構模型
- 最簡單的人工神經網路神經網路
- 神經網路:numpy實現神經網路框架神經網路框架
- 動畫圖解迴圈神經網路動畫圖解神經網路
- 圖神經網路7日打卡心得神經網路
- 深度學習與圖神經網路深度學習神經網路
- Graph Neural Network——圖神經網路神經網路
- 神經網路神經網路
- 直白介紹卷積神經網路(CNN)卷積神經網路CNN
- 介紹一種有趣的競爭神經網路!神經網路
- MATLAB的神經網路工具箱介紹Matlab神經網路
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 機器學習和神經網路的簡要框架總結機器學習神經網路框架
- Chainer 使複雜神經網路變的簡單AI神經網路
- 網路圖形格式簡介
- 神經網路NN演算法Nerual Networks神經網路演算法
- 機器學習之神經網路簡介:剖析機器學習神經網路
- Python繪製神經網路模型圖Python神經網路模型
- LSTM神經網路神經網路