咳,仍是要說說這篇文章,雖然講它的人已經不少了。畢竟做爲深度學習模型大規模應用於工業界推薦系統的標誌,這篇文章是繞不過去的。原文來自Deep Neural Networks for YouTube Recommendations,是YouTube2016年發表於Recosys的文章。算法
這篇文章的結構依然很經典:由deep candidate generation model(召回階段)和deep ranking model(排序階段)組成。網絡
YouTube的推薦系統的主要挑戰有三:ide
YouTube的模型在Google Brain上訓練,它的開源版本即爲tensorflow。他們的模型有十億量級的參數數目,並在千億級別的數據量上訓練。 系統的結構圖以下:函數
在召回階段,YouTube要從海量數據集中選出數百個召回結果。在使用神經網絡以前,YouTube使用的是MF算法。在使用深度學習算法時,YouTube把找回階段建模爲一個分類模型,其目標是根據上下文,用戶
,從集合
中找到時刻
最可能被觀看的視頻
:
post
其中表明user和context的embedding,
表明video的embedding。deep learning的任務是從用戶觀看的歷史數據和當前上下文中學習用戶的embedding
,並使用softmax選擇最有可能被觀看的video。模型使用implicit feedback進行訓練,用戶觀看完視頻做爲正樣本。學習
在實際進行服務時,YouTube並不追求完整的softmax過程,而是使用最近鄰算法來選擇最有可能的N個結果。網站
具體來講,召回階段的模型的結構以下:設計
排序模型的結構和召回模型的結構很像,比較特殊的是它採用的目標函數是watch_minutes_per_impression的函數,而不是ctr的函數。這主要是爲了不click-bait問題。click-bait在中國的語境中應該是標題黨,即刻意用標題吸引人而內容乏味的video吸引用戶的注意力,致使用戶點擊以後很快退出。3d
特徵工程的部分我就不在這裏講了,有興趣的讀者能夠去看原文,咱們主要說一下loss function的問題。 模型的目標是預測impression致使的觀看時長,無論這個impression是正例仍是負例。正例的原始標籤爲用戶觀看視頻的時長,文章設計了一個加權邏輯迴歸函數來解決這個問題。本質上,他們仍是以邏輯迴歸的方法訓練模型,可是給全部負樣例賦以單位權重,給全部正樣例賦以一個觀看時間權重。所以,cdn
整個ranking模型的結構以下:
咳,這算是本文中最難理解的一部分了,我說我本身的理解,但不必定對,歡迎批評指正:
文章採用watch_minutes_per_impression做爲預測目標,但這個目標很難被直接預測,因此做者對模型作了一些修改: