【Graph Embedding系列】: DeepWalk算法

論文“DeepWalk: Online Learning of Social Representations” 發表在kdd2014,

下載地址:https://arxiv.org/pdf/1403.6652.pdf

作者開源的代碼:https://github.com/phanein/deepwalk

文章提出的deepwalk用於學習圖網絡中節點的低維表示,學習出的低緯embedding可以被用於各種任務。其實deepwalk的思路我已經在https://blog.csdn.net/sxf1061926959/article/details/88078008中做了介紹,方便自己以後學習,單獨記錄一下。

文章提供的思路很簡單,我覺得這個算法很不錯的一點是可以做實時訓練,比如來一個新的節點,因爲圖節點的訓練都是基於隨機遊走選擇的session來進行的,所以新加入的節點,只需要對其鄰近的節點選擇合適的session進行訓練就能使用,非常方便。能很好的應用到工業界中。

思路

整體的代碼邏輯如下:

1.構造graph

根據自身需求構造好一個同構網絡G(V,E),指定參數w,爲skip-gram的窗口大小,d爲學習的embedding向量長度,r爲重複訓練節點的次數,t爲隨機遊走截取session的長度。

2.隨機遊走

算法以構造好的同構網絡作爲輸入,對圖中節點做shuffle後遍歷節點,做隨機遊走。其中每次的隨機遊走node按DFS從鄰近node中均勻採樣下一個node,下一個node繼續重複以上過程,直到事先指定的長度爲止。以上動作重複r次。

3.skip-gram訓練

第二步可以生成大量的node 的session,將這些session看成句子,session中的node節點看作單詞,利用skip-gram算法對其進行訓練。從而生成每個node節點的embedding向量。

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