1. 程式人生 > >Network Embedding 論文小覽

Network Embedding 論文小覽

兩種 ive 數據 拼接 papers 衡量 ner math 結果

Network Embedding 論文小覽

轉自:http://blog.csdn.net/Dark_Scope/article/details/74279582,感謝分享!

自從word2vec橫空出世,似乎一切東西都在被embedding,今天我們要關註的這個領域是Network Embedding,也就是基於一個Graph,將節點或者邊投影到低維向量空間中,再用於後續的機器學習或者數據挖掘任務,對於復雜網絡來說這是比較新的嘗試,而且取得了一些效果。
本文大概梳理了最近幾年流行的一些方法和論文,paper主要是來自thunlp/NRLPapers 這個List,並摻雜了一些其他論文。大概看了一遍,簡單總結一下,希望對大家有所幫助,如有不嚴謹的地方,還望指正。

拋開一些傳統的流形學習方法不談,下面大概以這個outline組織(區分並不嚴格):
技術分享

DeepWalk(Online Learning of Social Representations.)

DeepWalk是KDD 2014的一篇文章,彼時word2vec在文本上的成功應用掀起來一波向量化的浪潮,word2vec是根據詞的共現關系,將詞映射到低維向量,並保留了語料中豐富的信息。DeepWalk算法思路其實很簡單,對圖從一個節點開始使用random walk來生成類似文本的序列數據,然後將節點id作為一個個「詞」使用skip gram訓練得到「詞向量」。
思路雖然簡單,背後是有一定道理的,後面一些工作有證明這樣做其實等價於特殊矩陣分解(Matrix Factorization)。而DeepWalk本身也啟發了後續的一系列工作。

node2vec(Scalable Feature Learning for Networks)

node2vec在DW的基礎上,定義了一個bias random walk的策略生成序列,仍然用skip gram去訓練。
論文分析了BFS和DFS兩種遊走方式,保留的網絡結構信息是不一樣的。
DeepWalk中根據邊的權重進行隨機遊走,而node2vec加了一個權重調整參數α:t是上一個節點,v是最新節點,x是候選下一個節點。d(t,x)是t到候選節點的最小跳數。
通過不同的p和q參數設置,來達到保留不同信息的目的。當p和q都是1.0的時候,它等價於DeepWalk。
技術分享

MMDW
(Max-Margin DeepWalk Discriminative Learning of Network Representation)

DW本身是無監督的,如果能夠引入label數據,生成的向量對於分類任務會有更好的作用。
之前提到過有證明DW實際上是對於一個特殊矩陣M的分解,
這篇文章將DeepWalk和Max-Margin(SVM)結合起來,從損失函數看是這兩部分組成:
1.訓練的時候是分開優化,固定X,Y優化Wξ,其實就是multi class 的 SVM。
2.固定Wξ優化X,Y的時候稍微特殊一點,算了一個biased Gradient,因為損失函數裏有x和w的組合。
這樣在訓練中同時優化discrimination和representation兩部分,達到一個好的效果。
技術分享

TADW(Network Representation Learning with Rich Text Information.)

文章裏有DeepWark等同於M的矩陣分解的簡單證明,而在實際中,一些節點上旺旺會有文本信息,所以在矩陣分解這個框架中,將文本直接以一個子矩陣的方式加入,會使學到的向量包含更豐富的信息。
文本矩陣是對TFIDF矩陣的SVD降維結果。
技術分享

GraRep(Learning Graph Representations with Global Structural Information.)

沿用矩陣分解的思路,分析了不同k-step(random walk中的步數)所刻畫的信息是不一樣的:
技術分享
所以可以對每一個step的矩陣作分解,最後將每個步驟得到的向量表示拼接起來最為最後的結果。論文中有完整的推導過程,這裏就不贅述了。

LINE(Large scale information network embedding)

LINE分析了1st order proximity和2nd order proximity,其中一度相似性就是兩個點直接相連,且邊權重越大說明兩個點越相似,如下圖中的6和7;而二度相似性則是兩個點之間共享了很多鄰居,則它們的相似性就很高,如下圖的5和6。
文章中非常簡單的方式構造了一個目標函數,能同時保留二者的信息。以一度相似性為例,節點i和j相連的經驗概率就是和歸一化後的權重,即p^1(i,j)=wij/W,而通過向量計算這個概率值是p1(i,j)=11+exp(uTiuj),目標函數就是讓這兩個分布距離最小,選擇KL散度作為距離衡量函數就得到了最後的損失函數O1
其中還有個優化的trick,edge-sampling algorithm:因為邊的weight差異很大,直接用SGD效果不好,所以有個edge的采樣,按照邊的weight采樣,然後每條邊當做binary的算。
技術分享

NEU(Fast Network Embedding Enhancement via High Order Proximity Approximation)

這一篇是最近發表在IJCAI上的文章,說實話是一個很取巧的方式,文章分析了一些可以視為矩陣分解的embedding方法:
技術分享
得到一個結論,如果矩陣分解f(A)=RC能更精確地包括高階信息,效果是會更好的,但帶來的結果是算法的計算復雜度更高。
所以文章采用一種很巧妙的方式,在(低階low-order)矩陣分解的結果上更新,以獲得更高階(higher order)的分解結果,使最後的向量效果更好,這個方法是可以適用在多個算法中的。
論文中證明了一個bound來支持這樣的更新方式。
技術分享

Extra Info

技術分享
前面我們看的絕大多數只考慮了網絡結構,但真實世界中的節點和邊往往都會含有豐富的信息。如上圖,在Quora場景中,每個用戶自身會有一些label和文本,在一些場景裏甚至邊也會帶上一些label,這些信息對於網絡的構建其實是至關重要的,前面我們也看到了TADW將節點的文本信息納入訓練,下面羅列一些這個方向相關的論文。

CANE(Context-Aware Network Embedding for Relation Modeling)

首先考慮了節點上的Context,主要是文本,學習對每個節點產出Vt(文本向量)和Vs(結構向量)
Context-Free的話Vt是固定的,采用一個CNN的流程產出,如下圖左邊部分:對於一個文本,每個詞的向量組成一個矩陣,然後以l為窗口在d個kernel上進行CNN的卷積操作,得到的結果按行取max來獲得最後的文本向量。
Context-Aware的話引入了Attention機制,會考慮邊e=(u,v)的tu和tv,通過下右圖的流程產出Attention權重,再進行類似Pooling的操作(最後一步),這樣節點在和不同的點連接的時候其作用是不一樣的。
A是引入的待訓練參數,物理意義可能為目標維的空間變換。
技術分享

CENE(A General Framework for Content-enhanced Network Representation Learning)

這篇文章將文本轉化為特殊的節點,這樣就有兩種連邊,(節點-文檔)以及(節點-節點),對兩種邊一起建模,損失函數包括LnnLnc,其中文本拆分為更細的句子,而句子有三種方式去embedding,下面有列舉。
和很多方法一樣,Loss的減數部分是負采樣出來的。
技術分享

Trans-Net(Translation-Based Network Representation Learning for Social Relation Extraction)

這篇paper也是最新2017在IJCAI上發表的,引入了機器翻譯的思想,將Translation機制應用到中間,通過一個Autoencode對邊上的labels(構成一個向量)進行編碼,然後將節點和edge映射到同一個空間作加減。認為在這個空間裏u+l=v’(每個節點有兩個向量表示,分別指示在邊的「起點」和「終點」時,用’進行區分)
這樣預測的時候,簡單用v’-u 就可以得到l,再用AE的解碼器部分還原為element-binary的label set,就得到預測結果。
技術分享

Deep Learning

最近幾年深度學習如火如荼,嚴格來說,類似word2vec其實屬於淺層模型,但你也可以用一些復雜的深度模型去獲得embedding結果,這個思路是將網絡序列化,借用NLP的方法去訓練。
技術分享
我們知道在圖像上做CNN就是對臨接的像素進行卷積操作,那麽如果直接對圖作CNN呢?這就是GCN的思路,但這裏並不詳細介紹GCN,看上圖應該能明白它是怎麽去做的。
還有一些工作將深度學習應用到了Network Embedding上面,之前羅列的比如CANE和Trans-Net都有這樣的結構,特別是Trans-Net使用的Autoencoder就是一個神經網絡。
深度學習有很多工作都是基於一整個Graph去做的,比如判斷一個Graph的某些屬性,本文主要是列舉對節點進行embedding的方法。

SSC-GCN(Semi-Supervised Classification with Graph Convolutional Networks)

https://github.com/tkipf/gcn
http://tkipf.github.io/graph-convolutional-networks/

和DW完全不同的思路,引入了一個spectral convolutions操作,不過目前看起來卷積是在整個圖上做的,還沒有支持mini-batch,最後目標是單個節點的分類和表示學習。
在之前的一些工作中,NN for graph都是對圖級別做的,做分類等等,針對整個sub-graph,但這裏本質上還是對單個節點。
技術分享
這裏的操作是這個意思:比如說下圖X中每一行是一個圖節點的input feature表示,那麽通過A和W可以一次次改變這個矩陣的列數,其實就是在做「全連接」操作,只是A可能是稀疏的(轉移矩陣),所以可以看成是某種卷積操作,每一步將與之相連的節點的權重信息匯合到輸出的這一行中。
技術分享
最後定義了一個semi-supervised的東西,可以將部分節點的label也作為loss的一部分,所以整體的損失函數是:
技術分享
其中L0是有監督的部分,後面的Lreg實際上包含了邊的信息,其中A是描述了所有邊信息的adjacency matrix(or some function thereof).
比較有意思的是,這個網絡甚至隨機初始化,不訓練,得到的結果分布都比較清晰(不同community的點最後會映射得比較接近),論文解釋這個計算本身的邏輯有點像Weisfeiler-Lehman算法。

SDNE(Structural Deep Network Embedding)

技術分享
中間有一部分邏輯和TransNet有點類似,它是對節點的描述特征向量(比如點的「鄰接向量」)使用autoencoder編碼,同時也對非0項加重懲罰了(沒有連接並不代表一定沒有,可能只是還沒發生,所以這裏對此進行了協調):取autoencoder中間層作為向量表示,以此來讓獲得2nd proximity(相似鄰居的點相似度較高,因為兩個節點的「鄰接向量」相似,說明它們共享了很多鄰居,最後映射成的向量y也會更接近)。
對於1st proximity,通過評估有連邊的點的vector距離來納入考慮。
這兩部分都納入最後的損失函數,這裏的Lreg是正則。
不然過這個計算要傳入「鄰接向量」進去的話,對於節點特別多的情況是個負擔。

Heterogeneous

真實世界中的網絡毫無疑問是異構的(Heterogenous),比如交易中,涉及到的節點有人、商品、店鋪等等;更一般的比如知識圖譜中有不同類型的節點和邊,而前面描述的絕大部分工作都是在同構網絡(Homogenous)的基礎上進行的,所以了解異構網絡的embedding對真正在實際中的應用會有幫助。

PTE(Predictive Text Embedding through Large-scale Heterogeneous Text Networks.)

技術分享
這篇文章的主要意圖是將predictive的信息在最後的embedding提現出來,但不要像CNN/RNN模型那樣直接嵌套一個復雜的預測模型。所以他分別定義了三種network,word-word,word-document,word-label。都搞成類似二部圖的樣子,然後將各自的損失函數匯總到一起(形式都是類似的,定義經驗概率和目標概率求KL距離),就是這麽簡單粗暴。

HINES(Heterogeneous Information Network Embedding for Meta Path based Proximity)

技術分享
這篇文章對多元異構網絡(知識圖譜)進行了embedding,圖中有不同類型的點,不同類型的連邊。引入了meta path的概念,就是不同點之間的連邊是按照一定的元信息連起來的,比如A1(Author)-P1(Paper)-A2(Author)這樣一個meta path表示的信息可能就是A1和A2之間合作了一篇paper,這個概念可以很好地推廣到很多場景。
一般在計算proximity的時候都是按照1st order這樣的思路來的,但引入了meta path概念的時候,如果A和B在一條meta path的兩端,那麽它們的proximity應該更大,當然這也取決於這條元路徑本身的信息量。
文章中選擇了所有長度小於l的元路徑,因為一般來說路徑越長其信息量越少。
最後的損失函數同樣是刻畫分布的距離。

總結

Network Embedding是最近幾年還是有蠻多工作的,這裏只列舉了一些。雖然NE從NLP裏借鑒了很多的思想,但二者還是有一些不同的,a.如果以節點id作為「詞」,那麽對於一些真實的網絡來說,可能會非常稀疏,而且節點的數量會非常大,上億是很正常的,這對上面一些方法的應用有一些限制,你可以想象存這樣大的一張此表需要多大的內存。b.異構網絡如何能夠更好地被訓練,是一個很有挑戰的事情;同時節點和邊上往往有著各種豐富的信息,如何能夠將這些信息都學到結果向量中,也是很有意思的。

本文並沒有非常詳細地去講每篇論文,只是記錄了主要思路,有興趣可以去讀原始論文。

Reference

【0】上面每一個子標題括號中的內容就是對應的論文題目。
【1】THUNLP_NRLpapers
【2】《Representation Learning with Networks》by Jure Leskovec.slide_01

Network Embedding 論文小覽