以推薦為例,item的embedding可以通過CTR之類的label顯式地學習到。而graph embedding需要先構建圖再應用不同的演算法來學習embedding。不同方式下學到的embedding會有什麼明顯的差別嗎?


一點自己的看法,主要是從圖的角度來理解推薦的.

推薦裡面的User-Item預測實際可以理解為一個User-Item二部圖上的鏈路預測.

那麼,圖上的鏈路預測和推薦里的鏈路預測有什麼區別呢?

Graph Embedding

,這裡主要指DeepWalk/SDNE等無監督的方法(不包括現在的GCN/GAT),因為沒有標籤,因此旨在從圖本身出發,保持圖本身的結構和性質.比如什麼一階相似性,二階相似性,非對稱性,社區結構之類的.

比如下圖的5,6之間沒有直接相連的邊,也就是說它們不是一階鄰居. 但是,5,6通過1,2,3,4相連,也就是說5,6是二階鄰居.

Graph Embedding通常的evaluation也不只是做鏈路預測,還有一些節點聚類,節點分類,可視化的任務. 比如下圖是節點可視化的結果

沒有特定的任務loss,導致節點的Embedding可能不會再某個任務(如推薦)上特彆強,但是有較好的泛化能力. 因此,Graph Embedding的結果可以作為召回及推薦里User/Item的預訓練結果.

推薦里的Embedding

很直接,就是優化CTR,通常不會過多的考慮圖本身的結構性質,關注loss的下降.這樣學出來的Embedding普適性可能差一些.

在了解的論文里,也有對推薦DNN里所學習到的User/Item的Embedding進行可視化的,有些時候並不好,但也有論文可視化的結果也還不錯的.比如下面這篇

那麼,有沒有一個方法,既可以利用CTR的label信息,有保持圖本身的結構/性質呢?

這時候就要請出我們的圖神經網路GNN了.

圖神經網路是一種聚合節點鄰居信息並利用DNN來更新節點表示的模型. 它可以保持圖本身的結構和性質.

基於圖神經網路的推薦: 一個圖神經網路學習User的表示,一個圖神經網路學習Item的表示,最後內積預測就完事.

參考文獻:

  1. Aspect-Level Deep Collaborative Filtering via Heterogeneous Information Networks
  2. LINE: Large-scale Information Network Embedding
  3. 19SIGIR NGCF Neural Graph Collaborative Filtering

更多關於圖神經網路/圖表示學習/推薦系統, 歡迎關注我的公眾號 【圖與推薦】

http://weixin.qq.com/r/kTspMe7EE7NsrapS926D (二維碼自動識別)


恰巧兩個都做過,提供一個思路。

DNN學到的向量我默認是看作端到端的意思吧,是針對最後的label進行學習的,實際上學到的embedding比較偏向於度量實體跟最後的label的關係,以我做的銷量預測的例子來看,這種度量並沒有太多考慮鄰居的共現信息之類的,所以得到的實體embedding在其他領域的泛化性能非常差,一旦實體embedding跟最後的label關係不太顯著,最後向量表徵的意義其實並不大。

而構建圖的方式通常是放在預訓練的階段,構造圖然後節點學習鄰居節點的共現關係,能構造圖說明是有強連通性的,節點間的共現特徵比較顯著,應用於某些場景是引入了新的信息,或者說通過手工構造二部圖或者異構圖來學習節點間的共現關係,相當於一種新的特徵工程(最後的結果作為新的特徵),然後引入到其他模型,效果當然比少了這些特徵的模型要好一些。


Graph Embedding可以同時將Item自身信息和關係信息考慮進去。不是很清楚你所說的基於DNN的是哪種方法,我都列舉一下吧:

  • 如果你說的,就是單純Item屬性編碼,那麼你的DNN就只考慮了Item自身信息,沒有考慮關係信息。
  • 如果你把Item的點擊信息,用BOW做成特徵向量(維度=用戶數量,用0和1表示用戶是否點擊),再和自身特徵拼接成一個既包含自身屬性又包含關係信息的特徵向量,那麼這時候你的DNN可以看成一個特別低配版本的GNN,它通過比較無腦的方法融合了上下文信息(BOW過全連接層等價於找點擊用戶的表示然後加權平均),然後還不能像GCN等來迭代地基於結構進行特徵融合(多層GCN)。而且當用戶數量過大時會導致輸入特徵過長(雖然可以用稀疏等辦法解決)。

一般訓練GNN時,我們不把結構信息寫在輸入向量里,而是直接使用Item的低維屬性向量。圖結構只被用來引導不同Item之間特徵的融合,實現起來很直觀,也很方便進行性能優化。

你可以自己把下面幾個GNN(GCN、GAT)中的各種GNN層換成全連接層,看一下性能降低的有多厲害就知道了:

https://github.com/CrawlScript/tf_geometric/tree/master/demo


個人只學習到了node2vec這樣的基於圖的遊走來學習embedding的方法。和DNN學到的對比看,GE學到的embedding泛化能力更強。

兩類方法最大的不同就是樣本的構建方法。DNN都是基於真實的用戶item序列直接加上信息就拿來訓練,而這種序列是有大量雜訊在裡面。而GE是基於圖這種複雜關係,根據itemPair的聯繫,虛擬的構造item序列,並且可以通過參數來調整相鄰item的關係。這種虛擬樣本,如果訓練集夠豐富,得到的訓練數據就更可信,並且在一定程度上是可控的。而且對於長尾item,也可以生成任意數量的訓練樣本,讓他充分訓練。


暫且默認你說的DNN是基於非圖的。

那普通的DNN模型就是given a user item pair&然後用一個複雜的non-linear function去capture他們之間的關係。這個其實跟傳統MF的思路差別不大。

Graph embedding把所有的user,item和& pairs看成是 圖上的nodes和edges. 存在interaction的&之間是直接相連的。

比起普通的DNN,圖上的節點之間的關係更直接,並且這樣的關係不僅僅是&,也可以是&,&這樣的關係(類似CF里的相似用戶,相似item)。這是普通DNN模型所挖掘不到的關係。

在圖上可以類似傳統MF那樣學習& pair。但是傳統的MF(這也包括普通的DNN),如果考慮成圖的形式的話,可以看成學習的是&直接相連的邊的關係。Graph embedding不同的是會考慮鄰居節點的關係。比方說2018年recsys有一篇short paper就是單純的把離user距離比較近的item(並不直接相連)當做traning data來進行訓練。再比如說最近比較流行的GCN就是直接把node的neighbor的embedding vector聚集起來當做這個node的信息,然後通過多次自乘Laplacian matrix去考慮更高階的鄰居(離target node距離更遠)。這樣的方式去學習& pair的時候同時會把鄰居的信息也一併給考慮進去。

結論就是,普通DNN的embedding vector 只學習到了用戶直接有交互的items的關係。Grpah embedding的embedding vector學習到的是這個node在圖上的位置,這個位置不僅僅是通過用戶直接有交互的items的關係來確定的,也會包括其他的跟用戶沒有直接交互的節點信息。所以在圖上考慮的時候給模型喂進去的信息比傳統DNN要豐富。


graph embed根據構邊邏輯可以學到相應的協同關係;dnn embed如果是最底層,上面還有各種交叉,很難說物理含義,更多是end2end的中間結果。

手機打字太費勁先這樣吧


我假設你這裡說的CTR類的方法應該是說類似YouTube里(《Deep Neural Networks for YouTube Recommendations》)說的這種方法。

其主要原理是融合用戶信息和當時用戶行為的item信息,預估下一個用戶可能點擊的item。用戶向量通過一個DNN網路獲得,最後item向量是softmax層的參數。這種方法可以看作是Graph Embedding方法的一個子集。其對用戶行為的商品進行聚合其實就是對其當時用戶行為子圖的一階鄰居進行融合。用戶行為的item就是用戶的一階鄰居。

而在Graph Embedding里,

聚合的鄰居可以擴展到二階甚至更高階(類似GCN, GraphSAGE),也就是聚合到沒有直接交互的節點信息,這種比較適合行為稀疏的場景,使用更多的關聯信息來增強泛化性。而且在行為稀疏的場景里也可以根據構建好的圖生成大量訓練數據來充分訓練模型。另外圖表徵學習還可以學習到圖上節點的高階共現關係。

最後,其他答主的回答也很受用。


訓練的目的都不一樣。


普通dnn的embedding之間沒有偏序關係,graph embedding的emb之間的距離能夠構建偏序關係。


推薦閱讀:
相关文章