Node2Vec
Node2Vec
論文名稱:node2vec: Scalable Feature Learning for Networks
論文地址:https://www.kdd.org/kdd2016/papers/files/rfp0218-groverA.pdf
Node2Vec是用于學習網絡節點的連續特征表示。node2vec將節點映射為低維特征表示,最大化網絡鄰居節點的似然表示。定義一組彈性的鄰居節點的概念,設計有偏的隨機游走策略,學習探索各種各樣的鄰居表示。
1.FEATURE LEARNING FRAMEWORK
G=(V,E)G=(V,E)G=(V,E)表示網絡, 我們分析方法適用于有向(無向),有權(無權)的網絡模型。f:V→Rdf:V\rightarrow \mathbb{R}^df:V→Rd將節點映射為 特征表示,用于下游的預測任務。ddd表示特征表示的維度。fff是大小為∣V∣×d|V|\times d∣V∣×d的參數矩陣。對于每個source node u∈Vu \in Vu∈V, 我們定義NS(u)?VN_{S}(u) \subset VNS?(u)?V 為通過采樣策略SSS獲得uuu節點的鄰居節點。
我們采用擴展的Skip-gram結構。給定節點uuu的特征表示,最大化鄰居節點的log-probability。 fff表示如下:
max?f∑u∈Vlog?Pr?(NS(u)∣f(u))(1)\max _{f} \sum_{u \in V} \log \operatorname{Pr}\left(N_{S}(u) \mid f(u)\right)\tag{1} fmax?u∈V∑?logPr(NS?(u)∣f(u))(1)
為了使得優化過程易于處理,我們作出兩個假設:
-
條件獨立假設. 在給定source node的節點,他們的鄰居節點是是獨立的。
Pr?(NS(u)∣f(u))=∏ni∈NS(u)Pr?(ni∣f(u))\operatorname{Pr}\left(N_{S}(u) \mid f(u)\right)=\prod_{n_{i} \in N_{S}(u)} \operatorname{Pr}\left(n_{i} \mid f(u)\right) Pr(NS?(u)∣f(u))=ni?∈NS?(u)∏?Pr(ni?∣f(u)) -
Symmertry in feature space。 source node和neighborhood在feature space之間的影響是對稱。
對source-neighborhood node pair的特征進行softmax dot product操作:
Pr?(ni∣f(u))=exp?(f(ni)?f(u))∑v∈Vexp?(f(v)?f(u))\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))} Pr(ni?∣f(u))=∑v∈V?exp(f(v)?f(u))exp(f(ni?)?f(u))?
根據以上假設Eq.1 簡化為:
max?f∑u∈V[?log?Zu+∑ni∈NS(u)f(ni)?f(u)](2)\max _{f} \sum_{u \in V}\left[-\log Z_{u}+\sum_{n_{i} \in N_{S}(u)} f\left(n_{i}\right) \cdot f(u)\right]\tag{2} fmax?u∈V∑?????logZu?+ni?∈NS?(u)∑?f(ni?)?f(u)???(2)
對于每個節點的partition function, Zu=∑v∈Vexp?(f(u)?f(v))Z_{u}=\sum_{v \in V} \exp (f(u) \cdot f(v))Zu?=∑v∈V?exp(f(u)?f(v))對于大型網絡的計算代價是非常大的,因此,我們采用負采樣。采用隨機梯度法優化Eq.2中的模型參數。
在文本中,基于連續的文字序列,通過window size定義它們的鄰居。在網絡中,采用隨機策略生成source節點的不同的鄰居,他們的鄰居節點依賴于抽樣策略SSS。
2.node2vec
基于BFS和DFS, 我們設計兩者之間平滑的抽樣策略。
2.1 Random Walks
設隨機游走的長度lll, cic_ici?是游走的第iii個節點, 起始節點c0=uc_0=uc0?=u。節點cic_ici?通過以下方式產生:
P(ci=x∣ci?1=v)={πvxZif?(v,x)∈E0otherwise?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. P(ci?=x∣ci?1?=v)={Zπvx??0??if?(v,x)∈E?otherwise??
πvx\pi_{vx}πvx?是 節點v和節點x之間非標準化的轉移概率, ZZZ是用于標準化的常數。
2.2 Search bias α\alphaα
最簡單直接的隨機游走方式是基于邊的權重wvxw_{vx}wvx?進行下一個節點的抽樣。例如:πvx=wvx\pi_{vx}=w_{vx}πvx?=wvx?。(對于無權圖wvx=1w_{vx}=1wvx?=1)。但是,這種情況沒有考慮到網絡的結構,不能進行不同形式鄰居節點的探查。BFS和DFS分別適合結構等價和同質的網絡的極端采樣范式?,F實多是兩種情況的融合,我們的隨機游走對兩者作出平衡。
根據ppp和qqq我們定義2nd2^{nd}2nd階的隨機游走,ppp和qqq引導游走的方式:假設剛游走過一條邊(t,v)(t,v)(t,v), 現在處于節點vvv,(Figure 2)。現在基于邊(v,x)(v,x)(v,x), 決定下一步游走的轉移概率πvx\pi_{vx}πvx?。我們設未標準化的轉移概率πvx=αpq(t,x)?wvx\pi_{vx}=\alpha_{pq}(t,x)\cdot w_{vx}πvx?=αpq?(t,x)?wvx?,其中:
αpq(t,x)={1pif?dtx=01if?dtx=11qif?dtx=2\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. αpq?(t,x)=????p1?1q1???if?dtx?=0?if?dtx?=1?if?dtx?=2?
dtxd_{tx}dtx?是節點ttt和節點xxx之間的最短路徑。dtxd_{tx}dtx?是集合{0,1,2}\{0,1,2\}{0,1,2}中的一個。兩個參數對于引導游走的方式是非常必要的。
直觀上,參數ppp和參數qqq是用來控制離開起始節點uuu鄰域的速度。特別的,這些參數允許我們的搜索過程在BFS和DFS之間進行插值,從而反映對不同節點的親和力。
Return parameter ppp
參數ppp控制在游走的過程中,折返( revisiting)訪問節點可能性。如果將其設置一個較高的值(>max?(q,1))(\gt \max(q,1))(>max(q,1)),采樣到已經訪問過節點的概率是非常小的(除非下一個節點沒有鄰居節點)。這個策略鼓勵新的探索,避免重復過去無效2-hop。另一方面,如果ppp比較小(<min?(q,1))(\lt\min(q,1))(<min(q,1)),它將會導致游走的回溯(Figure 2), 將會導致在節點uuu附近進行local walk。
In-out parameter qqq
參數qqq控制“inward”和“outward”的參數。如Figure 2,如果q>1q\gt1q>1, 隨機游走偏向節點ttt。這個游走獲得起始節點的局部視圖,類似BFS,獲取都是局部樣本點。
如果q<1q<1q<1, 游走會遠離節點ttt, 進行更深層次訪問。這種行為類似DFS探索。與DFS不同的是,我們基于隨機游走的框架實現類似DFS探索。給定樣本點uuu, 抽樣的樣本不是嚴格遵循DFS的distance 遞增過程,但是采樣的效率是非常高的且易于處理。設πv,x\pi_{v,x}πv,x?是在ttt時刻, 當前進行節點的函數,它們的隨機游走符合馬爾科夫性。
Benefits of random walks
在時間和空間復雜度方面,相對于 BFS和DFS, 隨機游走的計算非常高效的。在空間復雜度方面, 存儲節點鄰居O∣E∣O|E|O∣E∣. 在2nd2^{nd}2nd隨機游走過程中,存儲鄰居間的交互,它們的空間復雜度是O(a2∣V∣)O(a^2|V|)O(a2∣V∣), 其中aaa是圖平均度。在時間復雜度方面,通過在樣本生成過程施加圖連接,隨機游走一種方便的機制,通過跨不同源節點重用樣本來提高采樣的效率。假設模擬l>kl>kl>k隨機游走, 由于馬爾可夫性, 我們可以為l?kl-kl?k個節點一次產生kkk個樣本。因此,每個樣本的復雜度為O(lk(l?k))O(\frac{l}{k(l-k)})O(k(l?k)l?)。舉例來說,我們隨機游走l=6l=6l=6, 序列為{u,s4,s5,s6,s8,s9}\{u, s_4, s_5, s_6, s_8, s_9\}{u,s4?,s5?,s6?,s8?,s9?}, 會產生如下: NS(u)={s4,s5,s6}N_{S}(u)=\left\{s_{4}, s_{5}, s_{6}\right\}NS?(u)={s4?,s5?,s6?},NS(s4)={s5,s6,s8}N_{S}\left(s_{4}\right)=\left\{s_{5}, s_{6}, s_{8}\right\}NS?(s4?)={s5?,s6?,s8?}和NS(s5)={s6,s8,s9}N_S(s_5)=\{s_6,s_8,s_9\}NS?(s5?)={s6?,s8?,s9?}。需要注意的是:重用樣本在整個過程中會引入偏差,但效率大大提高。
2.3 The node2vec algorithm
Algorithm 1是node2vec的偽代碼,由于起始節點uuu的選擇, 在隨機游走過程中,會存在隱含的偏差。因為我們要學習所有節點的表示,我們將每個節點作為起始節點,隨機游走固定的長度lll, 游走rrr次。每一步的游走基于轉移概率πvx\pi_{vx}πvx?。對于二階馬爾科夫轉移概率πvx\pi_{vx}πvx?可以事先計算。因此,對于節點的采樣可以在O(1)O(1)O(1)時間內完成。node2vec可以分為3個階段:轉移概率預計算、隨機游走序列生成、SGD優化,三個過程串聯進行。每個階段可以并行、異步執行,對全局進行優化。
3 Learning edge features
node2vec提供半監督的方式學習節點特征表示。然而,相對個體節點,我們通常對節點對的預測任務更加感興趣。例如,在鏈路預測任務中,判斷兩個節點是否存在邊。因為隨機游走自然地學習到網絡節點之間的連接性。我們基于個體節點的特征表示,使用bootstrapping的方法,可以學習節點對之間的關系。
考慮兩個節點uuu和vvv, 我們基于特征向量f(u)f(u)f(u)和f(v)f(v)f(v)定義二值算子°\circ°,用于計算表征向量g(u,v)g(u,v)g(u,v), g:V×V→Rd′g: V \times V \rightarrow \mathbb{R}^{d^{\prime}}g:V×V→Rd′, 其中,d′d^{\prime}d′是節點對(u,v)(u,v)(u,v)表征大小。我們想讓我們的算子對任何算子定義有效,即使節點之間的邊不存在。這樣做是方便鏈路預測。我們的測試數據包含真假邊。我們考慮幾種算子°\circ°, 使得d′=dd^{\prime}=dd′=d, 總結在Table 1中。
總結
- 上一篇: win7 计算机定时关机脚本,定时关机命
- 下一篇: vdbench(一)