網路表示學習總結

2022-03-16 01:34:09 字數 3055 閱讀 6070

總結一下網路表示學習 (network embedding/network representation learning) 的東西。

網路表示學習即是將節點表示為向量。

為什麼表示為向量,目前看來有以下幾點原因:

向量是一種分布式表示,比 one-hot 表示什麼的更易於使用,如可以方便地作為 feature 餵給 classifier 等。而這其實也是因為分布式表示含有很多隱含資訊,不像 one-hot 向量,丁是丁卯是卯。同時,分布式表示可以比 one-hot 表示短得多。

網路 (graph) 是一種不夠結構化的資料結構。想要在網路中獲取有用的資訊,哪怕只關注乙個節點,也必然要關注網路中與之相關的一群節點,演算法複雜度指數上公升,解決問題的複雜性也是指數上公升。這種級聯的問題使得在網路上的研究很麻煩,千頭萬緒。而把每個節點表示為乙個獨立的向量就很方便了。

網路不規則。網路中的節點有的度很大,有的度很小,每個節點的鄰居個數不一樣,在網路上直接處理會很麻煩。轉化為向量後,向量長度都一樣,就規則了。

網路很大時處理起來時間和空間複雜度都太高,鄰接矩陣和 laplacian 矩陣都是 \(n^2\) 大小,而處理成 embedding 向量後,長度就很短了,給下游任務使用時複雜度就小得多。

接下來的問題是怎麼將節點表示成向量。

這裡首先要確定的是要從哪個角度來確定節點間的相似性。目前我接觸到的主要是以下兩個角度:

homogeneity/proximity,這個主要是社群 (community) 角度,即相鄰的節點更可能在社群屬性上相似。在某篇**上看到乙個解釋說,從這個角度看,網路是平滑的,感覺很形象很直覺。

structural similarity,這個主要是結構或功能角度,即周圍結構相似的節點更可能在功能上相似。

當然,社群很多時候也會和功能相關,功能相似的節點也很可能相鄰,所以這兩個角度會有一些相似或重疊的地方。

但如果兩個結構相似的節點相距很遠時,這兩個角度就幾乎是正交的了。

首先說第乙個角度,第乙個角度的基本假設是『相鄰節點相似』,這可以稱為是 first-order proximity。而另一方面,基於這個假設,與同乙個節點相似的節點之間也更可能相似,那麼兩個節點之間共同鄰居越多,它們也就更可能相似,這可以稱為 second-order proximity,這時,兩個節點之間相距為 2。當然,距離再遠些還可以有 high-order proximity。

那麼如何捕捉 (capture) 這些 proximity 呢?

最早 deepwalk 是以節點作為單詞,以隨機遊走序列作為句子,得到句子序列之後餵給 word2vec 從而得到節點 embedding。word2vec 會將視窗內的節點作為上下文,所以 deepwalk 捕捉的是 \(k\) (window size) 階proximity?

之後出現了 line,line 一方面針對大型網路進行了優化,另一方面,給出了 objective function,這就使得對於網路表示學習的改進更加容易。因為要在基於 random walk 的方法上繼續改進,一般只能在網路結構 (如 harp?) 或 random walk 的生成模式 (如 node2vec) 上做手腳,這樣改進或擴充套件起來就很不方便。而在 line 給出了 objective function 後,只要針對自己預想的改進,調整目標函式就好了。因此,後面看到的很多網路表示學習的**都是基於 line 做的改進,如加入社群結構、加入影響力模型等等。

之後,又出現了基於矩陣分解的網路表示學習方法,如 grarep,但這類方法速度比較慢。

除此之外,還有基於深度學習的方法,如 sdne,本質上可以看作使用自編碼器對鄰接矩陣降維?

本質上,這些方法都可以看作用向量表示來模擬網路中的概率分布,不同的是這個概率分布是從哪個角度計算的,以及是怎麼計算的。如 line 中定義的網路中的概率分布就比較簡單直接,基本是邊權重除以中心節點的度,然後以 sigmoid 或 softmax 來用向量表示表達這個概率,接下來就是用 kl-divergence 來最小化兩個分布的距離就可以了。對於基於 random walk 的方法,這個網路中的概率分布就隱含在 random walk 中而沒有明確定義。

對於 deepwalk 來說,random walk 相當於nlp裡的句子,而在 nlp 中,word2vec 所做的事情相當於通過向量表示使句子生成的概率最大化,那麼在 deepwalk 中,節點相當於 vocabulary,deepwalk 的目的就是用節點向量使 random walk 生成的概率最大化。

就好象給定 n 個節點,用這 n 個節點可以生成有不同連線方式的網路,假設這些不同的網路構成乙個集合(空間?) s,那麼我們見到的那個網路 g 只是這個集合中的乙個元素。用不同的向量表示這些節點,生成這些網路的概率也會不同,我們要做的是調整這些向量,使生成給定網路 g 的概率最大。那麼此時問題在於如何表示『向量生成某個網路 g 的概率』。deepwalk 首先將網路轉化為 random walk 序列,可以理解為在給出足夠多 random walk 序列時,這些序列在集合 s 中對應 g 的概率最大,從而我們可以用 random walk 序列近似表示網路 g,接下來只要向量表示生成這些 random walk 序列的概率越大,就可以理解為生成網路 g 的概率越大。然後我們再將 random walk 生成的概率近似用上下文生成中心詞(或反過來)的概率表示,就可以用 word2vec 的 cbow 或 skipgram 學習了。這裡 s,g 有點像監督學習裡的 hypothesis set 和 ideal target function。

另,考慮另乙個問題:給定乙個 \(n \times n\) 的矩陣 \(a\),矩陣裡每個元素 \(a_\) 表示兩個點 \(i\) 和 \(j\) 之間的距離,求給出每個節點的座標,使滿足該矩陣。座標維數不做限定。

如果該問題裡的點對應網路中的節點,矩陣中的值表示節點間的最短路徑距離或轉移概率,所求座標對應向量表示,那麼network embedding可以看作對這個問題的近似求解?

這個問題可以看作有兩個步驟,一是給出矩陣 \(a\),二是求節點座標 (即embedding)。大多數network embedding方法其實可以看作是對於這兩個步驟給出了不同的解決方案。即以不同方式定義節點間的相似度,給出不同的矩陣 \(a\),或者以不同方式求解 embedding。

todo:

結構相似性角度

graph kernel

link prediction

網路表示學習 Deepwalk

題目 deepwalk online learning of social representations 原始碼 short random walks sentenceword2vec在訓練詞向量時,以文字語料作為輸入資料 網路表示學習以複雜資訊網路作為資料輸入。在訓練過程中詞語出現的頻次與根據原...

BGP網路學習總結

1 前言 雲計算在中國發展越來越快,企業逐步開始將業務遷移到公有雲中,方便運維,節省成本。公有雲最複雜的地方是網路,客戶對網路的需求千奇百怪,造成網路環境極其複雜,稍有不慎,就會出現網路連通性問題。因此大部分雲計算廠商機房網路型別的運營商接入均為 bgp 多線路,保證線路質量。公有雲中網路安全也是非...

網路流學習總結

設 定義在二元組 上的實數函式且滿足 容量限制 對於每條邊,流經該邊的流量不得超過該邊的容量,即 f u,v le c u,v 斜對稱性 每條邊的流量與其相反邊的流量之和為 0,即 f u,v f v,u 流守恆性 從源點流出的流量等於匯點流入的流量 最大流我們有一張圖,要求從源點流向匯點的最大流量...