【推薦系統】Graph Embedding系列之node2vec: Scalable Feature Learning for Networks

摘要

什麼是embedding?

Embedding在數學上表示的是一個映射關係,F: X -> Y,也就是一個函數。該函數具有兩個性質:injective和structure-preserving。Injective,即我們所說的單射函數,對於每個 Y 只有唯一的 X 對應,反之亦然;structure-preserving,結構保存,比如在X所屬的空間上X1<X2,那麼映射後在Y所屬空間上Y1<Y2。

深度學習中,Embedding特指用一個低維度向量表示一個實體,可以是一個詞(Word2Vec),可以是一個物品(Item2Vec),亦或者網絡關係中的節點(Graph Embedding)。

Embedding的初始化狀態可以理解爲是一組隨機數,隨着算法的優化與不斷迭代更新,當網絡達到收斂狀態的時候,網絡中各個層的參數就相對固化,這樣就得到了隱層權重表,此時就相當於得到了我們想要的embedding。在實際應用中,通常將神經網絡倒數第二層的權重參數當作對應樣本的embedding。

什麼是Graph Embedding?

Graph Embedding用低維、稠密、實值的向量表示網絡中的節點。目前,Graph Embedding已經是推薦系統、計算廣告領域非常流行的做法,並且在實踐後取得了非常不錯的線上效果。

Graph Embedding技術將圖中的節點以低維稠密向量的形式進行表達,要求在原始圖中相似(不同的方法對相似的定義不同)的節點其在低維表達空間也接近。得到的表達向量可以用來進行下游任務,如節點分類,鏈接預測,可視化或重構原始圖等。

Graph Embedding是把圖結構轉化成一個向量或者一組向量的變換,在這裏,Embedding能夠捕捉到圖的拓撲結構、節點到節點的關係、其他關於圖、子圖和節點的相關信息等。

Graph Embedding算法的演進

DeepWalk(2014)\rightarrowLine(2015)\rightarrowNode2vec(2016)\rightarrowEGES(2018)


node2vec: Scalable Feature Learning for Networks

  1. 論文地址:https://www.kdd.org/kdd2016/papers/files/rfp0218-groverA.pdf 【KDD 2016】

  2. Github地址:https://github.com/aditya-grover/node2vec

  3. node2vec的軟件實現:http://snap.stanford.edu/node2vec/

算法講解:

論文的前兩部分幾乎都是吧啦吧啦的廢話。。。

Node2vec是對網絡中的節點學習連續特徵表達的算法框架,node2vec把節點映射到了一個“最大化保留節點的網絡鄰居的可能性”的低維空間。node2vec是針對可擴展網絡特徵學習的一個半監督算法,使用隨機梯度下降(SGD)來優化一個傳統的基於圖的目標函數。直觀地,node2vec生成了“在一個d維特徵空間中保留了節點的網絡鄰居的最大可能性”的特徵表示。node2vec採用一個二階隨機遊走方法來生成節點的網絡鄰居節點。

Node2vec的主要貢獻在於靈活定義了一個節點的網絡鄰居。由於之前的算法沒能夠提供一個靈活的網絡節點抽樣方法,node2vec通過設計一個“與其他的抽樣策略不相關的”靈活的目標函數並提供了調整網絡空間的參數。

 

 

 

參考博文:

  1. 優秀博文:筆記︱基於網絡節點的node2vec、論文、算法python實現

  2. 優秀博文:關於Node2vec算法中Graph Embedding同質性和結構性的進一步探討

  3. 優秀博文:【Graph Embedding】node2vec:算法原理,實現和應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章