1. 程式人生 > >Network Representation Learning/Embedding

Network Representation Learning/Embedding

次數 align 自然語言 original lob tag 存在 網絡 有關

轉載自:

http://blog.csdn.net/u013527419/article/details/74853633
http://blog.csdn.net/u013527419/article/details/76017528

網絡表示學習(network representation learning,NRL),也被稱為圖嵌入方法(graph embedding method,GEM)是這兩年興起的工作,目前很熱,許多直接研究網絡表示學習的工作和同時優化網絡表示+下遊任務的工作正在進行中。

    1. 清華大學計算機系的一個學習組 新浪微博@塗存超 整理的論文列表:https://github.com/thunlp/NRLpapers,並一直持續更新著,裏面詳細的列舉了最近幾年有關網絡表示學習(network representation learning/network embedding)比較有代表性的論文列表及其代碼。

    2. [(MLSS2017)網絡表示學習]《Representation Learning with Networks》by Jure Leskovec [Stanford University] Part1:網頁鏈接 Part2:網頁鏈接 Part3:網頁鏈接 Part4:網頁鏈接 ????

    3. 一篇綜述性文章(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.

      (2)代碼:
      https://github.com/palash1992/GEM

    4. 一篇博客:
      http://blog.csdn.net/Dark_Scope/article/details/74279582#0-tsina-1-3919-397232819ff9a47a7b7e80a40613cfe1

    5. 一個github資料,裏面有部分論文+code(大多數是python實現,matlab次之):
      https://github.com/chihming/awesome-network-embedding

    6. 三個slides:
      (1)https://pan.baidu.com/s/1nuB5Rex

      (2)https://pan.baidu.com/s/1geUHeQB
      (3) https://pan.baidu.com/s/1cwB7pc

網絡表示學習(DeepWalk,LINE,node2vec,SDNE)

原創 2017年07月24日 12:49:01

詳細的資料可以參考:網絡表示學習相關資料


1.傳統:基於圖的表示(又稱為基於符號的表示)

技術分享圖片


如左圖G =VE),用不同的符號命名不同的節點,用二維數組(鄰接矩陣)的存儲結構表示兩節點間是否存在連邊,存在為1,否則為0

缺點:長尾分布下大部分節點間沒有關系,所以鄰接矩陣非常稀疏,不利於存儲計算。


2. 網絡表示學習(Network Representation LearningNRL),也稱為圖嵌入法(Graph Embedding MethodGEM):用低維、稠密、實值的向量表示網絡中的節點(含有語義關系,利於計算存儲,不用再手動提特征(自適應性),且可以將異質信息投影到同一個低維空間中方便進行下遊計算)。

DeepWalk1

實現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模型中(中間節點預測上下 文節點)--------- outputrepresentation

技術分享圖片

LINE2

技術分享圖片

1)先區分兩個概念:

一階相似度:直接相連節點間,例如67

定義節點vivj間的聯合概率為

技術分享圖片

v代表節點,u代表節點的embedding。上面式子的意思是兩節點越相似,內積越大,sigmoid映射後的值越大,也就是這兩節點相連的權重越大,也就是這兩個節點間出現的概率越大???。

二階相似度:通過其他中介節點相連的節點間例如56

用的是一個條件概率

技術分享圖片

2)目標是讓NRL前後節點間相似度不變,也節點表示學習前如果兩個節點比較相似,那麽embedding後的這兩個節點表示向量也要很相似。--此文中用的是KL散度,度量兩個概率分布之間的距離。KL散度的相關知識詳見:http://blog.csdn.net/u013527419/article/details/51776786

以保證其一階相似度為例子:

embedding前:節點vivj間的經驗聯合概率為

技術分享圖片

所以,最小化:

技術分享圖片

Node2vec3

論文+實現及其他:http://snap.stanford.edu/node2vec/

類似於deepwalk,主要的創新點在於改進了隨機遊走的策略,定義了兩個參數pq,在BFSDFS中達到一個平衡,同時考慮到局部和宏觀的信息,並且具有很高的適應性。

1

技術分享圖片

2)參數控制跳轉概率的隨機遊走,之前完全隨機時,p=q=1.

--返回概率參數(Return parameterp,對應BFSp控制回到原來節點的概率,如圖中從t跳到v以後,有1/p的概率在節點v處再跳回到t

--離開概率參數(In outparameterq,對應DFSq控制跳到其他節點的概率。

技術分享圖片

上圖中,剛從edge tv)過來,現在在節點v上,要決定下一步(vx)怎麽走。其中dtx表示節點t到節點x之間的最短路徑,dtx=0表示會回到節點t本身,dtx=1表示節點t和節點x直接相連,但是在上一步卻選擇了節點vdtx=2表示節點t不與x直接相連,但節點vx直接相連。

3)在計算廣告、推薦領域中,圍繞著node2nec有倆很有意思的應用:

Facebookhttp://geek.csdn.net/news/detail/200138

Tencenthttp://www.sohu.com/a/124091440_355140

SDNE[4]::

本文的一大貢獻在於提出了一種新的半監督學習模型,結合一階估計與二階估計的優點,用於表示網絡的全局結構屬性和局部結構屬性。

技術分享圖片

對節點的描述特征向量(比如點的「鄰接向量」)使用autoencoder編碼,取autoencoder中間層作為向量表示,以此來讓獲得2ndproximity(相似鄰居的點相似度較高,因為兩個節點的「鄰接向量」相似,說明它們共享了很多鄰居,最後映射成的向量y也會更接近)。總覺得上面圖中localglobal寫反了。

目標函數:

技術分享圖片

1Perozzi B, Al-Rfou R, Skiena S.Deepwalk: Online learning of social representations[C]KDD2014: 701-710.

2LINELarge-scaleInformation Network EmbeddingWWW2015JianTang, Meng Qu , Mingzhe Wang, Ming Zhang, Jun Yan, Qiaozhu MeiMicrosoftResearch Asia;Peking University,China;University of Michigan

3node2vec: Scalable Feature Learning forNetworksA Grover, J Leskovec [StanfordUniversity] (KDD2016)

4】Structural Deep Network Embedding,KDD 2016

上面都是我比較感興趣一點的,詳細的可以參考:https://github.com/thunlp/NRLpapers

Network Representation Learning/Embedding