Network Representation Learning/Embedding
轉載自:
http://blog.csdn.net/u013527419/article/details/74853633
http://blog.csdn.net/u013527419/article/details/76017528
網絡表示學習(network representation learning,NRL),也被稱為圖嵌入方法(graph embedding method,GEM)是這兩年興起的工作,目前很熱,許多直接研究網絡表示學習的工作和同時優化網絡表示+下遊任務的工作正在進行中。
-
清華大學計算機系的一個學習組 新浪微博@塗存超 整理的論文列表:https://github.com/thunlp/NRLpapers,並一直持續更新著,裏面詳細的列舉了最近幾年有關網絡表示學習(network representation learning/network embedding)比較有代表性的論文列表及其代碼。
-
[(MLSS2017)網絡表示學習]《Representation Learning with Networks》by Jure Leskovec [Stanford University] Part1:網頁鏈接 Part2:網頁鏈接 Part3:網頁鏈接 Part4:網頁鏈接 ????
-
一篇綜述性文章(University of Southern California (USC))及其code:
(1)文章:
Goyal P, Ferrara E. Graph Embedding Techniques, Applications, and Performance: A Survey[J]. arXiv preprint arXiv:1705.02801, 2017.
https://github.com/palash1992/GEM -
一篇博客:
http://blog.csdn.net/Dark_Scope/article/details/74279582#0-tsina-1-3919-397232819ff9a47a7b7e80a40613cfe1 -
一個github資料,裏面有部分論文+code(大多數是python實現,matlab次之):
https://github.com/chihming/awesome-network-embedding -
三個slides:
(1)https://pan.baidu.com/s/1nuB5Rex
(3) https://pan.baidu.com/s/1cwB7pc
網絡表示學習(DeepWalk,LINE,node2vec,SDNE)
原創 2017年07月24日 12:49:01詳細的資料可以參考:網絡表示學習相關資料
1.傳統:基於圖的表示(又稱為基於符號的表示)
如左圖G =(V,E),用不同的符號命名不同的節點,用二維數組(鄰接矩陣)的存儲結構表示兩節點間是否存在連邊,存在為1,否則為0。
缺點:長尾分布下大部分節點間沒有關系,所以鄰接矩陣非常稀疏,不利於存儲計算。
2. 網絡表示學習(Network Representation Learning,NRL),也稱為圖嵌入法(Graph Embedding Method,GEM):用低維、稠密、實值的向量表示網絡中的節點(含有語義關系,利於計算存儲,不用再手動提特征(自適應性),且可以將異質信息投影到同一個低維空間中方便進行下遊計算)。
DeepWalk【1】:
實現1:https://github.com/phanein/deepwalk
用SkipGram的方法進行網絡中節點的表示學習。那麽,根據SkipGram的思路,最重要的就是定義Context,也就是Neighborhood。?NLP中,Neighborhood是當前Word周圍的字,本文用隨機遊走得到Graph或者Network中節點的Neighborhood。
- (1)隨機遊走隨機均勻地選取網絡節點,並生成固定長度的隨機遊走序列,將此序列類比為自然語言中的句子(節點序列=句子,序列中的節點=句子中的單詞),應用skip-gram模型學習節點的分布式表示,skip-gram模型詳見:http://blog.csdn.net/u013527419/article/details/74129996
- (2)前提:如果一個網絡的節點服從冪律分布,那麽節點在隨機遊走序列中的出現次數也服從冪律分布,並且實證發現NLP中單詞的出現頻率也服從冪律分布。
- (3)大體步驟:
Network/graph ---------random walk ---------得到節點序列(representation mapping)-------- 放到skip-gram模型中(中間節點預測上下 文節點)--------- output:representation
LINE【2】:
(1)先區分兩個概念:
一階相似度:直接相連節點間,例如6與7。
定義節點vi和vj間的聯合概率為
v代表節點,u代表節點的embedding。上面式子的意思是兩節點越相似,內積越大,sigmoid映射後的值越大,也就是這兩節點相連的權重越大,也就是這兩個節點間出現的概率越大???。
二階相似度:通過其他中介節點相連的節點間例如5與6。
用的是一個條件概率
(2)目標是讓NRL前後節點間相似度不變,也節點表示學習前如果兩個節點比較相似,那麽embedding後的這兩個節點表示向量也要很相似。--此文中用的是KL散度,度量兩個概率分布之間的距離。KL散度的相關知識詳見:http://blog.csdn.net/u013527419/article/details/51776786
以保證其一階相似度為例子:
embedding前:節點vi和vj間的經驗聯合概率為
所以,最小化:
Node2vec【3】:
論文+實現及其他:http://snap.stanford.edu/node2vec/
類似於deepwalk,主要的創新點在於改進了隨機遊走的策略,定義了兩個參數p和q,在BFS和DFS中達到一個平衡,同時考慮到局部和宏觀的信息,並且具有很高的適應性。
(1)
(2)參數控制跳轉概率的隨機遊走,之前完全隨機時,p=q=1.
--返回概率參數(Return parameter)p,對應BFS,p控制回到原來節點的概率,如圖中從t跳到v以後,有1/p的概率在節點v處再跳回到t。
--離開概率參數(In outparameter)q,對應DFS,q控制跳到其他節點的概率。
上圖中,剛從edge (t,v)過來,現在在節點v上,要決定下一步(v,x)怎麽走。其中dtx表示節點t到節點x之間的最短路徑,dtx=0表示會回到節點t本身,dtx=1表示節點t和節點x直接相連,但是在上一步卻選擇了節點v,dtx=2表示節點t不與x直接相連,但節點v與x直接相連。
(3)在計算廣告、推薦領域中,圍繞著node2nec有倆很有意思的應用:
Facebook:http://geek.csdn.net/news/detail/200138
Tencent:http://www.sohu.com/a/124091440_355140
SDNE[4]::
本文的一大貢獻在於提出了一種新的半監督學習模型,結合一階估計與二階估計的優點,用於表示網絡的全局結構屬性和局部結構屬性。
對節點的描述特征向量(比如點的「鄰接向量」)使用autoencoder編碼,取autoencoder中間層作為向量表示,以此來讓獲得2ndproximity(相似鄰居的點相似度較高,因為兩個節點的「鄰接向量」相似,說明它們共享了很多鄰居,最後映射成的向量y也會更接近)。總覺得上面圖中local和global寫反了。
目標函數:
【1】Perozzi B, Al-Rfou R, Skiena S.Deepwalk: Online learning of social representations[C],KDD2014: 701-710.
【2】LINE:Large-scaleInformation Network Embedding。WWW2015,JianTang, Meng Qu , Mingzhe Wang, Ming Zhang, Jun Yan, Qiaozhu Mei,MicrosoftResearch Asia;Peking University,China;University of Michigan。
【3】node2vec: Scalable Feature Learning forNetworks,A Grover, J Leskovec [StanfordUniversity] (KDD2016)
【4】Structural Deep Network Embedding,KDD 2016
上面都是我比較感興趣一點的,詳細的可以參考:https://github.com/thunlp/NRLpapers
Network Representation Learning/Embedding