【Graph Embedding】: LINE算法

論文“LINE: Large-scale Information Network Embedding”發表在WWW‘15上,提出了一個適用於大規模網絡embedding算法“LINE”。

論文下載地址:https://arxiv.org/pdf/1503.03578.pdf

作者公佈的代碼:https://github.com/tangjianpku/LINE

介紹

本篇文章提出的算法定義了兩種相似度:一階相似度和二階相似度,一階相似度爲直接相連的節點之間的相似,二階相似度爲存不直接相連單存在相同鄰近節點的相似。還提出來一個針對帶權圖的邊採樣算法,來優化權重大小差異大,造成梯度優化的時候梯度爆炸的問題。

該方法相比於deepwalk來說,deepwalk本身是針對無權重的圖,而且根據其優化目標可以大致認爲是針對二階相似度的優化,但是其使用random walk可以認爲是一種DFS的搜索遍歷,而針對二階相似度來說,BFS的搜索遍歷更符合邏輯。而LINE同時考慮來一階和二階相似度,一階相似度可以認爲是局部相似度,直接關聯。二階相似度可以作爲一階相似度的補充,來彌補一階相似度的稀疏性。

定義

信息網絡(Information Network)信息網絡被定義爲G(V,E),其中V是節點集合,E表示邊的集合。其中每條邊定義一個有序對:e=(u,v),並分配一個權重值w_{uv}用於表示點u和點v之間聯繫的強弱。如果爲無向圖的話,(u,v)=(v,u),w_{uv}=w_(vu)

一階相似性(First-order Proximity)一階相似性定義爲兩個節點之間的局部成對相似性。對於由邊(u,v)鏈接的節點對,其鏈接權重w_{uv}用於表示節點u和節點v之間的一階相似性,如果兩個節點之間沒有邊相連,那麼他們的一階相似性爲0。

一階相似性固然可以直接表示節點之間的相似性,但是在真實環境下的信息網絡往往存在大量的信息缺失,而許一階相似度爲0的節點,他們本質上相似度也很高。自然能想到的是那些擁有相似鄰近節點的節點可能會存在一定的相似性。比如在真實環境中,擁有相同朋友的兩個人也很可能認識,經常在同一個詞的集合中出現的兩個詞也很有可能很相似。

二階相似性(Second-order Proximity) 兩個節點的二階相似性是他們的鄰近網絡結構的相似性。如p_u = (w_{u,1},...,w_{u,|V|})表示u對全部節點的一階相似性。那麼節點u和節點v的二階相似性由p_up_v決定。如果沒有節點同時鏈接u和v,那麼u和v的二階相似度爲0。

LINE with First-order Proximity

定義兩個點之間的聯合概率:

                                            

其中\vec{u}_i\vec{u}_j\in R^d是節點i和j的低緯embedding向量,直接利用sigmoid來度量兩個節點的相似度。而對應的需要擬合的經驗概率爲

\hat{p}_1(i,j)=\frac{w_{ij}}{W},即爲全部權重的歸一化後的佔比,這裏的W=\sum_{(i,j)\in E}w_{i,j},所以對應的優化目標爲:

                                         

最小化該優化目標,讓預定義的兩個點之間的聯合概率儘量靠近經驗概率。d(\cdot ,\cdot )用於度量兩個分佈之間的距離,作者選用來KL散度來作爲距離度量。那麼使用KL散度並忽略常數項後,可以得到:

                                       

這就是最終的優化目標,這裏需要注意,一階相似度只能用於無向圖。

LINE with Second-order Proximity

二階相似度同時適用於有向圖和無向圖。

二階的含義可以理解爲每個節點除了其本身外還代表了其所對應的上下文,如果節點的上下文分佈接近那麼可以認爲這兩個節點相似。

以有向邊爲例,有向邊(i,j),定義節點v_i的上下文(鄰接)節點v_j的概率爲:

                                         

其中|V|是上下文節點的數量。其實和一階的思路類似,這裏用softmax對鄰接節點做了一下歸一化。優化目標也是去最小化分佈之間的距離:

                                          

其中d(\cdot ,\cdot )用於度量兩個分佈之間的差距。因爲考慮到圖中的節點重要性可能不一樣,所以設置了參數\lambda_i來對節點進行加權。可以通過節點的出入度或者用pagerank等算法來估計出來。而這裏的經驗分佈則被定義爲:

                                           \hat{p}_2(v_i|v_j)=\frac{w_{ij}}{d_i}

其中,w_{ij}是邊(i,j)的權重,d_i是節點i的出度,即 而N(i)就是節點i的出度節點的集合。同樣採樣KL散度作爲距離度量,可以得到如下優化目標:

                                         

Combining first-order and second-order proximities

文章提到暫時還不能將一階和二階相似度進行聯合訓練,只能將他們單獨訓練出embedding,然後在做concatenate。

負採樣

這個算是一個常見的技巧來,在做softmax的時候,分母的計算要遍歷所有節點,這部分其實很費時,所以在分母較大的時候,經常會使用負採樣技術。

邊採樣

也是訓練的一個優化,因爲優化函數中由一個w權重,在實際的數據集中,因爲鏈接的大小差異會很大,這樣的話會在梯度下降訓練的過程中很難去選擇好一個學習率。直觀的想法是把權重都變成1,然後把w權重的樣本複製w份,但是這樣會佔用更大的內存。第二個方法是按w權重佔比做採樣,可以減少內存開銷。

完。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章