圖上的機器學習系列-聊聊SDNE

前言


本篇繼續我們的Graph Embedding之旅途。今天要聊的是SDNE(Structural Deep Network Embedding)。結合的論文爲《Structural Deep Network Embedding》,這是2016年發表的一篇論文,與node2vec在同一年問世。總體上來,SDNE更像LINE,而不像Deepwalk。有了LINE的基礎後,理解這篇文章會較快。

----廣告時間,歡迎關注本人微信公衆號

 

算法原理


讓我們還是帶着問題來理解該方法。
怎麼刻畫節點之間的相似性?
在圖上,一階相似度就是兩點之間的邊權重,二階相似度的定義如下:

發現沒有,與LINE一模一樣!所以做事情可以先站在前人的肩膀上去發揮,只有有所創新,就能出價值。

從節點到向量,怎麼生成?
先回憶一下LINE,它是分別通過最優化求解一階、二階相似度的損失函數,得到了兩個向量表示,然後簡單地把兩個向量拼接到了一起作爲節點最終的向量表示。SDNE在這一步上有所改進,它定義一個損失函數如下所示:

這裏同時包括了一階、二階損失函數,然後最優化求解該函數就可以得到向量表達。僞代碼如下:

吐嘈一下,原論文中雖然放出了這個圖作爲其架構圖,但我個人認爲這個圖畫得非常差,信息傳達極其有限,只是一個簡單的示意圖,完全體現不出算法的核心原理與推導過程。


小結


SDNE也是一種圖嵌入的方法,它與LINE具有相同的一階、二階相似度。不同的是,它使用了深度自編碼器方法來捕獲二階相似度。然後又用一個損失函數同時包括了一階相似度損失、二階相似度損失,最後最優化求解得到向量表示。

參考資料


1. 提出SDNE的論文《Structural Deep Network Embedding》
2. 提出LINE的論文《LINE: Large-scale Information Network Embedding

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