網絡嵌入

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

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

網絡表徵學習完成後,一方面利於計算存儲,傳統的方法是使用鄰接表存儲圖,鄰接表只記錄節點1度鄰居的信息,另外,它維度很是高,若是是個徹底圖你須要n*n的空間複雜度。更重要的是,不用再手動提特徵(自適應性),能夠將異質信息投影到同一個低維空間中方便進行下游計算,如分類、聚類、半監督學習、標籤傳播、圖分割等等均可以作了,固然其中關鍵是網絡表徵的效果(①類似網絡結構的節點(structural equivalence)應該須要具備類似的embedding,保存網絡拓撲結構,好比u和②屬於同質、同一類網絡集羣的節點(homophily)應該具備類似的embedding好比u和 數組

  

1、相關算法網絡

1. deepWalk架構

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

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

 

具體skip-Gram模型以下:dom

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。

 

相關文章
相關標籤/搜索