Graph Embedding方案之DeepWalk

​對於算法不太瞭解的同學,這是一個看上去很沒吸引力的標題,預計點擊量超不過200。最近非常迷戀一句話“萬物皆可Embedding”,講的是世間所有的事物都能通過某種方法被向量表示,一旦事物被向量表示了就可以通過乘法去做進一步邏輯處理。比如商品A被表示爲向量m,商品B被表示爲向量n,則m*n的結果就是A和B的相似關係。把事物Embedding的方法有很多,今天就來介紹DeepWalk,一種把圖關係向量化的方法。

DeepWalk有什麼用呢?在推薦、文本分類等領域都有很多場景。比如用戶觀看視頻這件事,所有用戶的視頻觀看順序組合到一起會構成一種圖關係,每個節點是視頻,邊是觀看次數。當有一個客戶先後看了A->B->C三個視頻,那麼下個視頻會看什麼呢,就可以用DeepWalk將所有視頻向量化,然後所有視頻的向量分別與C視頻的向量相乘,分數最高的就可以作爲下一個推薦視頻。

下面這張圖直觀展示了DeepWalk處理數據的過程:

具體DeepWalk做事物Embedding可以分兩步,第一步是Random Walk,第二步是Word2Vector。爲了大家更好的理解,我們先從Word2Vector開始講。

Word2Vector

 

有的同學會奇怪,做Graph Embedding跟Word2Vector有什麼關係,Word2Vector不是一個文本向量化的方法麼?圖像量化其實可以巧妙的轉化成文本向量化。Word2Vector有一種模式叫做Skip-Gram,就是給定一個文章中的某個詞,預測這個詞的上下文,如下圖展示:

比如我們輸入一個文本“傲海是北京朝陽地區第一帥哥”,“朝陽”的上一個詞是“北京”,下一個詞是“地區”。當這種訓練樣本很多的時候,比如我們找到大量含“朝陽”的詞的語句進行訓練,就可以通過Skip-Gram得出“朝陽”這個詞的向量形式,這就是Skip-Gram這個算法的功能,這裏需要指定一個窗口的概念,就是訓練的時候取每個詞上下幾個詞作爲輸入。那麼這種上下文關係如何映射到圖向量化工作呢?我們接着看。

Random Walk

先來看看這個有向圖,我們可以從圖關係中找到幾個序列,比如A->B->E->C,這是一個有向關係鏈。這個關係跟上文提到的“傲海是北京朝陽地區第一帥哥”是有一定相似性的,我們把“北京”看成A ,“朝陽”看成B,“地區”看成E,這種圖的先後關係可以映射成文本的先後出現關係。Random Walk做的事就是設置一個窗口,然後順着圖關係去隨機找到類似於A->B->E這樣的先後關係。

比如我們設窗口爲2,那麼以B爲定點,可以找到如B->E、B->A這樣的前後關聯關係,這種關係放到Word2Vector裏就能生成每個定點的向量表示。

Ok~講的比較淺,希望大家可以理解哈,希望有幫助,謝謝

 

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