LINE學習

LINE

Abstract

LINE 是一種將大規模網絡結點表徵成低維向量的算法,可很方便用於網絡可視化,結點分類,鏈路預測,推薦。
source codegit

Advantage

LINE相比於其餘算法來講有以下幾點優點:github

  1. 適用於大規模網絡。
  2. 有明確的目標函數(這一點DEEPWALK是沒有的,DW沒有提出一個明確的目標函數來告知什麼網絡屬性被保留下來,直觀上講,DW更偏向於結點間有更高的二階類似度的有類似的表徵)該目標函數既反映了局部結構又反映了全局結構。LINE同時考慮了一階類似度和二階類似度
  • 局部結構:頂點間的一階類似性(由觀察到的頂點間的連接強度表示,連接強度大的兩結點有類似的向量表示,不足以反映圖的全局結構,所以引入二階類似度)
  • 全局結構:頂點間的二階類似性(由頂點間的共享鄰域來決定,具備共享鄰居的結點更多是類似的)

用一張圖來直觀理解

關聯圖中6,7結點的是一條強邊,所以結點6,7的向量表示應該類似(一階類似度);而結點5,6由於共享了類似的鄰居,所以5,6的向量表示也應該類似(二階類似度)。算法

  1. 提出一種新穎的邊採樣的方法解決了隨機梯度降低算法的侷限性。(因爲現實網絡中邊權的方差每每是很是大的,SGD可能致使梯度爆炸,損害性能)

ps:具體措施:以正比於邊權大小的機率來採樣邊,將被採樣的邊做爲二值邊(0 無邊,1有邊)進行模型更新。
在這種採樣過程當中,目標函數保持不變,邊的權重再也不影響梯度。網絡

  1. LINE可適用於任何類型的網絡:有向無向,有權無權(DW只能適用於無權網絡)

Definition

  • 一階類似度:兩個結點u,v之間的邊權表明u與v之間的一階類似度。若u,v之間無邊,則一階類似度爲0.
  • 二階類似度:兩個結點u,v的二階類似度由兩個結點共同鄰居的個數決定。

Model Description

LINE with First-order Proximity

首先,瞭解一下KL散度和一階類似度的概念app

KL散度Dkl(p,q):指用q分佈來近似p分佈的信息損失。函數

一階類似度:對於兩個有邊連接的頂點,其邊的強度越大,則該兩頂點關係越密切,即越類似。性能

模型大致過程:學習

  1. 首先計算兩個結點的聯合機率密度
  2. 其次計算兩結點經驗分佈機率
  3. 最小化下列目標函數
    這裏的d,兩個分佈的距離能夠用KL散度來計算,最終目標函數以下:
    即對圖中每條邊,計算相關聯兩頂點的kl散度,求各個結點向量表示ui,使得該目標函數達到最小。

(我的理解PS:可是爲何使得聯合機率分佈近似經驗分佈的信息損失最小就是保留一階類似度?經驗分佈,邊權除以邊權總和必定程度上體現了邊權的重要性,而邊權的大小又是描繪一階類似度的重要信息,所以能夠將該經驗分佈理解成保留了一階類似度的分佈,而求各個結點的向量表示,使得兩節點的聯合分佈近似於經驗分佈的信息損失最小,即該組向量表示就是體現一階類似度的最優的向量表示)優化

上述一階類似度只適用於無向圖,而不適用於有向圖。ui


LINE with Second-order Proximity

首先要理解二階類似度的相關概念

  1. 二階類似度既適用於有向圖也適用於無向圖。
  2. 二階類似度即指,有相同上下文(鄰居)的頂點越類似。

模型大致過程

  1. 首先,每一個頂點由兩個向量表示,ui表示該頂點i自己的向量表示,當頂點i被當作是其餘頂點的上下文來考慮時,ui’爲其向量表示。
  2. 其次計算在頂點i出現的條件下,下一個頂點是j的機率(條件機率)利用該公式,咱們能夠算出頂點i的條件分佈,即
    所以 根據二階類似度的定義,咱們不難推出,具備類似條件分佈的頂點彼此類似。
  3. 所以,相似於一階類似度,爲了更好保留二階類似度,咱們須要使得每一個結點i的條件分佈近似於自身條件經驗分佈的信息損失最小。即最小化下述目標函數其中:

  • 爲每一個結點在網絡中的權重(考慮到每一個結點在網絡中的重要性可能不一樣)。該權重能夠經過度來衡量,或者一些算法來計算,好比PageRank算法。
  • 條件經驗分佈以下計算
  1. 最後仍然使用kl散度來衡量兩分佈的距離。
    最終目標函數以下:

經過學習每一個結點i的兩個向量表示ui,ui’來最小化上述目標函數,最終能夠獲得每一個結點的向量表示。


Combining first-order and second-order proximities

那麼如何同時結合一階類似度和二階類似度呢?這篇論文提出時涉及了兩種方案:

  1. 分別訓練基於一階類似度的和基於二階類似度的,獲得每一個結點的兩種向量表示,
    再鏈接該兩種向量表示。
  2. 同時優化兩個目標函數(3)和(6)來學習向量表示。留待將來研究。

Model Optimization

ps:我的對這部分理解不夠成熟,可能有誤。

優化上述目標函數(6)須要很大的計算開銷(須要對每一條邊進行採樣來訓練模型)。這裏使用負採樣來解決問題。

  • Optimization via Edge Sampling

負採樣根據必定的策略選取部分更重要的邊來進行訓練,每次訓練只對神經網絡的部分權重進行更新,大大減小了SGD過程當中的計算量。

(ps:正比於邊的權重做爲機率進行邊的採樣。通常來講,邊權越大的應該被採樣的機率要越高,在語言學領域:出現單詞對頻率越高的應該被採樣的機率越大)
上述這種邊採樣策略提升了隨機梯度降低的效率。

  • 時間複雜度

LINE 時間複雜度是邊的線性函數,與頂點個數V無關。以下:


Discussion

1. 低度頂點的嵌入表示

因爲低度頂點鄰居數目極少,原網絡中提供的信息有限,尤爲在基於二階類似度的LINE算法中是很是依賴於頂點的鄰居數目的,那麼如何肯定低度頂點的向量表示呢?

一種直觀的方法:添加更高階的鄰居(如鄰居的鄰居)來做爲該低度結點的直接鄰居。 與新添鄰居邊的權重以下:

dk是結點k的出邊的權重總和。(實際上,能夠只添加與低度頂點i有邊的,且邊權最大的頂點j的鄰居做爲頂點i的二階鄰居)

2. 如何找到網絡中新添加頂點的向量表示

若是已知新添加的頂點i與現有頂點的聯繫(即存在邊),則可獲得其經驗分佈
以後經過最小化目標函數(3)或(6)可獲得新加頂點i的向量表示

若是未能觀察到新添頂點與其餘現有頂點的聯繫,咱們只能求助其餘信息,好比頂點的文本信息,留待之後研究。

6.Conclusion

LINE 適用於大規模網絡;既保留了一階類似度,又保留了二階類似度;提出邊採樣算法,只採樣部分且只更新神經網絡部分權值,而且將採樣的邊處理成二進制邊,解決了加權邊梯度降低的侷限性(即梯度爆炸----邊權直接乘以梯度,且若邊權方差過大 可能致使梯度爆炸),加快了效率。

將來的拓展:一階二階之外更高階的類似度以及在異構網絡中的應用。

相關文章
相關標籤/搜索