日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图神经网络——node2vec

發布時間:2023/12/31 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图神经网络——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遍歷捕獲到;UUUS1S_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表示返回上一步訪問過的節點即tttdtx=1d_{tx}=1dtx?=1表示訪問上一步節點ttt的下一個鄰居節點比如x1x_1x1?,即對節點ttt進行BFS遍歷訪問;dtx=2d_{tx}=2dtx?=2表示訪問更遠的節點,即從vvv出發繼續DFS遍歷訪問。

而二階隨機游走只需兩個參數pppqqq就可以完成。
其中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(α2V),其中α\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=6k=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)

  • 首先計算各條邊的轉移概率π\piπ
  • 將轉移概率做為權重后的新圖G′=(V,E,π)G^{'}=(V,E,\pi)G=(V,E,π)
  • 初始化采樣路徑集合walkswalkswalks為空
  • 每個節點同時運行rrr個walk
  • ??對于圖中每個節點uuu
  • ????利用算法node2vecWalk(G′,u,l)node2vecWalk(G^{'},u,l)node2vecWalk(G,u,l)采樣產生一條從節點uuu開始的路徑walkwalkwalk
  • ????將產生的路徑加入路徑集合walkswalkswalks
  • 利用隨機梯度下降學習節點的表示fff
  • 返回fff
  • node2vecWalk算法(輸入為圖G′=(V,E,π)G^{'}=(V,E,\pi)G=(V,E,π),開始節點uuu,步長lll)

  • 初始化采樣序列walkwalkwalk為節點[u][u][u]
  • 從1到lll開始循環(共采樣lll個節點)
  • ??取出walkwalkwalk中的當前節點currcurrcurr
  • ??從圖G′G^{'}G中得到currcurrcurr的鄰居節點集合VcurrV_{curr}Vcurr?
  • ??根據轉移概率π\piπVcurrV_{curr}Vcurr?中采樣一個節點sss
  • ??將sss加入walkwalkwalk
  • 返回walkwalkwalk
  • 注:node2vecWalk算法的第5步采用了alias采樣算法,可以再O(1)時間內完成。

    4.實驗

    作者首先利用小說《悲慘世界》的人物共現關系驗證了node2vec方法的有效性。如下圖所示:

    其中,位于上面的一副圖是設置p=1,q=0.5p=1,q=0.5p=1q=0.5時節點的表示。相同顏色的節點表示相似。上面的一副圖設置側重于DFS,所以它能捕捉到節點的同質性,即相同社區的節點聚集在一起,顏色相同。我的理解是:偏重DFS時,兩個社區可能只有幾條邊相連,而社區內部相連的邊會很多,那么偏重DFS采樣時,兩個社區的節點同時被采樣到的概率會很小,所以兩個社區之間節點的相似性就會變小,同時社區之內節點的相似性就會變大。(根據公式(2))。所以偏重DFS會發現不同的社區聚集,即同質性。

    下面的一幅圖是設置p=1,q=2p=1,q=2p=1q=2時節點的表示。它側重于BFS,所以能發現節點的結構等同性,比如位于邊緣的節點都是同一顏色,位于中間的節點是同一顏色。我的理解是:偏重BFS時,即使兩個社區只有少數邊連接,但是采樣是根據鄰居節點來的,所以不同社區的節點也會進行相似逼近,因為有可能位于兩個社區的兩個節點是鄰居。所以偏重BFS會刻畫出圖的結構信息,比如位于邊緣的節點表示相似,位于中間的節點表示相似,這就是結構等同性。

    最后作者在節點多標簽分類和鏈接預測任務上進行了實驗,驗證了node2vec的優越性。

    5. 總結

    node2vec可以說是deepwalk的擴展,通過兩個參數pppqqq來控制bfs和dfs兩種方式的隨機游走,而deepwalk是一種不加制約,漫無目的的游走,不能顯式建模節點之間的結構信息。

    總結

    以上是生活随笔為你收集整理的图神经网络——node2vec的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。