論文閱讀筆記:LINE: Large-scale Information Network Embedding

ilove_Moretz發表於2020-11-17

0、簡介

  • 論文名字:LINE: Large-scale Information Network Embedding
  • 下載地址:http://www.findshine.com/me/downloads/papers/WWW2015_LINE.pdf
  • 會議:WWW 2015

1、論文的motivation

目前已有的節點表示方法很多不能在大規模的圖上應用,並且大多數現有方法在做節點表示的時候只關注一階相似度。因此本文提出Line模型,該模型可以在超大型網路上實現節點表示,並且同時學習了節點的一階相似度和二階相似度,獲得的節點表示更準確,在下游任務中表現會更好

2、模型結構

模型通過邊的權重和連線情況來學習節點表示,分別通過一階相似度和二階相似度來學習。

(1)一階相似度

論文中認為,兩個節點之間的邊之間的權重越大,那麼兩個節點的節點表示就應該更相似。一階相似度在這裡就是來衡量兩個節點之間的邊的權重大小,當兩節點之間沒有連線,那麼這兩節點之間的一階相似度就是0,論文中只對無向圖使用一階相似度求節點表示。

給定兩個節點 v i v_{i} vi v j v_{j} vj,對應的節點表示為 u i u_{i} ui u j u_{j} uj,使用下面的公式求兩個節點表示的聯合概率分佈

在這裡插入圖片描述

使用下面公式計算兩個節點經驗分佈:

在這裡插入圖片描述

這個公式中, w i j w_{ij} wij是節點i和節點j之間邊的權重,W是所有邊權重的和。這裡計算出來的經驗分佈可以理解為上面公式計算出來的聯合概率分佈的標籤,我們的目的就是優化節點表示,讓聯合概率分佈接近經驗分佈。因此,這裡就適用KL散度作為目標函式,公式如下
在這裡插入圖片描述

這裡公式省略了經驗分佈的分母W,W是個常數項,因此可以省略掉。這裡計算 O 1 O_{1} O1時的思想是使用KL散度計算兩個概率之間的相似度,通過最小化 O 1 O_{1} O1來讓聯合概率分佈逼近經驗分佈,從而學習節點的表示。但實際做的時候是使用交叉熵公式。KL散度的公式如下所示:

在這裡插入圖片描述

交叉熵的公式如下所示
在這裡插入圖片描述

為什麼這裡使用了交叉熵呢,我查閱了一些資料,似乎神經網路中,都是使用交叉熵來代替KL散度。https://blog.csdn.net/ningyanggege/article/details/87906786這篇部落格在最後一部分交叉熵和相對熵(KL散度)的關係中給出了原因。我摘出來放到下面:

交叉熵和相對熵的關係:

在這裡插入圖片描述

以上都是基於離散分佈的概率,如果是連續的資料,則需要對資料進行Probability Density Estimate來確定資料的概率分佈,就不是求和而是通過求積分的形式進行計算了。

個人理解:

1、KL散度本質是用來衡量兩個概率分佈的差異一種數學計算方式;由於用到比值除法不具備對稱性;

2、神經網路訓練時為何不用KL散度,從數學上來講,它們的差異在於KL散度多減了一個 H§;P代表真實分佈,Q代表估計的分佈

在這裡插入圖片描述

從損失函式角度來看,在訓練樣本固定的情況下,H§是個常數,對梯度更新沒有價值;所以兩者的最優解是一樣的;

(2)二階相似

本文除了使用節點的一階相似求節點表示,還使用了二階相似求節點的表示。論文中認為,兩個節點如果有相似的鄰居,那麼兩個節點的節點表示也應該是相似的。該方法可用於有向圖,對於無向圖,可以將無向圖的無向邊變為兩條,並指定方向,成為有向圖。同樣,二階相似度也會求兩個節點之間的聯合概率,公式如下

在這裡插入圖片描述

其中V是所有節點, u j ′ u^{'}_{j} uj是節點的內容表示,維度和我們要求的節點的表示是一樣的。在這裡,每一個節點都有一個內容表示和一個節點表示。

相對應的經驗概率為

在這裡插入圖片描述

d i d_{i} di是節點i所有從節點i出去的邊的權重和。同樣是使用KL散度來逼近這兩個分佈,目標函式如下所示,這裡 d d d可以理解為計算KL散度的函式:

在這裡插入圖片描述

注意,這裡多出來個 λ i \lambda_{i} λi表示節點在網路中的重要程度,論文表示, λ i \lambda_{i} λi可以用很多方法來計算,比如PageRank值,文中直接用 d i d_{i} di來表示 λ i \lambda_{i} λi。因此, O 2 O_{2} O2最終可以表示為

在這裡插入圖片描述

通過最小化 O 2 O_{2} O2來逼近聯合概率分佈和經驗分佈,從而學習節點的表示

(3)聯合一階近似和二階近似的節點表示

本文計算出一階近似和二階近似的節點表示後,直接將兩個節點表示拼接在一起。一種很naive的方法。

3、模型優化

(1)負取樣

本文用了不小的篇幅介紹了模型優化的問題。其實本文求二階相似的聯合概率分佈是參考Word2vec中Ski-gram來做的,計算公式和論文《Distributed Representations of Words and Phrases and their Compositionality Tomas》幾乎一模一樣。Ski-gram中存在詞表太大,模型沒辦法執行的問題。本文中也存在相似的問題,模型會在大型網路上執行,對應的節點的數量可能是以億為單位的,計算聯合概率分佈的公式
在這裡插入圖片描述

中的分母計算是不現實的。因此,本文也使用了Ski-gram中負取樣的方法來優化模型。為什麼可以使用負取樣來優化呢,我再Ski-gram的論文中找到了這麼一段話

the Skip- gram model is only concerned with learning high-quality vector representations, so we are free to simplify NCE as long as the vector representations retain their quality

我對這塊的理解是,模型的目的是為了學習向量表示(Ski-gram是學習單詞的向量表示,本文中學習的是節點的向量表示),我們的計算聯合概率分佈時不一定需要計算出完整的概率分佈,也就是說不需要完全計算分母的值,分母其實就是所有負樣本+一個正樣本,只要選取部分負樣本進行計算,突出正樣本(這裡說的不那麼嚴謹,但是大概就是這麼個意思),梯度回傳回去能更新向量表示就可以。因此,這裡使用下面的公式來計算連個概率分佈

在這裡插入圖片描述

公式的右邊是負取樣的過程,這個過程就是選取K條邊當做負樣本,選取的方法和Ski-gram中的一樣,但Ski-gram的論文選負樣本的那塊講的也不是很清楚,我在這個部落格裡找到了比較清楚的解釋,大家可以在這篇部落格中學習https://blog.csdn.net/qq_36696494/article/details/89028785

(2)邊的取樣

優化 O 2 O_{2} O2的時候,論文采用了asynchronous stochastic gradient algorithm的演算法,每個step迭代的時候都會取樣一定數量的邊來優化,注意,這裡不是取樣點來優化,是取樣邊來優化。取樣的思路就是:權重越大,對應的邊越容易被取樣到。文中使用alias table的方法,將取樣複雜度優化到了 O ( 1 ) O(1) O(1)

文中還提到了一點, O 2 O_{2} O2在優化的時候,前面的權重 w i j w_{ij} wij太大和太小都會影響學習率的選擇,為了解決這個問題,本文將邊的權重二值化。我個人理解,二值化的意思是將一條邊變成了只有0,1兩個權重的多條邊。比如兩個節點之間邊的權重是5,經過二值化,就變成了5條邊,每條邊的權重都是1。

4、我的想法

4.1 論文的優點

1、論文實驗很充分,也很完備,有大量的對比實驗、消融實驗、引數分析和視覺化的分析

2、想法很好,將Ski-gram的思路換到節點表示上,其實也是參照了DeepWalk的思想。

4.2 論文的缺點

1、幾乎完全照搬了Ski-gram的思路,聯合概率和經驗概率和Ski-gram的一模一樣,我隔熱覺得這裡還可以做一些實驗,探究一下在網路中,結合網路的特點,使用一些其他形式的聯合概率和經驗概率會不會更好

2、在一些論壇裡看到,這個程式碼復現效果不太好,似乎是用了很多trick或者預處理上做了些文章,但是論文中沒有體現。

相關文章