DeepWalk 論文筆記

DeepWalk 論文筆記

針對論文[1]的閱讀撰寫閱讀筆記。DeepWalk的代碼實現

概述

這篇論文主要提出了在一個網絡中,學習節點隱表達的方法——DeepWalk,這個方法在一個連續向量空間中對節點的社會關係進行編碼,是語言模型和無監督學習從單詞序列到圖上的一個擴展。該方法將截斷遊走的序列當成句子進行學習。該方法具有可擴展,可並行化的特點,可以用來做網絡分類和異常點檢測。

貢獻

論文貢獻有三點:
1. 將深度學習應用到圖分析中,構建魯棒性的表示,其結果可應用於統計模型中
2. 將表示結果應用於一些社會網絡的多標籤分類任務中,與對比算法比較,大部分的F1 值提高5-10%,有些情況下,在給定少於60%訓練集的情況下,比其他對比方法要好
3. 論文通過構建互聯網規模(例如YouTube)的並行化實現的表示,論證了方法的可擴展性,同時描述了構建流式版本的方法實現

問題描述

給定一個圖G=(V,E) ,以及部分標註的社會網絡GL=(V,E,X,Y) ,其中,XR|V|×S 是節點屬性,S 是每個屬性向量的特徵空間的大小,YR|V|×|y| 是節點的標籤。論文的工作就是獨立於標籤Y 的值,學習出XER|V|×d 的表示,d 是一個極小的隱空間維度。學習出來的社會化表示具有以下特點:

  • 自適應性,真實的社會網絡是不斷變化的,新的社會化關係進來之後,應該不需要再重新執行一次學習過程
  • 社區感知性,學出來的隱空間應該能夠包含網絡中同質節點或相似節點距離近的信息
  • 低維度
  • 連續性

論文選取的是隨機遊走序列,作爲DeepWalk的輸入。原因有:

  • 隨機遊走能夠包含網絡的局部結構
  • 使用隨機遊走可以很方便地並行化
  • 當網絡結構具有微小的變化時,可以針對變化的部分生成新的隨機遊走,更新學習模型,提高了學習效率
  • 如果一個網絡的節點服從冪律分佈,那麼節點在隨機遊走序列中的出現次數也應該服從冪律分佈,論文通過實證發現自然語言處理中單詞的出現頻率也服從冪律分佈。可以很自然地將自然語言處理的相關方法直接用於構建社區結構模型中。

針對一個自然語言處理問題,給定一個單詞序列Wn1=(w0,w1,...,wn) ,我們要用前n1 個單詞來預測第n個單詞,也就是最大化Pr(wn|w0,w1,...,wn1) 的問題。針對社會網絡上的隨機遊走序列,我們自然會想到,要用前n1 個節點來預測第n 個節點的出現Pr(vn|v0,v1,...,vn1) 。但是論文的目的是要學習一個隱表示,所以引入了一個映射函數Φ:vVR|V|×d 。於是,問題變成估計Pr(vn|Φ(v0),Φ(v1),...,Φ(vn1)) 的問題。但是如果隨機遊走的長度變大,會降低該條件概率估計的效率。自然語言處理領域中,針對這個問題給出了幾個解決方案:

  • 把根據上下文預測一個單詞的問題,變爲根據一個單詞預測上下文的問題
  • 在一個給定單詞的左邊和右邊都會出現上下文內容
  • 去除單詞出現的順序約束

於是問題變成了最優化如下式子

minimizeΦlogPr({viw,...,vi+w}vi|Φ(vi))

方法

算法包含兩個主要部分:一個隨機遊走生成器和一個更新過程。隨機遊走生成器隨機均勻地選取網絡節點,並生成固定長度的隨機遊走序列,每個節點生成長度爲tγ 個隨機遊走序列,本文並沒有使用重啓的隨機遊走方法。爲了加快算法的收斂,本文對圖中所有的節點遍歷一遍之後,再重新遍歷所有節點,論文使用SkipGram算法來更新節點表示。SkipGram首先將每個節點vi 與其表示一一映射,並有假設:Pr({viw,...,vi+w}vi|Φ(vi))=i+wj=iw,jiPr(vj|Φ(vi)) ,通過最大化這個概率,來更新Φ 的值。因爲使用邏輯迴歸的方法,太耗時了,本文使用分層softmax的方法來訓練。即將每個節點分配到二分類樹的葉子節點上,本文使用哈夫曼編碼對節點進行編碼,將出現頻繁的節點的路徑設置較短。假設從根節點到一個節點uk 的路徑是一個樹節點的序列(b0,b1,...,b[log|V|])b0 是根節點,b[log|V|] 表示節點uk ,於是有Pr(uk|Φ(vj))=[log|V|]l=1Pr(bl|Φ(vj)) ,其中,Pr(bl|Φ(vj))=1/(1+eΦ(vj)Ψ(bl))Ψ(bl) 是樹上節點bl 的父親節點的隱表示。例如,在下圖中,從根節點到v3 節點的路徑應爲b1,b2,b5,v3 將這些節點對應的概率累積算出來。

Pr(v3|Φ(v1))=1/((1+eΦ(v1)Ψ(b1))(1+eΦ(v1)Ψ(b2))(1+eΦ(v1)Ψ(b5)))

這樣算法複雜度就從O(|V|) 降到了O(log|V|) 。論文使用隨機梯度下降的方法來優化參數,學習率在訓練初始設置爲2.5%,隨着訓練出節點的個數的增多,線性降低。

分層softmax訓練

DeepWalk

SkipGram


並行化

由於節的度服從長尾分佈,因此針對Φ 的更新的影響,會很稀疏。於是論文可以使用異步隨機梯度下降的方法來更新Φ 值。下圖給出了DeepWalk的可擴展性的實驗結果。
可擴展性實驗結果


流式版本

這裏,從圖中獲得一些隨機序列,就直接應用到圖的訓練中。做了一些調整,將學習率α 值設置的很低。另外,如果網絡中的節點個數V 是已知的,或者能夠大致估計出來,那麼我們還可以使用哈夫曼樹對節點進行編碼,否則就不能使用。


非隨機遊走

如果網絡圖是由相互交互的代理間的元素序列構成,例如用戶在一個網站上的頁面訪問。那麼我們可以直接使用這個序列作爲輸入,而不用使用隨機遊走來生成。一般這種網絡,不僅包含結構信息,而且包含語義信息。


實驗部分

實驗部分就是各種說論文提出的算法有多麼好了,對比的算法有,SpectralClustering,Modularity,EdgeCluster,wvRN,Majority。數據集有BlogCatalog,Flickr,YouTube。然後又做了參數敏感性分析,生成的隱表示的維度d 的大小,不敏感。隨機遊走的個數越大越好,一般到了25 以後算法提高的效果會比較低了,對學習率不是很敏感。


[1]: Perozzi B, Al-Rfou R, Skiena S. Deepwalk: Online learning of social representations[C]//Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014: 701-710.

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