網絡表達學習系列(一):深度遊走(Deepwalk)

DeepWalk: Online Learning of Social Representations,KDD' 14

閱讀更多,歡迎關注公衆號:論文收割機(paper_reader)
原文鏈接:網絡表達學習系列(一):深度遊走(Deepwalk)

這次我們準備的主題是關於最近很火的主題:網絡表達學習(Network Representation Learning),或者稱之爲網絡嵌入(Network Embedding)。我們會把近年來經典的網絡表達學習算法,包括Deepwalk,LINE,Node2vec等逐一解釋,做成一個系列分享給大家。

什麼是網絡表達學習?

       網絡表達學習嗎,顧名思義,是指學習出一個網絡的低維度隱含表達。網絡表達學習的目標是將一個複雜網絡中的結點和邊的信息都通過向量來表達,我們通過算法可以學習出這些向量,因此這些向量中包含着網絡的結構信息。學習得到的向量可以作爲圖的特徵用在基於圖的各種任務上,比如連接預測,節點分類,社區發現以及可視化等問題上。

        網絡表達學習本質上是將網絡進行降維從而更好得利用其它模型來處理網絡數據。對於一個網絡G=(V,E)來說,網絡表達的結果是將這個網絡變成維度爲|V|xd的一個二維矩陣,|V|是指網絡節點個數,d是每個節點表達的維度。網絡表達學習相當於一個映射函數,將每個節點映射到一個向量中去。原本網絡中單個節點包含的特徵是複雜且難以把控的,節點的特徵包括周邊鄰接點的信息(結構信息),節點的屬性以及邊的屬性等等,如果我們要同時直接使用節點的所有特徵是非常困難的,每個特徵都有自己的含義,所以我們希望把這些特徵都封裝到一起成爲一個向量,這樣既方便讀取也方便模型運算。

 

深度遊走(DeepWalk)算法

 

       深度遊走算法是近年來第一個有影響力的大規模網絡表達學習算法,它的本質是將隨機遊走(Random Walk)和自然語言處理中的skip-gram算法作組合所產生的算法。我們首先來介紹一下隨機遊走和skip-gram,然後再來看deepwalk是如何工作的。

隨機遊走(Random Walk)

       隨機遊走是一個非常基礎的基於網絡的算法。它的本質就是從一個節點出發,隨機選擇它的一個鄰接點,再從這個鄰接點出發到下一個節點,重複這個步驟然後記錄下所經過的所有節點。這個算法的變種在Google搜索和金融領域應用廣泛。通過隨機遊走我們可以得到從每個節點出發的一條路徑,這條路徑就代表了這個節點的結構信息。

Skip-gram算法

        Skip-gram算法是自然語言處理中常用的一種方法,它是用一個詞來預測這個詞前後可能會出現哪些詞。舉個例子,對於I can do all things這句話,我們希望學出do這個詞的表達,因此我們要定一個窗口,如圖1所示,1就是我們要學的詞,而uk就是窗口,代表我們要用哪些詞來訓練1的表達。若窗口大小定爲3,則對於do這個詞而言,訓練數據爲(do, can),(do, all), 若窗口大小定爲5,則對於do這個詞而言,訓練數據爲(do, can),(do, I),(do all),(do things)。

圖1. skip-gram窗口

       我們是通過神經網絡來學出詞的表達。網絡的結構如圖2。輸入是每個詞的one-hot向量,即,如果字典裏一共有10000個詞,那輸入就是一個10000維的向量,只在這個詞所處的位置上置1其餘全部置0。輸出也是訓練集中對應詞的one-hot向量,此時輸入層和輸出層之間隱含層的值就是我們學習出的詞的表達。對於skip-gram模型,我們採用隨機梯度下降進行參數學習。我們希望將這種方法用在學習網絡節點表達上,接下來將描述如何將隨機遊走和skip-gram結合起來。

 

圖2. skip-gram模型

 

深度遊走算法

      深度遊走的核心思想總結成一句話就是,短的隨機遊走路徑=句子(short random walk = sentence,quoted from Bryan Perozzi),因此我們只需要設定一個隨機遊走的步數r,通過隨機遊走我們就可以得到一個長度爲r的路徑(節點集),此時我們將其中每一個節點都看成單詞,每個節點也都有對應的one-hot編碼,這樣就可以直接用skip-gram模型學出節點的表達。

       由於網絡的節點數目可能達到百萬甚至千萬級,節點的one-hot編碼會過於稀疏,不同於傳統的skip-gram模型直接用softmax函數得到輸出,deepwalk採用的是層級softmax方法,如圖3所示,每個節點對應一個完全二叉樹的葉子節點,根節點輸入的是我們目標節點的表達,此時就變成一個二分類問題,我們只需要判斷二叉樹的左右子樹就可以學出節點的表達。

圖3. 層級softmax模型

 

總結

      Deepwalk是一個非常簡單但很有創意的方法,它將基於圖的經典方法隨機遊走和自然語言處理中的skip-gram模型結合,得到了一個簡單好用的網絡表達學習方法。這也是第一篇將深度學習應用在大規模網絡上,因此這個方法具有很強的可拓展性。Deepwalk作爲網絡表達學習中一個開創性工作,從一個簡單的角度切入,用現有的成熟的方法,在一個全新的且尚未成爲主流的問題中得到一個行之有效的解,不僅對網絡表達這個問題帶來極大的發展,同時也爲我們做研究提供了一個很好的思路。一個優秀的方法是要建立在前人工作的基礎上而不是憑空產生,並且當前最熱門的問題並不一定是最值得研究的,冷門的問題也有其潛在的研究價值。

閱讀更多,歡迎關注公衆號:論文收割機(paper_reader)
原文鏈接:網絡表達學習系列(一):深度遊走(Deepwalk)

參考文獻

[1] DeepWalk: Online Learning of Social Representations,KDD' 14

[2] Skip-gram. http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/

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