大规模推荐Deep Retrieval
(1)Why Deep Retrieval?
一個規模較大的推薦系統,需要解決的核心問題就是如何從百萬甚至億級別的候選集中快速找到最相關的top-k個候選。以前的解決方案都是兩步:
- 雙塔模型,最后做Dot
- 用Annoy Tree或者HNSW給候選集建索引,在線計算向量實時檢索top-k
之前方案存在的問題:
- 因為要分兩步,而兩步的目標是不一樣的。
- 雙塔限制了模型的表達能力
基于此,又出現了TDM等樹結構模型,但是把每個候選分配到唯一一個葉子節點是最好的方案嗎?所以end-to-end的Deep Retrieval(DR)就這樣誕生了。
(2)Deep Retrieval 長什么樣?
DR并沒用用樹結構,而是采用了一個矩陣結構(圖a所示),現在規定只能從左向右走,因此走D步就可以走完這個矩陣,一共有K的D次方種走法,每一種走走法,都代表一簇候選。所以一個候選,可能存在于多種走法,一種走法也會有多個候選。類比到電商,比如一種類別就對應一種走法,一種類別包含多個商品,一個商品可能也屬于多個類別,比如巧克力既可以是食品,也可以是情人節禮物。拿圖(a)來說,(1,2,1)和(2,1,2)兩條路徑分別表示情人節禮物和食品,里面都可以有巧克力。
那怎么從從user的特征,找到一天路徑,拉出候選商品呢。可以通過user特征,embeding后,user-embedding接softmax層確定先走到哪個節點,走第k步(k∈[1,D]),就可以用歷史走過的所有節點的embedding和user-embedding concat在一起,接softmax層判斷第k步走到應該走到哪個節點,最終得到的路徑就可以拉出很多candidate了。
Deep Retrieval的優勢:
- 訓練的時候item的露肩可以和神經網絡參數用EM算法一起學習
- Deep Retrieval是end-to-end的模型,容易部署
- 多對多的編碼方式使得DR能學到user和item更復雜的關系
(三) Deep Retrieval如何定義目標函數?
既然是概率,我們就可以定義類似logloss的目標函數,如下式:
融合上面兩個式子:
看到這里,大家肯定有疑問,不是一個商品對應多個路徑嗎,目標函數咋一點沒體現?下面才開始介紹多路徑的目標函數。
預估的時候,用Beam Search找到J條路徑,合并每條路徑召回的item即可。
(四)Deep Retrieval如何學習參數?
因為有目標函數有π的存在,所以目標函數不連續,也就不可以做梯度下降,因此論文提出EM算法解決這個問題,并用正則化降低過擬合。
再看下多路徑目標函數:
然后論文說上式有出現log(0)的風險,通過融合下面不等式,就可以避免這個情況:
最終,EM訓練算法總結如下,關于正則化就不細說了:
(五)Deep Retrieval為何如此優秀?
論文提到,Deep Retrieval能如此優秀,是因為目標函數包含了softmax層,因為一開始每個物品的路徑是隨機初始化的,增加了優化的困難,因為softmax的輸入是共享embeding的,使得模型一直在往正確的方向學習,最后還用了beam search,所以召回如此優秀。
http://weixin.qq.com/r/XSjP1zrEzGezrX60931P (二維碼自動識別)
總結
以上是生活随笔為你收集整理的大规模推荐Deep Retrieval的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兜兜转转一个圈,到底What is al
- 下一篇: 神经网络十大学习率衰减提效策略