摘要
什麼是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)Line(2015)Node2vec(2016)EGES(2018)
node2vec: Scalable Feature Learning for Networks
-
論文地址:https://www.kdd.org/kdd2016/papers/files/rfp0218-groverA.pdf 【KDD 2016】
-
node2vec的軟件實現:http://snap.stanford.edu/node2vec/
算法講解:
論文的前兩部分幾乎都是吧啦吧啦的廢話。。。
Node2vec是對網絡中的節點學習連續特徵表達的算法框架,node2vec把節點映射到了一個“最大化保留節點的網絡鄰居的可能性”的低維空間。node2vec是針對可擴展網絡特徵學習的一個半監督算法,使用隨機梯度下降(SGD)來優化一個傳統的基於圖的目標函數。直觀地,node2vec生成了“在一個d維特徵空間中保留了節點的網絡鄰居的最大可能性”的特徵表示。node2vec採用一個二階隨機遊走方法來生成節點的網絡鄰居節點。
Node2vec的主要貢獻在於靈活定義了一個節點的網絡鄰居。由於之前的算法沒能夠提供一個靈活的網絡節點抽樣方法,node2vec通過設計一個“與其他的抽樣策略不相關的”靈活的目標函數並提供了調整網絡空間的參數。