随机生成元素升序向量_推荐系统中用户向量的表示学习
隨著深度學習在推薦系統中的應用,embedding成為繞不開的話題。無論是召回還是排序階段,均應用到embedding技術。目前已經有很多文章在討論item的embedding如何生成,本文希望討論user embedding生成的幾種方法,歡迎大家補充和討論。
Item2Vec+Pooling
在word2vec提出后,給向量化學習提供了很好的思路。微軟于2016年提出item2vec[1],本質是skip gram+negative sampling的方式學習item的向量表達。生成item vector之后,可以根據用戶歷史上與item的交互行為,求avg/max/ pooling獲取用戶的向量表達。這是最直接的user vector生成方式,但是在實際使用中往往效果一般。主要原因是泛化能力差,對user embedding的學習是無監督的。
除此之外,在如何生成item vector的問題上,item2Vec也給出明確的方法。word2vec對于順序是有強依賴的。但是對于大部分推薦場景,用戶的購買(點擊)序列沒有強順序關系,因此我們在構造樣本時需要根據場景做一些變化,如:1)需要將滑動窗口設置成最長的長度。保證同一個item的用戶,均處在同一個context下。2)通過多次shuffle原始序列構建不同的序列。
Doc2Vec
doc2vec其實是word2vec的一種擴展方法,當我們通過user與item的交互歷史構建出訓練的序列時,可以將user作為global context加入到訓練中,學出user和item的向量。該模型的優勢在于,user和item在一個向量空間內。構建線上服務時,能夠通過ANN庫快速做user2item的匹配,直接通過user embedding召回item。
Factorization Machine
FM是推薦系統中常用的算法,因為推薦系統的特征空間通常是稀疏的,FM擅長處理稀疏特征,通過豐富的特征交叉提高模型的效果,可以認為FM也是一個淺層的神經網絡。FM類模型求解出的隱向量可以作為該ID對應的特征向量,但是每一個feature group的ID擁有單獨的特征空間。所以該特征向量可以用于feature group內部各ID的相似性比較,如衡量用戶相似度(user-cf)物品相似度(item-cf),但是無法直接通過user embedding找到item embedding的近鄰。接下來介紹幾種DNN的方式構建user embedding。
Youtube DNN
Youtube DNN作為深度學習+推薦系統在業界的范文,在王喆的機器學習筆記中,https://zhuanlan.zhihu.com/p/52169807有很多實際工程問題的討論。在召回DNN中,引入豐富的用戶側特征(包括用戶的觀看和搜索歷史),從而學習到的模型更加全面,泛化能力強。模型的最后一層全連接的輸出作為user embedding表達,item embedding則使用softmax+negative sampling有監督訓練該DNN時,生成的softmax權重向量來表示。因此user embedding和item-embedding也處于同一個特征空間,線上serving時,可以采用ANN的方式查找最近鄰。
DSSM
DSSM及微軟后續推出的multi-view DSSM也代表了一種思路。這種多塔的結構,可以為user,item構造不同的塔,通過n層全連接之后,將最后一層輸出層的向量拼接在一起做softmax,或者直接通過cosine衡量兩者的相似性。訓練完成后,模型全連接層的輸出向量可以作為user,item的embedding表達,而且向量處在同一個向量空間,可以在線進行ANN查找,有效提高線上serving的性能。
Graph embedding
user和item之間的關系可以構建成一張圖,對于用戶點擊行為建了一個圖G(u,e),除此之外,其他行為(如:item之間屬性相關等均可以生成一條邊)。圖生成之后,就可以使用DeepWalk,Node2Vec,LINE,GCN等算法進行訓練。以DeepWalk為例,在建好的圖中隨機游走,生成節點序列,根據不同的使用場景,可以采用不同的隨機游走方式,已實現適合當前場景的策略。生成隨機游走序列后使用skipgram進行訓練產出向量。Graph Embedding是一個很大的話題,KDD2017 tutorial有關于Graph Embedding的專場分享,大家可以下載相關的slides學習。阿里也根據自己的使用場景在提出了一些改進方法,整體的思路是在圖中加入更加豐富的特征,構建DNN網絡來訓練,詳細內容會放在后續的文章中仔細討論。
[1] Barkan O, Koenigstein N. Item2vec: neural item embedding for collaborative filtering[C]//2016 IEEE 26th International Workshop on Machine Learning for Signal Processing (MLSP). IEEE, 2016: 1-6.
[2] Covington P, Adams J, Sargin E. Deep neural networks for youtube recommendations[C]//Proceedings of the 10th ACM conference on recommender systems. ACM, 2016: 191-198.
[3] Perozzi B, Al-Rfou R, Skiena S. Deepwalk: Online learning of social representations[C]//Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014: 701-710.
[4] Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. arXiv preprint arXiv:1609.02907, 2016.
歡迎大家關注我的公眾號,一起討論實用的推薦系統技術。
該文章也在如下問題中回復。
推薦系統中如何做 User Embedding??www.zhihu.com總結
以上是生活随笔為你收集整理的随机生成元素升序向量_推荐系统中用户向量的表示学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php的类图怎么生成_PHP设计模式之简
- 下一篇: proxy跨域不生效_vue前后端端口号