作者:rimož Godec
編譯:ronghuaiyang
這篇文章描述了什麼是圖嵌入,圖嵌入的用處,並對比了常用的幾種圖嵌入方法。
圖常用在現實世界的不同場景中。社交網絡是人們相互聯繫的大型圖,生物學家使用蛋白質相互作用的圖,而通信網絡本身就是圖。他們在文本挖掘領域使用詞共現圖。對在圖形上使用機器學習的興趣正在增長。他們試圖在社交媒體上預測新的聯繫,而生物學家預測蛋白質的功能標籤。圖上的數學和統計操作是有限的,將機器學習方法直接應用到圖上是很有挑戰性的。在這種情況下,嵌入似乎是一個合理的解決方案。
什麼是圖嵌入?
圖嵌入是將屬性圖轉換為一個或一組向量。嵌入應該捕獲圖的拓撲結構、頂點到頂點的關係以及關於圖、子圖和頂點的其他相關信息。更多的屬性嵌入編碼可以在以後的任務中獲得更好的結果。我們大致可以將嵌入分為兩組:
頂點嵌入:我們用每個頂點(節點)自己的向量表示對其進行編碼。當我們想要在頂點層次上執行可視化或預測時,我們會使用這種嵌入,例如在二維平面上對頂點進行可視化,或者基於頂點相似性預測新的連接。
圖嵌入:這裡我們用一個向量表示整個圖。當我們想要在圖的層次上做出預測時,以及當我們想要比較或可視化整個圖時,例如比較化學結構時,就會用到這些嵌入。
稍後,我們將介紹來自第一組的一些常用方法(DeepWalk、node2vec、SDNE)和來自第二組的graph2vec方法。
我們為什麼要用到圖嵌入?
圖是一種有意義的、可理解的數據表示,但是需要使用圖嵌入的原因如下:
挑戰
嵌入方法需要滿足更多的需求。這裡我們描述了嵌入方法面臨的三個挑戰:
Word2vec
在介紹嵌入圖的方法之前,我將討論Word2vec方法和skip-gram神經網絡。它們是圖形嵌入方法的基礎。
Word2vec是一種將單詞轉換為嵌入向量的嵌入方法。相似的單詞應該有相似的嵌入。Word2vec採用skip-gram網絡,skip-gram網絡具有一個隱含層的神經網絡。skip-gram被訓練來預測句子中的相鄰單詞。這個任務被稱為偽任務,因為它只是在訓練階段使用。網絡在輸入端接受單詞,並對其進行優化,使其能夠以較高的機率預測句子中的相鄰單詞。下圖顯示了輸入單詞(用綠色標記)和預測單詞的示例。通過這個任務,作者實現了兩個相似的單詞具有相似的嵌入,因為具有相似含義的兩個單詞很可能具有相似的鄰域單詞。
用綠色表示網絡。優化後的算法能較好地預測鄰域內的詞,具有較高的預測機率。在本例中,我們考慮距離所選單詞最遠的兩個位置的單詞。
下圖所示的skip-gram神經網絡有輸入層、隱藏層和輸出層。網絡接受one -hot編碼。one -hot編碼是一個長度與單詞字典數量相同的向量,只有一個1其他都是0。這個1出現的位置是字典中出現編碼單詞的地方。隱藏層沒有激活函數,它的輸出是一個單詞的嵌入。輸出層是一個預測鄰域單詞的softmax分類器。
我將介紹四種圖形嵌入方法。其中三個節點嵌入節點,而一個節點用一個向量嵌入整個圖。他們將Word2vec中的嵌入原則應用於三種方法中。
頂點嵌入方法
我將介紹在圖中嵌入節點的三種方法。之所以選擇它們,是因為它們在實踐中經常使用,並且通常提供最好的結果。在深入討論之前,我可能會提到節點嵌入的方法可以分為三大類:因子分解方法、隨機遊走方法和深度方法。
DeepWalk使用隨機遊走來生成嵌入。從選定的節點開始隨機遊走,然後我們從當前節點隨機移動到鄰居,執行一定數量的步驟。
該方法主要包括三個步驟:
DeepWalk方法執行隨機遍歷,這意味著嵌入不能很好地保留節點的局部鄰域。Node2vec方法解決了這個問題。
Node2vec是DeepWalk的一個改進,只是隨機遊動的差異很小。它有參數P和Q。參數Q定義了random walk發現圖中未發現部分的機率,而參數P定義了random walk返回到前一個節點的機率。參數P控制發現節點周圍的微觀視圖。參數Q控制較大鄰域的發現。它推斷出社區和複雜的依賴關係。
圖中顯示了Node2vec中隨機行走步長的機率。我們只是從紅結點到綠結點跨了一步。返回到紅色節點的機率為1/P,而返回到與前一個(紅色)節點沒有連接的節點的機率為1/Q。到紅結點相鄰結點的機率是1。
嵌入的其他步驟與DeepWalk方法相同。
結構深度網絡嵌入(SDNE)與前兩種方法沒有任何共同之處,因為它不執行隨機遊走。我之所以提到它,是因為它在不同任務上的表現非常穩定。
它的設計使得嵌入保持了一階和二階的接近性。一階近似是由邊連接的節點之間的局部成對相似性。它描述了局部網絡結構。如果網絡中的兩個節點與邊緣連接,則它們是相似的。當一篇論文引用了另一篇論文,這意味著它們涉及了類似的主題。二階鄰近度表示節點鄰域結構的相似性。它捕獲了全球網絡結構。如果兩個節點共享許多鄰居,它們往往是相似的。
作者提出了一個自動編碼器神經網絡,它有兩個部分。自編碼器(左、右網絡)接受節點鄰接向量,訓練自編碼器重構節點鄰接。這些自動編碼器被稱為vanilla自動編碼器,它們學習二階近似。鄰接向量(鄰接矩陣中的一行)在表示連接到所選節點的節點的位置上具有正值。
還有一個網絡的監督部分——左翼和右翼之間的聯繫。它計算從左到右的嵌入距離,並將其包含在網絡的共同損失中。網絡經過這樣的訓練,左、右自動編碼器得到所有由輸入邊連接的節點對。距離部分的損失有助於保持一階近似。
網絡的總損失是由左右自編碼器的損失和中間部分的損失之和來計算的。
圖嵌入方法
最後一種方法對整個圖進行了嵌入。它計算一個描述圖形的向量。我選擇graph2vec方法,因為據我所知,它是圖形嵌入的最佳方法。
Graph2vec基於doc2vec方法的思想,該方法使用了skip-gram網絡。它在輸入上獲取文檔的ID,並經過訓練得到最大化從文檔中預測隨機單詞的機率。
Graph2vec方法包括三個步驟:
由於任務是預測子圖,具有相似子圖和相似結構的圖具有相似的嵌入。
其他的嵌入方法
我提出了四種文獻中常用的方法。由於這個主題目前非常流行,所以可以使用更多的方法。這裡我列出了其他可用的方法:
頂點嵌入方法: LLE,拉普拉斯特徵映射,圖分解,GraRep, HOPE, DNGR, GCN, LINE
圖嵌入方法: Patchy-san, sub2vec (embed subgraphs), WL kernel和deep WL kernel
英文原文:https://towardsdatascience.com/graph-embeddings-the-summary-cc6075aba007
請長按或掃描二維碼關注本公眾號