標籤:ica ati sam 世界 分類 pap 說明 reference 區分
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的矩陣分解的簡單證明,而在實際中,一些節點上WangWang會有文本資訊,所以在矩陣分解這個架構中,將文本直接以一個子矩陣的方式加入,會使學到的向量包含更豐富的資訊。
文本矩陣是對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)
這篇文章將文本轉化為特殊的節點,這樣就有兩種連邊,(節點-文檔)以及(節點-節點),對兩種邊一起建模,損失函數包括Lnn和Lnc,其中文本拆分為更細的句子,而句子有三種方式去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 論文小覽