論文解讀(node2vec)《node2vec Scalable Feature Learning for Networks》

論文題目:《node2vec Scalable Feature Learning for Network》
發表時間:  KDD 2016 
論文作者:  Aditya Grover;Aditya Grover; Jure Leskovec
論文地址:  Download
Github:      Go


概述

  node2vec is an algorithmic framework for representational learning on graphs. Given any graph, it can learn continuous feature representations for the nodes, which can then be used for various downstream machine learning tasks.

1. Introduction

  先介紹了複雜網路面對的幾種任務,一種是  node classifification task  ,預測網路中  node  最可能的標籤 。另一種是  Link prediction  ,就是預測網路中哪些頂點有潛在的關聯。
  要解決上述問題通常得先解決 NE 的問題,先前基於專家系統的  hand-engineering  存在著諸多的問題。一種取而代之的方法就是通過優化目標函數來學習網路的表示特徵,但是卻存在計算效率和準確度平衡的問題。傳統的降維方法存在諸多的問題,一般是指基於矩陣分解的方法,這種方法對於large graph 是不適用的(Adjacency matrix),運算量大,且準確率不高,同時只使用於特定的任務。
  本文舉例說明:
  • homophily:在同質性假設下,高度連接且屬於相似網路集群或社區的節點應該緊密地嵌入在一起。(例如,圖1中的節點 $s_1$ 和 $u$ 屬於同一個網路社區)
  • structural equivalence:在結構等價假設下,在網路中具有相似結構角色的節點應該緊密地嵌入在一起。(例如,圖1中的節點 $u$ 和 $s_6$ 作為它們相應社區的樞紐)。
  如下圖,  $u, s_{1}, s_{2}, s_{3}, s_{4}$  就屬於一個社區,而  $u, s_{6}$  在結構上有著相似的特徵。
        
  NE 設計理念:
    • 同一個社區內的節點表示相似。
    • 擁有類似結構特徵的節點表示相似。

2. Related work

  介紹傳統方法的不足,以及本文採用的自然語言處理方法的介紹。

3. Feature learning framework

  Definitions:
    $G=(V,E)$  is a network,which can be a (un)directed, (un)weighted network.
    $f: V \rightarrow \mathbb{R}^{d}$  be the mapping function. $f$  is a matrix of size  $|V| \times d$  parameters.
    $N_{S}(u) \subset V$ is the neighborhood  of  $u \in V $,through a neighborhood sampling strategy  S .

    objective function: 

       $\underset{f}{max} \quad  \sum \limits _{u \in V} \log \operatorname{Pr}\left(N_{S}(u) \mid f(u)\right)    \quad  \quad \quad \quad (1)$

  2個假設

    • Conditional independence:領域內節點獨立。
      $\operatorname{Pr}\left(N_{S}(u) \mid f(u)\right)=\prod \limits _{n_{i} \in N_{S}(u)} \operatorname{Pr}\left(n_{i} \mid f(u)\right)$
    • Symmetry in feature space:點間的影響的一樣的,即:a 對 b 的影響和 b 對 a 的影響一樣。

      ${\large \operatorname{Pr}\left(n_{i} \mid f(u)\right)=\frac{\exp \left(f\left(n_{i}\right) \cdot f(u)\right)}{\sum_{v \in V} \exp (f(v) \cdot f(u))}} $

  總結上述兩個假設得:

    $\max _{f} \sum \limits_{u \in V}\left[-\log Z_{u}+\sum\limits_{n_{i} \in N_{S}(u)} f\left(n_{i}\right) \cdot f(u)\right]$

  其中 $Z_{u}=\sum \limits _{v \in V} \exp (f(u) \cdot f(v))$ 。

   推導過程:

    ${\large \begin{array}{l}\underset{f}{max}  \sum \limits _{u \in V} \log P_{r}\left(N_{s}(u) \mid f(u)\right)\\\left.=\underset{f}{max}  \sum \limits _{u \in V} \log \prod \limits_{n_{i} \in N_{s}(u)} P_{r}\left(n_{i}\right) f(u)\right)\\=\underset{f}{max} \sum \limits_{u \in V} \sum \limits_{n_{i} \in N_{s}(u)} \log \frac{\operatorname{exp}\left(f\left(n_{i}\right) \cdot f(u)\right)}{\sum \limits_{V \in V} \exp (f(v) \cdot f(u))}\\=\underset{f}{max} \left[-\sum \limits_{n_{i} \in N_{s}(u)} \log Z_{u}+\sum \limits_{n_{i} \in N_{s}(u)} f\left(n_{i}\right) f(u)\right]\\=\underset{f}{max} \left[-\left|N_{s}(u)\right| \log Z_{u}+\sum \limits_{n_{i} \in N_{s}(u)} f\left(n_{i}\right) f(u)\right]\end{array}} $

  推導過程中常數 $\left|N_{s}(u)\right|$ 忽略掉了,可能是因為這邊採用了負取樣策略,和鄰居節點沒有關係。

  鄰域 $N_{s}(u)$  並不局限於近鄰,但根據取樣策略S,可以有很大不同的結構。

3.1 Classic search strategies

  鄰域 $N_{s}(u)$  的大小固定為 $k$ ,使用不同的取樣策略。這裡提出兩種取樣策略:BFS and DFS。

  DFS:鄰域被限制為源的近鄰節點。

    在 Figure 1 中,假設 $k=3$, 則在 $u$ 的附近取樣 node $s_{1}, s_{2}, s_{3}$。

  BFS:鄰域由距離源節點的距離順序取樣的節點組成。

    在 Figure 1 中,假設 $k=3$, 則在 $u$ 的某路徑上取樣 node $s_{4}, s_{5}, s_{6}$。

3.2 node2vec

  基於上述觀察結果,我們設計了一種靈活的鄰域取樣策略,使我們能夠平滑地在 BFS 和 DFS 之間進行插值。我們通過開發一種靈活的 biased random walk 來實現這一點,該程式可以以 BFS 和 DFS 的方式探索社區。

3.2.1 Random Walks

  形式上,給定一個源節點  $u$ ,我們模擬一個固定長度為  $l$  的隨機遊動。設  $c_i$  表示行走中的第  $i$  個節點,以  $c_0=u$  開始。節點  $c_i$  由以下分布方式生成:

    $P\left(c_{i}=x \mid c_{i-1}=v\right)=\left\{\begin{array}{ll}\frac{\pi_{v x}}{Z} & \text { if }(v, x) \in E \\0 & \text { otherwise } \end{array}\right.$

  其中  $\pi_{v x}$  為節點  $v$  和節點  $x$  之間的非歸一化轉移概率,$Z$  為歸一化常數。

3.2.2 Search bias α

  最簡單的方法:  $\pi_{v x}=w_{v x}$  ,對於無權圖設置  $w_{v x} = 1$,對於有權圖  $\pi_{v x}=w_{v x}$  。

  我們定義了一個具有兩個參數  $p$  和  $q$  的二階隨機遊走:

  對於一個隨機遊走,如果已經取樣了  $(t,v)$  ,即現在停留在節點  $v$  上,那麼下一個要取樣的節點  $x$  是?作者定義了一個概率分布,也就是一個節點到它的不同鄰居的轉移概率: 

    $\pi_{v x}=\alpha_{p q}(t, x) \cdot w_{v x}$

  其中:

    $\alpha_{p q}(t, x)=\left\{\begin{array}{ll}\frac{1}{p} & \text { if } d_{t x}=0 \\1 & \text { if } d_{t x}=1 \\\frac{1}{q} & \text { if } d_{t x}=2\end{array}\right.$

  這裡,$d_{tx}$  表示節點  $t$  和節點  $x$  之間的最短路徑距離。

  $\alpha_{p q}(t, x)$ 解釋如下:

    • 如果  $t$  與  $x$  相等,那麼取樣  $x$  的概率為 $\frac{1}{p} $ ;
    • 如果  $  \mathrm{t}$  與  $\mathrm{x}$  相連,那麼取樣 $\mathrm{x}$  的概率 $1$ ;
    • 如果  $t$  與  $x$  不相連,那麼取樣  $x$  概率為 $\frac{1}{q} $。

  參數 $p、q $ 的意義分別如下:

  Return parameter p:

    • 如果 $p>max(q,1)$,那麼取樣會盡量不往回走,對應上圖的情況,就是下一個節點不太可能是上一個訪問的節點  $t$。
    • 如果 $p<min(q,1)$,那麼取樣會更傾向於返回上一個節點,這樣就會一直在起始點周圍某些節點來迴轉來轉去。

  In-out parameter q

    • 如果  $q>1$ ,那麼遊走會傾向於在起始點周圍的節點之間跑,可以反映出一個節點的 BFS 特性。
    • 如果  $q<1$ ,那麼遊走會傾向於往遠處跑,反映出 DFS 特性。

  當  $p=1,q=1$  時,遊走方式就等同於  DeepWalk  中的隨機遊走。

  Benefifits of random walks
    • 存儲圖中每個節點的近鄰的空間複雜度為  $O(|E|)$ 。對於二階隨機遊走,存儲每個節點的鄰居之間的互連是有幫助的,導致空間複雜度為 $O(a^2|V|)$,其中  $a$  是圖的平均度,對於現實世界的網路來說通常很小。
    • 與經典的基於搜索的取樣策略相比,隨機遊走的另一個關鍵優勢是其時間複雜度。通過在樣本生成過程中施加圖的連通性,跨不同源節點重用取樣來提高有效取樣率。因此,我們的有效複雜度是每個樣本的$O\left(\frac{l}{k(l-k)}\right)$。請注意,樣本重用可能會在整個過程中引入一些偏差。然而,我們觀察到,它極大地提高了效率。
      • 舉例:一個長度 $k=6$ 的隨機遊走序列 $\left\{u, s_{4}, s_{5}, s_{6}, s_{8}, s_{9}\right\}$ ,為每個節點生成鄰居資訊,$N_{S}(u)=\left\{s_{4}, s_{5}, s_{6}\right\}$  ,   $N_{S}\left(s_{4}\right)=\left\{s_{5}, s_{6}, s_{8}\right\}$ ,   $N_{S}\left(s_{5}\right)=\left\{s_{6}, s_{8}, s_{9}\right\}$

3.2.3 The node2vec algorithm

    

  演算法參數:graph  $G$、dimension $d$、Walks per node  $r$,Walk length  $l$,Context size $k$ ,Return  $p$、In-out $q$ 。

    1. 根據 $p、q$ 以及權重參數計算節點到它鄰居的轉移概率;
    2. 將轉移概率加到graph  $G$  中形成  $G’$。
    3. $walks$ 用來存儲隨機遊走路徑,初始化時為空。
    4. 外循環 $r$  次表示每個節點作為初始節點要生成  $r$  個隨機遊走。
    5. 然後對圖中每個節點。
    6. 生成一條隨機遊走  $walk$ 。
    7. 將  $walk $  添加到  $walks$  中保存。
    8. 然後用  $SGD$  的方法對  $walks$  進行訓練。

  Step 6 中一條 $walk$ 的生成方式如下:

    1. 將初始節點 $u$ 添加進去。
    2. $walk$ 的長度為 $l$,因此還要再循環添加 $l-1$個節點。
    3. 當前節點設為 $walk$ 最後添加的節點。
    4. 找出當前節點的所有鄰居節點。
    5. 根據轉移概率取樣選擇某個鄰居 $s$。
    6. 將該鄰居添加到 $walk$ 中。

3.3 Learning edge features

  我們通常對涉及節點對而不是單個節點的預測任務感興趣,即  link prediction 。這裡定義一個  $g(u,v)$  使用  $f(u)$  和  $f(v)$  來代表邊的特徵向量。

    

4. EXPERIMENTS

4.1 Case Study: Les Misérables network

        

  Figure 3(top)顯示了當設置  $p=1,q=0.5$  時的示例。不同網路社區使用不相同的顏色著色。在這個設置中,node2vec 發現了在小說的主要子情節中經常相互作用的角色集群/社區。由於字元之間的邊緣是基於共現的,我們可以得出這一表徵與同質性密切相關的結論。

  為發現哪些節點具有相同的結構角色,我們使用相同的網路,但設置了 $p=1,q=2$,使用  node2vec 獲得節點特徵,然後根據所獲得的特徵對節點進行聚類。在這裡,  node2vec  獲得了一個節點對簇的互補分配,這樣顏色就對應於結構的等價性,如 Figure 3(bottom)所示。例如, node2vec 將藍色的節點嵌入在一起。這些節點代表了小說中不同子情節之間的橋樑。類似地,黃色節點主要代表位於外圍且交互作用有限的字元。我們可以為這些節點集群分配替代的語義解釋,但關鍵的結論是,  node2vec  並不與特定的等價概念綁定。正如我們通過實驗所表明的,這些等價的概念通常在大多數現實世界的網路中表現出來,並對預測任務的學習表示的性能有重大影響。

4.2 Experimental setup

  我們的實驗評估了通過  node2vec  在標準監督學習任務上獲得的特徵表示:multilabel classification for nodes and link prediction for edges。對於這兩項任務,我們根據以下特徵學習演算法來評估  node2vec  的性能:

        

  具體來說,我們設置了  $d=128 , r=10  ,  l=80  ,  k=10$,並在一個 epoch 中進行優化。我們使用 10 個隨機種子初始化重複實驗。對 10%標記數據進行  $ p、q∈{0.25、0.50、1、2、4}$  網格搜索的 10-fold cross-validation ,學習最佳  $p$  和  $q$。

  Node feature representations 被輸入到一個   L2 regularization 的  one-vs-rest logistic regression classifier 上。我們使用 $Macro-F1 scores$ 作為評價標準。

  對於更多的 fine-grained analysis,我們還比較了性能,同時將 $train-test split$ 從  $10%$  改變到  $90%$  ,學習參數  $p$  和  $q$  在  $10%$  的數據進行分析。在 Figure 4 中總結了  Micro-F1  和  Macro-F1  score  的結果。

        

4.4 Parameter sensitivity

  node2vec演算法涉及許多參數,在 Figure 5a 中,我們使用標籤數據和未標籤數據之間的不同參數選擇如何影響部落格目錄數據集上的  node2vec  的性能。除要測試的參數外,所有其他參數都假設為默認值。
        

4.5 Perturbation Analysis

  在第一種情況下,我們研究  missing edges  比列對性能的影響(相對於完整的網路)。缺失邊是隨機選擇的,受網路中連接組件數量保持固定的約束。如圖我們可以在Figure 5 b(top)中看到,隨著缺邊比列的增加,Macro-F1 分數大致呈線性下降,斜率較小。在圖隨著時間的推移而演化(例如引文網路)或網路構建昂貴(例如生物網路)時,對網路中缺失邊緣的魯棒性尤為重要。

  在第二個擾動設置中,我們在網路中隨機選擇的節點對之間有雜訊的邊。如 Figure 5 b(bottom)所示,與  missing edges  的設置相比,node2vec  的性能最初下降的速度略快,但Macro-F1評分的下降速度隨著時間的推移逐漸減慢。同樣,node2vec  對  false edges  的魯棒性在一些情況下是有用的,如感測器網路,用於構建網路的測量值是有雜訊的。

4.6 Scalability

  為了測試可伸縮性,我們使用  node2vec  學習節點表示,並使用   Erdo-Renyi Graph 的默認參數,Node 數量從 100 個節點增加到  1000,000  個節點,平均度設置為10 不變 。實驗如下:

        

  取樣過程包括計算隨機遊走的  transition probabilities(可忽略的小)和模擬隨機遊走的預處理。

4.7 Link prediction

  在鏈路預測中,我們給出了一個去掉一定比例邊的網路,並且我們想預測這些缺失的邊。

   We generate the labeled dataset of edges as follows: To obtain positive examples, we remove 50% of edges chosen randomly from the network while ensuring that the residual network obtained after the edge removals is connected, and to generate negative examples, we randomly sample an equal number of node pairs from the network which have no edge connecting them.

  我們所考慮的分數是根據構成這對節點的節點的鄰域集來定義的(Table 3)。

        

   實驗結果:

        

5 總結

 

 

 

 

『總結不易,加個關注唄!』

        

 

 

Datasets

Links to datasets used in the paper: