網絡嵌入


網絡表征學習(network representation learningNRL&網絡嵌入(network embeddingNE&圖嵌入(Graph Embedding MethodGE:用低維、稠密、實值的向量表示網絡中的節點,也即映射到K維的隱空間。

近年來,網絡表征學習領域是復雜網絡分析方面的研究重點,也是深度學習應用到網絡分析的表現之一,幾乎每年都有相關的文章發表在KDD、CIKM、IJCAI等數據挖掘和人工智能的頂會,一些比較出名的算法總結如下。

網絡表征學習完成后,一方面利於計算存儲,傳統的方法是使用鄰接表存儲圖,鄰接表只記錄節點1度鄰居的信息,另外,它維度非常高,如果是個完全圖你需要n*n的空間復雜度。更重要的是,不用再手動提特征(自適應性),可以將異質信息投影到同一個低維空間中方便進行下游計算,如分類、聚類、半監督學習、標簽傳播、圖分割等等都可以做了,當然其中關鍵是網絡表征的效果(①相似網絡結構的節點(structural equivalence)應該需要具有相似的embedding,保存網絡拓撲結構,比如u和②屬於同質、同一類網絡集群的節點(homophily)應該具有相似的embedding比如u和

  

一、相關算法

1. deepWalk

這個模型在2014年提出,是這類算法的一個常用baseline模型。借用自然語言處理中的SkipGram的方法進行網絡中節點的表征學習,最終目標是學習隱層的權重矩陣即為該網絡節點的表征學習。根據SkipGram的思路,最重要的就是定義Context,也就是Neighborhood。​NLP中,Neighborhood是當前Word周圍的字,而該方法主要是利用隨機游走得到Graph或者Network中節點的Neighborhood,隨機游走隨機均勻地選取網絡節點,並生成固定長度的隨機游走序列,將此序列類比為自然語言中的句子(節點序列=句子,序列中的節點=句子中的單詞),應用skip-gram模型學習節點的分布式表示。

算法實現步驟:①network/graph ②進行隨機游走(random walk)③得到節點序列(representation mapping)④放到skip-gram模型中(中間節點預測上下文節點)⑤output: representation(中間的隱層)

 

具體skip-Gram模型如下:

skip-Gram是一個簡單的三層神經網絡,屬於自然語言處理word2vec模型之一,給定input word來預測上下文,這里類比就是給定節點u[2]預測鄰居節點N(u),目標函數如下:

 

還是拿文本舉例來說明,假設從我們的訓練文檔中抽取出10000個唯一不重復的單詞組成詞匯表,我們對這10000個單詞進行one-hot編碼,得到的每個單詞都是一個10000維的向量。其中我們有一個句子“The dog barked at the mailman”。

 

輸入層: 假設Input是’dog’, 那么我們輸入的就是一個1*10000維向量[0, 1, 0, 0, …0]。如果設置skip_window=2,num_skips=2時,我們將會得到三組 (input word, output word) 形式的訓練數據,即 ('dog', 'barked'),('dog', 'the'),('dog', 'at')。input word和output word都是one-hot編碼的向量。

隱藏層:隱層沒有使用任何激活函數,但是輸出層使用了softmax。如果我們想用300個特征來表示一個單詞。那么隱層的權重矩陣應該為10000*300(隱層有300個結點)。我們最終需要的是隱層的權重矩陣。

 

輸出層:經過神經網絡隱層的計算,dog這個詞會從一個1 *10000的向量變成1 *300的向量,再被輸入到輸出層。輸出層是一個softmax回歸分類器,它的每個結點將會輸出一個0-1之間的概率值(詞匯表各單詞與InputWord同時出現的概率),這些所有輸出層神經元結點的概率之和為1。我們訓練是要使得output word輸出的概率最大。

2. node2vec

類似於deepwalk,主要的創新點在改進了隨機游走的策略,不是以一種固定的模式進行sampling(均勻分布的抽樣),利用參數控制隨機游走同時考慮到網絡的局部(BFS)和宏觀的信息(DFS),這樣就能同時捕捉節點的結構一致性(structural equivalence)和同質性(homophily)兩個特征,具有很高的適應性。

算法實現步驟:①network/graph

②進行隨機游走(2nd-order random walks),引入兩個超參數p和q,實現參數控制跳轉概率的隨機游走。

若圖E存在邊(v, t),當游走到的節點為V,則V將以傳遞概率 選擇下一節點x,其中Z是正則化常數,  , 是邊的權重, 如下圖所示, 是節點t和x的最短路徑,取值只有{0,1,2},當下一個節點x就是t時 ,當下一個節點x與節點t和節點v等距時 ,在其他情況 。

-- Return parameter,p,控制重新返回該節點的概率,該值越大(>max(q,1))越不可能采樣一個已經經過的節點,反之,該值越小(>min(q,1))越有可能返回原來的節點,即更容易讓隨機游走變得local,對應於BFS,如圖中從t跳到v以后,有1/p的概率在節點v處再跳回到t。

-- In-out parameter,q,控制回溯和離開的概率,如果q>1隨機游走會趨向於采樣比較近的點,如果q<1隨機游走會趨向於采樣那些較遠的節點,對應於DFS。

 

③得到節點序列(representation mapping)④放到skip-gram模型中(中間節點預測上下文節點)⑤output: representation

3. SDNE

之前的算法都是學習淺層的神經網絡,淺層模型往往不能捕獲高度非線性的網絡結構,為了有效捕捉高度非線性網絡結構並保持全局以及局部的結構,作者提出了Structural Deep Network Embedding (SDNE) 方法。論文首次提出了一個半監督的深層模型,它具有多層非線性函數,從而能夠捕獲到高度非線性的網絡結構,通過半監督的深度模型中聯合優化一階相似(兩個節點有邊,則他們具有正向的一階近似,否則一階近似為0)和二階相似(兩個節點的二階相似性,取決於其鄰居節點的相似性 和 ),這樣同時保留了局部和全局的網絡結構,並且對稀疏網絡是robust。

算法框架:

為了捕捉高度非線性的網絡結構,論文提出了一種深度架構,它由多個非線性映射函數組成,通過將輸入數據映射到高度非線性的潛在空間以捕獲網絡結構。論文通過重構每個節點的鄰域結構來設計無監督學習部分來保持二階相似性,同時,對於一些成對有邊的節點,我們利用它們的一階相似性作為監督信息來改進embedding。具體細節和損失函數如下:

利用無監督組件autoencoder保持二階相似性(全局網絡結構)。將input X(xi=si)經過多層非線性映射encoder到表示空間,再把表示空間decoder回 。其損失函數定義如下(由於網絡的稀疏性對於0項給予更多懲罰):

 

 

為了捕捉局部的網絡結構,利用有監督的信息(有邊連接的節點embedding的相似性)保持一階相似性。損失函數定義如下:

③結合上面監督學習與無監督學習,聯合后的最小化目標函數如下,再根據反向傳播和SDG就可以計算出隱向量。對於新的節點比如 只需要輸入其與現存節點鄰接矩陣,就可以用以前的模型進行訓練,如果新節點與現存節點沒有聯系,則無法預測。

 

4. GCN

基於圖卷積神經網絡的半監督學習,它為圖(graph)結構數據的處理提供了一個嶄新的思路,將深度學習的神經網絡應用到圖數據上。它能同時對節點特征信息與結構信息進行端對端學習,運行速度較快,是目前對圖數據學習任務的較佳選擇,但不適合於有向圖,還不能加入邊的特征。(基於深度學習的算法最好要在GPU上跑,代碼用的tensorflow的框架)

算法框架:

已知圖 G =(V,E),其中X表示頂點集V的特征,A表示圖的結構信息,通常使用鄰接矩陣。在一層的graph conv中,使用上層的輸出 ,A和本層的W作為輸入,經過某種非線性函數f映射后,便可以得到本層的輸出,最后經過一層softmax,可以直接預測。給定一部分標簽,可以根據有標簽的數據訓練該圖卷積模型。

 

 

具體的圖卷積算子f如下(從光譜圖卷積框架開始,做了一些簡化,顯著加快了訓練時間並得到了更高的准確性,定義了在圖卷積模型中使用的參數化濾波器filter),即層級之間傳播規律,根據鄰域進行消息更新,將相鄰節點的所有特征矢量相加。其中,W(l) 是第 l層神經網絡的權重矩陣,σ() 是一個非線性激活函數如 ReLU ,D是對角線節點次數矩陣。由於A是圖的鄰接矩陣,所以只有在當前點與其他點有連接的時候才會有值,這樣AHW就會表示當前節點的所有鄰居在上一層的輸出乘以W。這樣,我們通過函數σ就僅僅看到了當前點的局部連接。同時,當我們使用多層的graph conv時,H2會利用H1的值,H1利用的是當前節點的1階鄰居的信息,而H2便是利用當前節點1階和2階鄰居的信息。對稱歸一化鄰接矩陣 是生成的邊( )的歸一化常數(D 是對角節點度矩陣,相當於取相鄰節點特征的平均值)

 

5. HIN2VEC

HIN2VEC主要是學習異質信息網絡節點和關系的網絡表征。該模型屬於神經網絡模型,通過最大化預測節點之間關系的可能性,同時學習節點和關系的表示向量,這種多任務學習方法能夠把不同關系的豐富信息和整體網絡結構聯合嵌入到節點向量中。

 

元路徑(meta-path):給定一個異構信息網絡, ,元路徑是節點類型序列a1, a2, …an或者邊類型序列r1, r2…rn-1。例如下圖3的paper-author HIN里面二度的元路徑有R= {P−P,P−A,A−P,P−P−A,P−P−P,P−A−P,A−P−P,A−P−A}

 

作者最初設想的是構建一個神經網絡模型,通過預測任意給定節點對之間的一組目標關系(多分類任務預測)學習節點embedding,如下圖2,但這樣不僅在訓練數據的准備和模型的學習上面都會產生巨大的開銷,因為對於一個復雜網絡而言,獲取網絡中兩個節點的所有關系是很困難的。最終作者把問題簡化為二分類問題,即給定一對節點X、Y和某特定路徑r,預測兩個節點是否存在該路徑關系,這樣就可以通過隨機游走產生訓練數據集,另外參數更新的復雜度也降低了。    

算法實現步驟:①基於隨機游走和負采樣(在效率和質量之間平衡)生成數據。以上圖3的paper-author為例,假設我們產生了隨機游走路徑P1, P2, A1, P3, A1另外設定目標關系只包含2度以內的元路徑,由此對於第一個節點P1我們可以產生訓練集<P1, P2, P-P>和<P1, A1, P-P-A>,對於第二個節點P2我們可以產生訓練集<P2, A1, P-A>和<P2, A3, P-A-P>,依次類推。上述隨機游走只能產生正樣本,負樣本的產生則需要借助負例采樣,隨機替換上述正例中的節點,比如把<P1, P2, P-P>中的P2換成P3,更換的必須是同類型的節點(有可能產生正確的,要進行過濾)。

②表示學習。構建神經網絡模型,預測是否存在某特定的路徑。

輸入層:三個one-hot向量 。

隱藏層:經過權重矩陣相乘后得到隱向量 作為輸入(r的處理略有不同,因為r表達了不同的含義,通過正則化函數 把隱向量的值約束到了[0,1]),輸出為 ,其中 運算,是采用了Hadamard函數。

輸出層:輸入為 ,也就是對隱含層的d維向量的元素求和。激活函數為sigmoid函數,計算sigmoid( )。

 

最優化目標:訓練數據集的形式為<x, y, r, L(x,y,r)>,其中L(x,y,r)是一個二值,代表x和y是否有關系r。通過反向傳播(backpropagation)和隨機梯度下降(stochastic gradient descent)最優化目標函數O,得到Wx和WR。當L(x,y,r)=1時, 目標是最大化 ,反之,當L(x,y,r)=0時, 目標是最小化 ,因而可以轉化成下圖中最大化

6. dynamic_triad

在真實的世界網絡是動態和發展的,作者開發一種新的表征學習算法反應節點之間關系的演進。給定從時間1到時間T序列網絡的快照 G1,…GT,我們的目標是學習節點i在每個t時刻的向量表征 。總的來說,dynamic_triad的目標就是模擬三角形閉合的過程,根據不同的節點特性,設計統一的框架定量的衡量開三角發展為閉三角的概率。

 

在t時刻有開三角不認識彼此,但是他們都認識 ,現在 決定在t+1時刻是否會把 互相介紹認識,我們認為這取決於 和 之間的親密程度(隱空間距離),根據d維隱向量 決定,

 

另外,定義社交參數θ,從每個節點隱向量中提取社交信息,因此我們定義t+1時刻( )發展為閉三角的概率為,

由於 可能有很多共同的好朋友,所以 在t+1時刻發展為朋友的概率,即t+1時刻產生一條新的邊 的概率:

同時,如果他們沒有產生邊的概率:

把(3)和(4)結合起來,我們定義三角閉合過程的負對數似然如下,通過最小化損失,求解embedding U。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM