图神经网络——node2vec
- 論文地址:https://arxiv.org/pdf/1607.00653.pdf
- 發表會議:KDD2016
文章目錄
- 1. 引言
- 2. 采樣算法
- 2.1. 傳統的采樣算法
- 2.2. Node2vec中的采樣算法
- 2.3. 使用基于random walk采樣的好處(時間空間復雜度分析)
- 3. node2vec算法流程
- 4.實驗
- 5. 總結
1. 引言
這篇論文可以說是對DeepWalk的擴展。按照LINE中的說法,DeepWalk只捕捉了節點間的二階相似性,LINE同時捕捉節點間的一階相似性和二階相似性。而Node2Vec也是同時捕捉了一階相似性和二階相似性,和LINE不同的是,Node2Vec是基于Random Walk實現的。
首先介紹兩個重要的概念:
一階相似性:在Node2Vec中也叫做同質性(homophily)。一階相似性捕捉的是圖中實際存在的結構,比如兩個節點由一條邊相連,則這兩個節點應該具有相似的表示。按照Node2Vec中的說法,高度互連且屬于相似網絡集群或社區的節點表示應該比較相近。一階相似性往往可以通過對節點的DFS遍歷得到。
二階相似性:在Node2Vec中也叫做結構對等性(structural equivalence)。在網絡中具有相似結構的節點表示應該相近,它并不強調兩個節點是否在圖中存在連接,即使兩個節點離得很遠,但由于結構上相似(連接的鄰居節點相似),它們的表示也應該相似。所以二階相似性可以發現不同的社區。二階相似性可以通過對節點的BFS遍歷得到。
一階相似性和二階相似性的區別可由下圖看出:
(圖1):
其中節點UUU和節點S6S_6S6?就是屬于二階相似性,可由BFS遍歷捕獲到;UUU和S1S_1S1?就屬于一階相似性,可由DFS捕獲到。
注:這里的結論可能與我們理解的相反,即,一階相似性不應該由BFS得到嗎?下面介紹Node2Vec時會給出我自己的一些想法。
Node2Vec首先借鑒了自然語言處理中的skip-gram算法,給定一個節點,最大化周圍鄰居節點出現的條件概率:
(公式1):
注:這里Ns(u)N_s(u)Ns?(u)是節點uuu的鄰居節點,在Node2vec中,鄰居節點有著不一樣的定義,它不一定是有直接邊相連的節點,而是根據采樣策略確定的。后面會有詳細介紹。
為了方便優化上式,作者做了兩個假設:
- 條件獨立性假設:即各個鄰居節點是互相獨立的,所以有:
- 特征空間的對稱性:即一個節點和它的鄰居節點之間的影響是相互的,于是也可以對鄰居節點進行嵌入表示,然后利用點乘的形式刻畫條件概率:
有了以上兩點假設,就可以把公式(1)改成以下形式:
公式(2):
其中:
這里我們發現,最終導出的目標函數和LINE中二階相似性公式很像,實際上兩者只相差了一個邊的權重wijw_{ij}wij?。和LINE中一樣,計算ZuZ_uZu?是耗時的,所以作者也采用了負采樣的方法。
注:LINE中對二階相似性建模的公式:
寫到這里可以發現,以上思想和DeepWalk是非常相似的,都是給定一個節點,最大化鄰居節點(一次采樣路徑上的節點)出現的條件概率,只不過由于計算方式的不同,Node2vec捕捉了二階相似性,DeepWalk捕捉了一階相似性?(這里存疑)。DeepWalk到這里核心算法其實已經結束了,它接下來都在介紹如何利用Hierarchical Softmax來優化條件概率的計算。而Node2vec到這里才剛剛開始,它和DeepWalk的最大不同就是如何采樣節點,即采樣鄰居節點Ns(u)N_s(u)Ns?(u)。
2. 采樣算法
2.1. 傳統的采樣算法
傳統的采樣方法主要分為以下兩部分:
- 基于BFS,基于廣度優先遍歷的采樣。那么通常Ns(u)N_s(u)Ns?(u)為節點uuu的直接鄰居,即與uuu直接相連的節點。比如在圖1中,我們設置采樣大小K=3K=3K=3,那么Ns(u)N_s(u)Ns?(u)為s1s_1s1?、s2s_2s2?和s3s_3s3?。
- 基于DFS,基于深度優先遍歷的采樣。那么采樣的節點會離源節點越來越遠。比如在圖1中,我們設置采樣大小K=3K=3K=3,那么Ns(u)N_s(u)Ns?(u)為s4s_4s4?、s5s_5s5?和s6s_6s6?。
實際上,這兩種比較極端的采樣方法DFS和BFS對應于前面所說的一階相似性和二階相似性,也叫同質性和結構對等性。node2vec就是想通過設計一種采樣算法,來融合一階相似性和二階相似性。
2.2. Node2vec中的采樣算法
node2vec中的采樣算法是基于random walk的。給定源節點uuu,采樣長度lll,假設當前在第ci?1c_{i-1}ci?1?個采樣節點,那么下一個采樣節點為xxx的概率為:
其中πvx\pi_{vx}πvx?為從節點vvv到節點xxx的轉移概率。ZZZ為歸一化的常數。
傳統的random walk采樣算法是完全隨機的,這樣就很難刻意讓采樣過程自動尋找一階和二階相似性。為此,作者提出了二階隨機游走(2nd order random walk)。
以上圖為例,當前在節點vvv,并且上一步在節點ttt,那么對于下一步的轉移概率πvx\pi_{vx}πvx?,作者定義πvx=αpq(t,x)?wvx\pi_{vx}=\alpha_{pq}(t,x)·w_{vx}πvx?=αpq?(t,x)?wvx?,其中:
這里dtxd_{tx}dtx?表示了下一步的動作類型,dtx=0d_{tx}=0dtx?=0表示返回上一步訪問過的節點即ttt;dtx=1d_{tx}=1dtx?=1表示訪問上一步節點ttt的下一個鄰居節點比如x1x_1x1?,即對節點ttt進行BFS遍歷訪問;dtx=2d_{tx}=2dtx?=2表示訪問更遠的節點,即從vvv出發繼續DFS遍歷訪問。
而二階隨機游走只需兩個參數ppp和qqq就可以完成。
其中ppp指“返回參數”,它控制著返回已經訪問過的節點的概率,如果ppp比較大(>max(q,1)>max(q,1)>max(q,1)),那么不太可能會再次訪問上一個訪問過的節點;如果ppp比較小(<min(q,1)<min(q,1)<min(q,1)),那么很有可能再次訪問上一個訪問的節點。
qqq指“in-out參數”,它控制著下一步采樣是在當前節點周圍還是去探索更遠的節點,換句話說,是按照BFS采樣還是DFS。如果q>1q>1q>1,則采樣傾向于在對ttt進行BFS采樣,可以捕捉圖的局部信息;如果q<1q<1q<1,則采樣傾向于對ttt進行DFS采樣,可以捕捉圖的全局信息。
2.3. 使用基于random walk采樣的好處(時間空間復雜度分析)
空間復雜度:因為需要保存每個節點的二階鄰居,所以空間復雜度為O(α2∣V∣)O(\alpha^2|V|)O(α2∣V∣),其中α\alphaα為每個節點的平均度(degree)。
時間復雜度:假設對于長度為lll的一次random walk,每個節點需采樣的鄰居節點數為kkk,則能為l?kl-kl?k個節點找到他們的鄰居節點,那么這一次random walk使用的節點總數就為k(l?k)k(l-k)k(l?k)。以圖1為例,l=6l=6l=6,k=3k=3k=3時,一次random walk采樣到的節點序列為{u,s4,s5,s6,s8,s9}\{u,s_4,s_5,s_6,s_8,s_9\}{u,s4?,s5?,s6?,s8?,s9?},那么產生的鄰居節點Ns(?)N_s(·)Ns?(?)為,Ns(u)={s4,s5,s6}N_s(u)=\{s_4,s_5,s_6\}Ns?(u)={s4?,s5?,s6?},Ns(s4)={s5,s6,s8}N_s(s_4)=\{s_5,s_6,s_8\}Ns?(s4?)={s5?,s6?,s8?},Ns(5)={s6,s8,s9}N_s(5)=\{s_6,s_8,s_9\}Ns?(5)={s6?,s8?,s9?},即能為6-3=3個節點找到它們的鄰居節點,一次random walk使用的節點總數為3*(6-3)=9。同時一次random walk的時間復雜度為lll,那么實際每采樣一個節點的平均時間復雜度為O(lk(l?k))O(\frac{l}{k(l-k)})O(k(l?k)l?)。由于樣本重用(sample reuse),即不同節點的鄰居節點有重合,大大降低了時間復雜度。如果沒有樣本重用,長度為lll的一次采樣只會采樣并利用lll個節點。雖然樣本重用可能會造成偏差,但是時間復雜度確實提高不少。
3. node2vec算法流程
特征學習算法(輸入為圖G=(V,E,W)G=(V,E,W)G=(V,E,W),節點維度ddd,每個節點的walk數rrr(并行),步長lll,上下文長度(鄰居個數)kkk,返回參數ppp,in-out參數qqq)
node2vecWalk算法(輸入為圖G′=(V,E,π)G^{'}=(V,E,\pi)G′=(V,E,π),開始節點uuu,步長lll)
注:node2vecWalk算法的第5步采用了alias采樣算法,可以再O(1)時間內完成。
4.實驗
作者首先利用小說《悲慘世界》的人物共現關系驗證了node2vec方法的有效性。如下圖所示:
其中,位于上面的一副圖是設置p=1,q=0.5p=1,q=0.5p=1,q=0.5時節點的表示。相同顏色的節點表示相似。上面的一副圖設置側重于DFS,所以它能捕捉到節點的同質性,即相同社區的節點聚集在一起,顏色相同。我的理解是:偏重DFS時,兩個社區可能只有幾條邊相連,而社區內部相連的邊會很多,那么偏重DFS采樣時,兩個社區的節點同時被采樣到的概率會很小,所以兩個社區之間節點的相似性就會變小,同時社區之內節點的相似性就會變大。(根據公式(2))。所以偏重DFS會發現不同的社區聚集,即同質性。
下面的一幅圖是設置p=1,q=2p=1,q=2p=1,q=2時節點的表示。它側重于BFS,所以能發現節點的結構等同性,比如位于邊緣的節點都是同一顏色,位于中間的節點是同一顏色。我的理解是:偏重BFS時,即使兩個社區只有少數邊連接,但是采樣是根據鄰居節點來的,所以不同社區的節點也會進行相似逼近,因為有可能位于兩個社區的兩個節點是鄰居。所以偏重BFS會刻畫出圖的結構信息,比如位于邊緣的節點表示相似,位于中間的節點表示相似,這就是結構等同性。
最后作者在節點多標簽分類和鏈接預測任務上進行了實驗,驗證了node2vec的優越性。
5. 總結
node2vec可以說是deepwalk的擴展,通過兩個參數ppp和qqq來控制bfs和dfs兩種方式的隨機游走,而deepwalk是一種不加制約,漫無目的的游走,不能顯式建模節點之間的結構信息。
總結
以上是生活随笔為你收集整理的图神经网络——node2vec的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员软件工程常用的画图软件推荐
- 下一篇: 开机自启动并关闭窗口(向日葵简约版)