YouTube 推薦系統淺析

主要參考
Deep Neural Networks for YouTube Recommendations

在這裏插入圖片描述
推薦系統的整體架構如上圖所示,主要由召回和排序兩階段組成,召回是從millions級別的video corpus中利用user history and context等特徵粗篩出hundreds級別的候選集,召回是有多個通道,可以使用不同的模型並行進行,排序是利用user history and context和video features等更多的特徵對從召回產生的候選集中的樣本打分並排序,選出分數最高的dozens級別的item推送給用戶,可以說是更精細的篩選。在兩個階段,都可以使用DNN模型代替以前的factorization methods,以提取特徵間的非線性關係,更充分地利用特徵。現對兩個階段所使用的DNN模型描述如下:
召回,Deep candidate generation model:
在這裏插入圖片描述
上圖是youtube用於視頻推薦的推薦系統的召回階段的模型結構,據此進行說明。召回階段可以轉化爲一個多分類問題進行訓練。DNN的輸入層涉及特徵選擇的問題,特徵可以分爲離散特徵和連續特徵,在DNN的架構中,離散特徵和連續特徵是可以很容易地拼接在一起的。雖然DNN聲稱是可以進行end to end的,但必要的特徵工程還是非常需要的,在youtube這個案例中,離散特徵有用戶曾經觀看過的視頻ID,用戶曾經搜索過的關鍵詞,人口統計學方面的特徵等,連續特徵有example age等,其中example age有擬合樣本的流行度的效果,是個magic特徵。因爲DNN模型的輸入層的輸入樣本的維度是固定的,所以需要使用embedding技術,其可以將離散特徵映射到一個固定的維度,配合average等操作,便可以貼合DNN輸入層的尺寸。對連續特徵可以進行必要的normalization操作。
對隱藏層,就youtube這個案例而言,經過實驗驗證,其採用2048ReLU -> 1024ReLU -> 512ReLU -> 256ReLU這個架構是最優的。
對輸出層,上面已經談到,召回可以轉化爲一個多分類問題,這是對training而言,對serving而言,DNN最後會輸出一個user vector u,利用這個vector,使用最近鄰搜索,就可以到數據庫中獲得與user vector u相似度最高的相應的一批video vector v作爲候選集傳送給排序階段,所以這裏重點闡述一下training。在training階段,是個多分類問題,輸出層是個softmax層,使用用戶實際觀看的樣本作爲正樣本,選取樣本的時候要考慮asymmetric co-watch,另外隨機從用戶沒有觀看過的視頻中抽取幾個樣本作爲負樣本,以交叉熵損失函數作爲目標函數進行訓練即可。
排序, Deep ranking network:
在這裏插入圖片描述
上圖是youtube用於視頻推薦的推薦系統的排序階段的模型結構,據此進行說明。可以看到,比起召回階段,排序階段用到了更多的特徵,有當前要計算的video的embedding,用戶觀看過的最後N個視頻embedding的average,用戶語言的embedding和當前視頻語言的embedding,自上次觀看同channel視頻的時間,該視頻已經被曝光給該用戶的次數等,注意對於相同域的特徵可以共享embedding,可以加速迭代,降低內存開銷,但總的來說所有的特徵仍可以分爲離散特徵和連續特徵,對這些特徵進行必要的embedding或normalization後拼接,作爲DNN模型的輸入層。
對於隱藏層,就youtube這個案例而言,經過實驗驗證,其採用1024ReLU -> 512ReLU -> 256ReLU 這個架構是最優的。
對於輸出層,在training階段,由於CTR指標對於視頻搜索具有一定的欺騙性,所以這裏採用期望觀看時間作爲評估指標,觀看時長不是隻有0,1兩種標籤,所以這裏採用了Weighted Logistic Regression來模擬這個輸出,具體來說,在劃分樣本空間時,正樣本爲有點擊視頻,權重爲觀看時長;負樣本爲無點擊視頻,權重統一採用1,使用交叉熵損失函數進行訓練,完成後,在serving階段,最後DNN網絡將輸出在這裏插入圖片描述,其即爲odd,可以近似認爲是期望的觀看時長,以此做爲每個視頻的分數,並據此排序。

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