Node Representation Learning(節點表示學習)
本文爲中文筆記翻譯,其英文原文地址爲Node Presentation Learning
在本節中,我們研究了幾種在嵌入空間中表示圖形的方法。“嵌入”是指將網絡中的每個節點映射到一個低維空間,這將使我們深入瞭解節點的相似性和網絡結構。鑑於因特網和物理世界中圖結構的廣泛存在,圖形的表示學習在諸如連接預測和異常檢測之類的應用中起着重要作用。但是,現代機器學習算法是爲簡單的序列或網格(例如,固定大小的圖像/網格或文本/序列)設計的,但是網絡通常具有複雜的拓撲結構和多模型特徵。我們將探索嵌入方法來解決這些難題。
Embedding Nodes(節點嵌入)
節點嵌入的目標是對節點進行編碼,以使嵌入空間(例如點積)中的相似度近似於原始網絡中的相似度,我們將探討的節點嵌入算法通常包括三個基本階段:
- 定義編碼器(即從節點到嵌入的映射)。下面我們提供了一個圖表來說明編碼過程,將地圖節點 和 映射到低維向量 和:
- 定義節點相似性函數(即原始網絡中相似性的度量),它明確了向量空間中到原始網絡中的映射關係。
- 優化編碼器的參數,以使和 在原網絡中與在節點嵌入之間的點積近似:
“Shallow” Encoding(淺編碼)
如何定義編碼器以將節點映射到嵌入空間?
“淺”編碼是最簡單的編碼方法,編碼器只是一個嵌入查找,它可以表示爲:
矩陣中的每一列Z表示要嵌入的節點,其中的總行數等於嵌入的尺寸/大小。v是指示向量指示節點 v,除了節點所在列爲1,其餘節點都爲0。我們看到,每個節點都以“淺”編碼形式映射爲唯一的嵌入向量。生成節點嵌入的方法有很多(例如DeepWalk,node2vec,TransE),選擇方法的關鍵取決於它們如何定義節點相似性。
Random Walk(隨機遊走)
現在讓我們嘗試定義節點相似性。在這裏我們介紹隨機遊走(Random Walk),這是一種定義節點相似性和訓練節點嵌入的高效表達方式。(隨機遊走對節點相似性具有靈活的隨機定義,該定義結合了本地和高階鄰域信息,並且在訓練時不需要考慮所有節點對;只需要考慮隨機遊走時同時發生的配對)。給定一個圖和一個起點,我們隨機選擇它的一個鄰居,然後移動到該鄰居;然後我們隨機選擇該點的一個鄰居,然後移動到該點,依此類推。以這種方式選擇的點的(隨機)序列是圖形上的隨機遊動。所以 similarity(u, v) 定義爲 u 和 v 在網絡上隨機遊走時同時發生的概率。可以按照以下步驟生成隨機遊走嵌入:
- 估計從節點u使用隨機行走策略 R 訪問至節點 v 的概率。最簡單的想法是行走固定長度,對每個節點開始無偏的隨機遊走(例如,DeepWalk from Perozzi et al., 2013)。
- 優化嵌入方法,從而以對這些隨機遊走統計信息進行編碼,因此嵌入之間的相似性(例如點積)會編碼隨機遊走相似性。
Random walk optimization and Negative Sampling(隨機遊走優化和負採樣)
由於我們想找到能夠保留相似度的d維節點的嵌入,因此我們需要學習節點嵌入,以使附近的節點在網絡中靠得很近。具體來說,我們可以定義通過某種策略 得到的附近的節點 作爲節點 的鄰居集合 。讓我們回想一下從隨機遊走中學到的知識,我們可以使用某種策略 從圖上的每個節點開始執行短的固定長度的隨機遊走去收集 ,這是從初始節點進行隨機遊走策略得到的點的多集。注意 可以具有重複元素,因爲可以在隨機行走中多次訪問節點。然後,我們可以優化嵌入,以最大程度地提高隨機遊走併發的可能性,我們將損失函數定義爲:
其中使用softmax參數化 :
合併後爲:
爲了優化隨機遊走嵌入,我們需要找到嵌入 最小化 。但是,不做任何更改來優化會導致計算太複雜,節點上的嵌套總和複雜度爲 。這裏我們介紹負採樣估算損失(要了解有關負採樣的更多信息,請參閱Goldberg等人的 word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method (2014))。從技術上講,負採樣是一個不同的目標,但是它是噪聲對比估計(Noise Contrastive Estimation,NCE)的一種形式,它近似最大化softmax的對數概率。新的公式常常應用於邏輯迴歸函數(sigmoid)來區分目標節點 $v $ 和從背景分佈 採樣的節點 。
表示在所有節點上隨機分佈。我們只是針對 個隨機的“負採樣樣本”標準化,而不是針對所有節點進行標準化。這樣,我們需要採樣 個與度成正比的負採樣節點計算損失函數。注意 越大給出的估計越可靠,但它也有可能導致更高的偏差。實際上,我們選擇 爲5至20之間。
Node2vec
到目前爲止,我們已經描述了在給定隨機遊走統計的情況下如何優化嵌入。但我們應該使用哪些策略來運行這些隨機遊走?如前所述,最簡單的想法是從每個節點開始運行固定長度的無偏的隨機遊走(即DeepWalk from Perozzi et al., 2013),問題是這種相似性概念太受約束。我們觀察到,節點 的網絡鄰域 的靈活概念導致了豐富的節點嵌入,Node2Vec的想法是使用靈活的,帶偏差的隨機遊走,可以在網絡的本地視圖和全局視圖之間進行權衡(Grover and Leskovec,2016)。使用兩種經典策略 BFS 和 DFS 定義節點 的 :
BFS可以提供鄰居的局部微觀視圖,而DFS可以提供鄰居的全局宏觀視圖。在這裏我們可以定義返回參數 和進出參數 並使用偏置 -order的隨機遊走探索網絡鄰居,對過渡概率建模以返回到先前的節點,並定義 爲BFS和DFS的“比率”。具體來說,如下圖所示,walker來自邊 ,現在位於 , 1, 1/q, 和1/p 表示訪問下一個節點的概率(此處 , 1, 1/q, 和1/p是非標準化概率):
所以現在 是偏置行走訪問過的節點。讓我們將我們的發現彙總起來來說明node2vec算法:
- 算隨機遊走概率
- 對每個節點 開始模擬長度爲 的 個隨機遊走
- 使用隨機梯度下降優化node2vec目標
TransE
在這裏,我們來看一下多關係圖上的表示學習。多重關係圖是具有多種類型的邊的圖,它們在諸如知識圖之類的應用程序中非常有用,在知識圖中,節點稱爲實體,邊稱爲關係。例如,可能有一個節點表示 “JKRowling” ,另一個節點表示 “Harry Potter”,並且它們之間的邊的類型爲 “is author of”。爲了爲這種類型的圖創建嵌入,我們需要捕獲邊的類型,因爲不同的邊表示不同的關係。
TransE(Bordes, Usunier, Garcia-Duran. NeurIPS2013)是一種特殊算法,旨在學習多關係圖的節點嵌入。創建一個多關係圖 , 由一組實體 (即節點), 一組邊 ,以及一組可能的關係 組成。在TransE中,實體之間的關係表示爲三元組:
其中 是頭實體或源節點,是關係 是尾部實體或目標節點。與以前的方法類似,將實體嵌入到實體空間 中。TransE的主要創新之處在於每個關係 也作爲向量 的嵌入 。
也就是說,如果 , TransE盡力確保:
同時,如果邊緣 不存在,TransE盡力確保:
TransE通過最小化以下損失來實現這一目標:
這裏 是從集合 中 選擇的“損壞的”三個元素,這些元素要麼 要麼 (但不能同時使用)替換爲隨機實體:
另外, 是一個叫做 margin 的標量,公式 是歐幾里得距離,並且 是正部分函數(定義爲 )。最後,爲了確保嵌入的質量,TransE限制所有實體嵌入的長度爲1,也就是說,對於每個 :
下圖爲TransE算法的僞代碼:
Graph Embedding(圖嵌入)
我們可能還想在某些應用中嵌入整個圖 (例如,對有毒分子與無毒分子進行分類,識別異常圖)。
有幾種想法可以完成圖形嵌入:
-
簡單的想法 (Duvenaud et al., 2016) 是在(子)圖 上運行標準的圖形嵌入技術,然後對(子)圖 中的節點嵌入求和(或取平均值)。
-
引入“虛擬節點”來表示(子)圖並運行標準的圖形嵌入技術:
要了解更多關於利用虛擬節點進行子圖嵌入的內容,請參閱(Li et al., Gated Graph Sequence Neural Networks (2016))
-
我們還可以使用匿名遊走嵌入。爲了學習圖嵌入,我們可以列舉 個步驟中所有可能的匿名遊走 並記錄其計數,並將圖形表示爲這些遊走中的概率分佈。要了解有關匿名步行嵌入的更多信息,請參閱(Ivanov et al., Anonymous Walk Embeddings (2018))