論文解讀(DeepWalk)《DeepWalk: Online Learning of Social Representations》

希望每天漲粉發表於2021-11-14

一、基本資訊

論文題目:《DeepWalk: Online Learning of Social Representations》
發表時間:  KDD 2014
論文作者:  Bryan Perozzi、Rami Al-Rfou、Steven Skiena
論文地址:  https://dl.acm.org/citation.cfm?id=2623732


二、前言

  普通的鄰接矩陣在儲存的關係很多時,緯度將變得很高,而進行矩陣分解是一個相當費時複雜的過程,因此通過矩陣分解的方法進行網路的表示學習,目前並沒有應用到大尺度資料集的方案。

  本文通過將已經成熟的自然語言處理模型word2vec應用到網路的表示上,做到了無需進行矩陣分解即可表示出網路中的節點的關係。

  DeepWalk把對圖中節點進行的一串隨機遊走類比於 word2vec 中對單詞的上下文,作為 word2vec 演算法的輸入,進而把節點表示成向量。輸出的結果能夠被多種分類演算法作為輸入應用。


三、介紹

  Deepwalk:將一個網路中的每個節點對映成一個低維的向量。說白了就是用一個向量去表示網路中的每個節點,並且希望這些向量能夠將網路中的節點中的關係表達出來,即希望在原始網路中關係越緊密的結點對應的向量在其空間中距離越近。

    

  輸入的是一個網路,其中顏色相同的結點表示拓撲關係上更為相近的結點。輸出的是每個節點的二維向量,每個節點對應的向量關係如圖所示。我們可以從這個圖看出,越是拓撲結構相近的點,其對應的二維向量在二維空間上距離與近。

  個人理解:可以將這個過程理解為一個降維的過程,但是不同於傳統意義上的高緯度降到低緯度,而是將一個複雜的結構降到低緯度。或者說可以理解為,將網路中的拓撲結構,嵌入到一個低維向量中,每個節點的低維向量,從某種程度上反應了該節點在網路中的連線情況。

  我認為最主要的好處,就是便於將一些機器學習的演算法應用到網路中。網路資料不同於傳統的資料,它不僅包含了節點的資訊,還包含了節點間的關係,對於傳統的機器學習演算法,很難將其應用於網路中。例如網路中的社團發現演算法,大多數情況下我們都針對網路做大量的遊走,不斷改變網路的社團結構,以使網路獲得最優的模組度,但是如果我們能將拓撲資訊嵌入到低維向量中,那麼每個節點我們都可以看做是一個樣本,每個維度都可以看做一個 feature,那麼只需要跑個聚類演算法,就可以得到很好的結果。除了聚類,還有鏈路預測、推薦等一系列網路中的問題,都可以直接扔到機器學習的相關演算法中跑出來。


四、Problem definition

     $G_{L}=(V, E, X, Y) $

    $X \in \mathbb{R}^{|V| \times S} \quad S \  is\  the\  size\  of\  feature\  space $

    $E \subseteq(V \times V)$

    $Y \in \mathbb{R}^{|V| \times|\mathcal{Y}|} \quad \mathcal{Y} \  is\  the\  size\  of\  labels\  set  $

  輸入:一個圖的點集和邊集

  輸出:對於一般的機器學習問題,需要學習一個從 $X$ 對映到 $Y$ 的 hypothesis。而本文的任務就是學習得到$X$ 的低維表示。

  Goal:Our goal is to learn $X_{E} \in \mathbb{R}^{|V| \times d}$ , where d is small number of latent dimensions. These low-dimensional representations are distributed; meaning each social phenomena is expressed by a subset of the dimensions and each dimension contributes to a subset of the social concepts expressed by the space.

有意思的思考:

原文:
  We propose a different approach to capture the network topology information. Instead of mixing the label space as part of the feature space,
we propose an unsupervised method which learns features that capture the graph structure independent of the labels’ distribution.
  This separation between the structural representation and the labeling task avoids cascading errors, which can occur in iterative methods.

五、Learning social representations

  文中提到,在學習一個網路表示的時候需要注意的幾個性質:

    • Adaptability:網路表示必須能適應網路的變化。網路是一個動態的圖,不斷地會有新的節點和邊新增進來,網路表示需要適應網路的正常演化。
    • Community aware:屬於同一個社群的節點有著類似的表示。網路中往往會出現一些特徵相似的點構成的團狀結構,這些節點表示成向量後必須相似。
    • Low dimensional:代表每個頂點的向量維數不能過高,過高會有過擬合的風險,對網路中有缺失資料的情況處理能力較差。
    • Continuous:低維的向量應該是連續的。

  提到網路嵌入,可能會讓人聯想到NLP中的word2vec,也就是詞嵌入(word embedding)。前者是將網路中的節點用向量表示,後者是將單詞用向量表示。因為大多數機器學習的方法的輸入往往都是一個向量,演算法也都基於對向量的處理,從而將不能直接處理的東西轉化成向量表示,這樣就能利用機器學習的方法對其分析,這是一種很自然的思想。

  本文處理網路節點的表示(node representation)就是利用了詞嵌入(詞向量)的的思想。詞嵌入的基本處理元素是單詞,對應網路網路節點的表示的處理元素是網路節點;詞嵌入是對構成一個句子中單詞序列進行分析,那麼網路節點的表示中節點構成的序列就是隨機遊走。


六、Random Walks

  所謂隨機遊走(random walk),就是在網路上不斷重複地隨機選擇遊走路徑,最終形成一條貫穿網路的路徑。從某個特定的端點開始,遊走的每一步都從與當前節點相連的邊中隨機選擇一條,沿著選定的邊移動到下一個頂點,不斷重複這個過程。

  關於隨機斿走的符號解釋: 以  $v_{i}$  為根節點生成的一條隨機遊走路徑 (綠色) 為  $W_{v_{i}} $ ,其中路徑上的點 (藍色) 分別標記為  $W_{v_{i}}^{1}, W_{v_{i}}^{2}, W_{v_{i}}^{3} \ldots$ , 截斷䐈機遊走(truncated random walk)實 際上就是長度固定的隨機遊走。

使用隨機遊走有兩個好處:

  • 並行化,隨機遊走是區域性的,對於一個大的網路來說,可以同時在不同的頂點開始進行一定長度的隨機遊走,多個隨機遊走同時進行,可以減少取樣的時間。
  • 適應性,可以適應網路區域性的變化。網路的演化通常是區域性的點和邊的變化,這樣的變化只會對部分隨機遊走路徑產生影響,因此在網路的演化過程中不需要每一次都重新計算整個網路的隨機遊走。

七、Connection: Power laws

  使用隨機遊走的頂點,附近頂點分佈滿足 power-low 分佈

  文中提到網路中隨機遊走的分佈規律與NLP中句子序列在語料庫中出現的規律有著類似的冪律分佈特徵。那麼既然網路的特性與自然語言處理中的特性十分類似,那麼就可以將NLP中詞向量的模型用在網路表示中,這正是本文所做的工作。

    


八、語言模型

  首先來看詞向量模型:
    $w_{i}^{u}=\left(w_{0}, w_{1}, w_{2}, \ldots, w_{n}\right)$  是一個由若干單片語成的序列,其中 $w_{i} \in V( Vocabulary )$,$V$  是詞彙表,也就是所有單片語成的集合。
  在整個訓練集上需要優化的目標是:

    $\operatorname{Pr}\left(w_{n} \mid w_{0}, w_{1}, \ldots, w_{n}-1\right)$

  也就是給定 $w_0,w_1,.......,w_{i-1}$ 要求出下一個 $w_{i}$ 出現的概率

  將語言模型中的單詞對映到圖表示上去,單詞即對應了圖中的節點 $v_i$ ,句子序列對應了網路中的隨機遊走,那麼對於一個隨機遊走$v_0,v_1,v_2,.......,v_{i-1}$需要優化的目標是:

  $\operatorname{Pr}\left(v_{i} \mid\left(v_{0}, v_{1}, \ldots, v_{i-1}\right)\right)$

  按照上面的理解就是,當知道  $\left(v_{0}, v_{1}, \ldots, v_{i-1}\right)$  遊走路徑後,遊走的下一個節點是  $v_{i}$  的概率是多少? 可是這裡的  $v_{i}$  是頂點本身沒法計算,於是引入一個對映函式$\Phi$,它的功能是將頂點對映成向量,轉化成向量後就可以對頂點  $v_{i}$  進行計算了。

    $\Phi: v \in V \mapsto \mathbb{R}^{|V| \times d}$

  但是怎麼計算這個概率呢?同樣借用詞向量中使用的skip-gram模型 

  skip-gram模型有這樣3個特點:

  • 不使用上下文 (context) 預測缺失詞 (missing word),而使用缺失詞預測上下文。因為 $\left(\left(v_{0}\right),\left(v_{1}\right), \ldots,\left(v_{i}-1\right)\right)$  這部分太難算了,但是如果只計算一個 $\left(v_{k}\right)$ , 其中 $v_{k}$  是缺 失詞,這就很好算。 和右邊 2 個視窗內的節點。
  • 不考慮順序,只要是視窗中出現的詞都算進來,而不管它具體出現在視窗的哪個位置。

  應用skip-gram模型後,優化目標變成了這樣:

    $\underset{\Phi}{\operatorname{minimize}}  \quad-\log \operatorname{Pr}\left(\left\{v_{i-w}, \cdots, v_{i-1}, v_{i+1}, \cdots, v_{i+w}\right\} \mid \Phi\left(v_{i}\right)\right)$


九、Algorithm: DeepWalk

  整個 DeepWalk 演算法包含兩部分,一部分是隨機遊走的生成,另一部分是引數的更新。

  random walk generator:
  隨機遊走生成器取一個圖 $G$,並均勻地取樣一個隨機頂點 $v_i$ 作為隨機遊走$W_{vi}$ 的根。從訪問的最後一個頂點的鄰居中均勻地取樣,直到達到最大長度 (t) 。

  演算法:

  

  第 3 行代表整個過程迭代次,每次為每個節點取樣一個隨機遊走。第 4 行代表對節點進行隨機排列,這不是必須的,但是可以加速隨機梯度下降的收斂。對於每個隨機遊走,使用第7行的 SkipGram 進行引數的更新。


十、SkipGram

  SkipGram是一種語言模型,它最大化句子中大小的視窗內出現的詞的共現概率。演算法2 展示了SkipGram在DeepWalk中的應用:

  演算法2 迭代出現在視窗 $w$(第1-2行)內的隨機遊走中的所有可能的組合。對於每個頂點,我們將每個頂點 $v_j$ 對映到它當前的表示向量$\Phi\left(v_{j}\right) \in \mathbb{R}^{d}$ (見圖3b)。給定 $v_j$ 的表示,我們希望最大限度地提高其鄰居在行走中的概率(第3行)。我們可以使用不同的分類器來學習這種後驗分佈。例如,使用邏輯迴歸建模前面的問題將導致大量的標籤(約 $|V|$ ),可能是數百萬或數十億美元。這樣的模型需要大量的計算資源,可以跨越整個計算機叢集。為了加快訓練時間,可以使用 Hierarchical Softmax 最大來近似概率分佈。


十一、Hierarchical Softmax

  考慮到 $u_{k} \in V$,在第3行中計算 $\operatorname{Pr}\left(u_{k} \mid \Phi\left(v_{j}\right)\right)$ 是不可行的。計算配分函式(歸一化因子)成本昂貴。如果我們將 頂點 分配給二進位制樹的葉子,預測問題就會變成樹中特定路徑的概率最大化(見 Figure 3c)。如果到頂點 $u_k$ 的路徑是由一系列樹節點識別的$\left(b_{0}, b_{1}, \ldots, b_{\lceil\log |V|\rceil}\right)$,$(b_0=root,b_{\lceil\log |V|\rceil}=u_{k})$,那麼

    $\operatorname{Pr}\left(u_{k} \mid \Phi\left(v_{j}\right)\right)=\prod \limits _{l=1}^{\lceil\log |V|\rceil} \operatorname{Pr}\left(b_{l} \mid \Phi\left(v_{j}\right)\right)$

  現在,$\operatorname{Pr}\left(b_{l} \mid \Phi\left(v_{j}\right)\right)$ 可以通過分配給節點 $b_l$ 的父節點的二進位制分類器來建模。這降低了計算 $\operatorname{Pr}\left(u_{k} \mid \Phi\left(v_{j}\right)\right)$ 的計算複雜度,從 $O(|V|)$ 降低到 $O(log|V|)$ 。我們可以通過為隨機行走中的頻繁頂點分配更短的路徑來進一步加快訓練過程。霍夫曼編碼用於減少樹中頻繁元素的訪問時間。

    


十二、Parallelizability

  如圖2所示,社交網路隨機遊動中的頂點和一種語言中的單詞的頻率分佈都遵循冪律。這導致了罕見頂點的長尾,因此,影響Φ的更新本質上是稀疏的。這允許我們在多工作人員的情況下使用非同步版本的隨機梯度下降(ASGD)的方法。鑑於我們的更新是稀疏的,並且我們沒有獲得一個鎖來訪問模型共享引數,ASGD將實現一個最佳的收斂速度[36]。雖然我們在一臺機器上使用多個執行緒執行實驗,但已經證明了這種技術具有高度的可伸縮性,並且可以用於非常大規模的機器學習[8]。圖4顯示了並行化“深度行走”的效果。它顯示了隨著工作目錄的數量增加到8人,部落格目錄和Flickr網路的處理速度是一致的(圖4a)。它還表明,相對於連續執行的DeepWalk,預測效能沒有損失(圖4b)

     

  上圖顯示了並行對DeepWalk的影響。圖(a)當多個任務同時進行時,演算法的速度變快。圖(b)表明,並行執行下,DeepWalk的效能沒有受到影響。


十三、實驗效果展示

  資料集

    • $BlogCatalog$ 是部落格作者的社交關係網路。標籤代表作者提供的主題類別。
    • $Flickr$ 是照片分享網站使用者之間的聯絡網路。標籤代表使用者的興趣組,如“黑白照片”。
    • $YouTube$ 是流行的視訊分享網站使用者之間的社交網路。 這裡的標籤代表喜歡不同型別視訊(例如動漫和摔跤)的觀眾群體。

     

  Baseline Methods
    • SpectralClustering:該方法從圖 $G$ 的標準化拉普拉斯矩陣 $\widetilde{\mathcal{L}}$ 選擇 d-smallest 個特徵向量生成 $\mathbb{R}^d $ 的表示。利用$\widetilde{\mathcal{L}}$ 的特徵向量隱式地假設圖剪下將對分類有用。
    • Modularity:該方法從 $G$ 的  Modularity matrix B的  top-d 特徵向量生成 $\mathbb{R}^d $ 的表示。B 的特徵向量編碼了 $G$ 的模圖分割槽資訊。使用它們作為特徵可以假設模組化圖分割槽對分類很有用。
    • EdgeCluster:該方法使用 k-means 聚類對 $G$ 的鄰接矩陣進行聚類,它的效能與模組化方法具有比較性,且擴充套件圖太大,無法進行譜分解。
    • wvRN:加權投票關係鄰居是一個關係分類器。給定頂點 $v_i$ 的鄰域 $\mathcal{N}_{i}$,wvRN 用其鄰域 ( 即 $\operatorname{Pr}\left(y_{i} \mid \mathcal{N}_{i}\right)=\frac{1}{Z} \sum \limits _{v_{j} \in \mathcal{N}_{i}} w_{i j} \operatorname{Pr}\left(y_{j} \mid \mathcal{N}_{j}\right)$ ) 估計 $\operatorname{Pr}\left(y_{i} \mid \mathcal{N}_{i}\right)$ 。它在真實網路中顯示出驚人的良好效能,並被提倡作為一種合理的關係分類基線。
    • Majority:這種 naive 方法簡單地選擇訓練集中最頻繁的標籤。

十四、實驗

  為了便於我們的方法與相關基線之間的比較,我們使用了與[39,40]中完全相同的資料集和實驗程式。具體來說,我們隨機抽取標記節點的一部分( $T_R$ ),並將它們作為訓練資料。其餘的節點被用作測試。我們重複這個過程 10 次,並報告了 $Macro-F1$ 和 $Micro-F1$ 的平均效能。如果可能的話,我們在這裡直接報告原始結果[39,40]。對於所有的模型,我們使用由 Lib Linear[10] 實現的  one-vs-rest 進行分類。我們給出了使用( $γ=80,w=10,d=128$ )行走的結果。(光譜聚類、模組化、邊緣聚類)的結果使用了 Tang 和 Liu 的首選維數,$d=500$ 。

BlogCatalog

  在本實驗中,我們將 BlogCatalog 網路上的訓練比率( $T_R$ )從 10% 提高到 90% 。我們的結果如 Table 2 所示。粗體中的數字表示每一列中的最高效能。DeepWalk的效能始終優於 EdgeCluster 、Modularity 和 wvRN。事實上,當只使用 20% 的節點進行訓練時,DeepWalk 在獲得 90% 的資料時比這些方法表現得更好。SpectralClustering 的效能被證明更具競爭力,但當在 $Macro-F_1$ ($ T_R≤20% $) 和 $Micro-F1$(T_R≤60% )上的標記資料稀疏時,DeepWalk的效能仍然優於後者。當圖的一小部分被標記時,這種強大的效能是我們方法的核心優勢。在接下來的實驗中,我們研究了我們的表示在更稀疏標記的圖上的效能。

    

Flickr

  在本實驗中,我們將 Flickr 網路上的訓練比率( $T_R$ )從 $1%$ 變化到 $10%$。這相當於在整個網路中有大約 800 到 8000 個節點被標記出來進行分類。Table 3 顯示了我們的結果,這與之前的實驗結果一致。與Micro-F1相比,DeepWalk 的效能比所有基線高出至少 $3%$。此外,當只有 $3%$ 的圖被標記時,它的 $Micro-F1$ 效能優於所有其他方法,即使它們得到了 $10%$ 的資料。換句話說,DeepWalk 可以比基線的訓練資料少 60%。它在 $Macro-F_1$ 中也表現得很好,最初表現接近BlogCatalog,但距離自己提高了 1%。

    

YouTube

  YouTube 網路比我們之前實驗過的要大得多,它的大小阻止了我們的兩種基線方法(SpectralClustering 和 Modularity )在它上執行。它比我們之前考慮過的更接近一個真實世界的圖。訓練比例( $T_R$ ) 從 1% 到 10% 的結果如 Table 4 所示。他們表明,DeepWalk 在建立圖形表示方面顯著優於可伸縮的基線,即邊緣叢集。當 1% 的標記節點用於測試時,$Micro-F1$ 提高了14%。$Macro-F1$ 顯示出相應的 10% 的增長。隨著訓練資料的增加,這一領先優勢逐漸縮小,但DeepWalk 以 $Micro-F1$ 領先 $3% $ 結束,$Macro-F1$ 提高了令人印象深刻的5%。這個實驗展示了效能的好處:可以通過使用社會表徵學習進行多標籤分類而發生。深度行走,可以縮放到大型圖形,並且在這樣一個稀疏標記的環境中表現得非常好。

    

Parameter Sensitivity

  為了評估 DeepWalk 引數化的變化如何影響其在分類任務上的效能,我們在兩個多標籤分類任務( Flickr 和 BlogCatalog )上進行了實驗。在這個測試中,我們將視窗大小(Window size)和 行走長度(Walk Length) 固定為合理的值( $w=10,t=40$),這應該強調區域性結構。然後,我們改變潛在維度(d)的數量、每個頂點開始行走的次數($γ$)和可用的訓練資料量( $T_R$ ),以確定它們對網路分類效能的影響。

Effect of Dimensionality

  Figure 5a顯示了增加我們的模型可用的潛在維度數的影響。

  Figure 5a1 和 Figure 5a3 檢查了改變維數和訓練率的影響。Flickr和部落格目錄之間的效能非常一致,並表明一個模型的最優維數取決於訓練示例的數量。(請注意,1%的 Flickr 擁有的標記例子大約與10%的部落格目錄一樣多)。

  Figure 5a2 和 Figure 5a3 檢查了改變每個頂點的維數和行走次數的影響。對於不同的 $\gamma $ 值,維度之間的相對效能相對穩定。這些圖表有兩個有趣的觀察結果。首先,大部分好處是通過在兩個圖中每個節點啟動 $\gamma =30$ 行走來實現的。第二,在這兩個圖中,不同的 $\gamma =30$ 值之間的相對差異是相當一致的。Flickr 比 BlogCatalog  多有一個數量級的邊,我們發現這種行為很有趣。

  這些實驗表明,我們的方法可以製作出不同尺寸的有用模型。他們還表明,模型的效能取決於它所看到的隨機遊動的次數,而模型的適當維數取決於可用的訓練示例。
Effect of sampling frequency 
  Figure 5a 顯示了增加 $\gamma $ 的影響,即我們從每個頂點開始的隨機遊動的次數。在不同尺寸條件下的結果非常一致。Figure 5b1、Figure 5b3 訓練資料的數量(Figure  5b2,Figure  5b4)。最初,增加 $\gamma $  對結果有很大的影響,但這種影響很快減慢($\gamma  >10$ )。這些結果表明,我們能夠在經過少量的隨機遊走後學習頂點的有意義的潛在表示。

十五、結論

  我們提出了 DeepWalk,一種學習頂點潛在社會表徵的新方法。利用截斷隨機遊動的區域性資訊作為輸入,我們的方法學習一種編碼結構規律的表示。在各種不同的圖上進行的實驗說明了我們的方法在具有挑戰性的多標籤分類任務上的有效性。

  作為一種 online algorithm,DeepWalk也是可擴充套件的。我們的結果表明,我們可以為太大的無法執行光譜方法的圖建立有意義的表示。在如此大的圖上,我們的方法顯著優於其他設計來操作稀疏性的方法。我們還展示了我們的方法是可並行化的,允許工作人員同時更新模型的不同部分。

  除了有效性和可擴充套件性外,我們的方法也是語言建模的一個有吸引力的泛化方法。這種聯絡是互惠互利的。語言建模的進步可能會繼續為網路產生改進的潛在表示。在我們看來,語言建模實際上是從一個不可觀察到的語言圖中取樣的。我們相信,從建模可觀測圖中獲得的見解可能反過來會對建模不可觀測圖產生改進。

  我們未來在該領域的工作將集中於進一步研究這種對偶性,利用我們的研究結果來改進語言建模,並加強該方法的理論論證。 

看完點個關注唄!!(總結不易)

相關文章