DeepWalk:圖網絡與NLP的巧妙融合


做者  | kaiyuan
整理  | NewBeeNLP公衆號

最近這段時間一直在作圖網絡相關,也差很少收尾了,有空總體覆盤了下,大體如下幾個主題,不過沒整理徹底哈哈(下次必定node

順手再安利幾份資料吧 git

  • 斯坦福的CS224W課程
  • 清華大學唐傑老師的不少分享
  • 清華大學 thunlp/GNNPapers
  • 一些大佬們的新書:《Graph Representation Learning》、《Deep Learning on Graphs》
  • 等等

ok,回到正題,今天要介紹的這篇是『Graph Embedding』系列第一篇,十分經典github

  • 論文:DeepWalk: Online Learning of Social Representations [1]
  • 代碼:https://github.com/phanein/deepwalk

enjoy~web

TL;DR

DeepWalk是首次將深度學習技術(無監督學習)引入到網絡分析(network analysis)中的工做,它的輸入是一個圖,最終目標就是得到網絡圖中每一個結點的向量表示 。畢竟萬物皆可向量,獲得向量以後能作的事情就很是多了。以下所示是論文中給出的Karate network例子。算法

先驗知識

說到生成向量表示,最有名的莫過於Word2Vec了,那麼是否是能夠將network embedding的問題轉化爲熟悉的word embedding形式呢?這樣咱們就能夠借用word2vec的思想來解決了。微信

轉化的方式就是Random Walk ,經過這種方式將圖結構表示爲一個個序列,而後咱們就能夠把這些序列當成一個個句子,每一個序列中的結點就是句子中的單詞。網絡

簡單的說,DeepWalk = RandomWalk + SikpGram, 下面咱們來具體介紹下兩種技術。app

Random Walk

隨機遊走,顧名思義,就是從輸入圖中的任意一個結點 開始,隨機選取與其鄰接的下一個結點,直至達到給定長度 , 生成的序列 。在論文中,對於每個頂點 , 都會隨機遊走出   條序列。dom

採用隨機遊走有兩個好處:編輯器

  • 「利於並行化」:隨機遊走能夠同時從不一樣的頂點開始採樣,加快整個大圖的處理速度;
  • 「較強適應性」:能夠適應網絡局部的變化;

Skip Gram

word2vec的skip-gram相信你們都很是熟悉了,這裏就再也不贅述,放一張圖。

DeepWalk

結合上面兩點, deepwalk其實就是首先利用random walk來表示圖結構,而後利用skip-gram模型來更新學習節點表示。算法流程以下所示:

算法有兩層循環,第一層循環採樣 條路徑,第二層循環遍歷圖中的全部結點隨機採樣一條路徑並利用skip-gram模型進行參數更新。

其中第2步構建二叉樹的目的是爲了方便後續 SkipGram模型的層次softmax算法。

參數更新的流程以下:

一個小結

deepwalk能夠說給網絡學習方向打開了一個新思路,有不少優勢:

  • 支持數據稀疏場景
  • 支持大規模場景(並行化)

可是仍然存在許多不足:

  • 遊走是徹底隨機的,但實際上是不符合真實的社交網絡的;
  • 未考慮有向圖、帶權圖

本文參考資料

[1]

DeepWalk: Online Learning of Social Representations: https://arxiv.org/abs/1403.6652

- END -



Graph-Bert:沒有我Attention解決不了的 2020-08-17
ACL2020 | 何時值得用BERT上下文嵌入 2020-08-07
ICML2020研究趨勢 2020-07-27



記得把NewBeeNLP設爲星標哦




等你在看

本文分享自微信公衆號 - NewBeeNLP(NewBeeNLP)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索