論文筆記之Deep Neural Networks for YouTube Recommendations

Deep Neural Networks for YouTube Recommendations

文中把整個推薦過程分成兩個步驟:
?deep candidate generation model. 即召回部分
?deep ranking model. 即精排部分

文中指出YouTube推薦的三個主要挑戰(zhàn):
?Scale. YouTube推薦的數(shù)據(jù)規(guī)模大,一些適合處理小規(guī)模數(shù)據(jù)的推薦算法效果不好。
?Freshness. YouTube的語料庫(corpus)是動態(tài)的,每一秒都有大量的視頻被上傳。推薦系統(tǒng)需要能夠對新上傳的內容作出反應,并且能夠對用戶最近采取的行動作出反應。能夠在新內容與得到確認(well-established)的內容之間達到平衡,即探索與利用。
?Noise. 以用戶的歷史行為進行預測本身就有一定的困難,包括數(shù)據(jù)稀疏性以及一些不可觀測的外在因素。我們獲得的數(shù)據(jù)并不是關于用戶滿意度的ground truth, 而是內含了一定噪聲的數(shù)據(jù)。

SYSTEM OVERVIEW

推薦系統(tǒng)的總體結構如上所示。系統(tǒng)有兩部分的神經(jīng)網(wǎng)絡組成:candidate generation和ranking.
candidate generation network把用戶的歷史行為作為輸入,并從語料庫(corpus)中檢索出一個子集(hundreds)。candidate generation network通過協(xié)同過濾(CF)進行粗略的篩選。
ranking部分為每個物品分配一個score, 然后根據(jù)score進行排序,將高的推送給用戶。
在模型的構建過程中,使用一些離線指標(precision, recall, ranking liss, etc.)來引導模型更新的方向。然而,最終衡量算法或模型的效果,需要使用在線A/B測試。

CANDIDATE GENERATION

這一步的目標是把大量的corpus減少到hundreds規(guī)模的候選集,也就是召回過程。
模型結構如下。

需要注意的是,embedding的生成和模型參數(shù)是共同訓練的。通過一個average pooling將一組向量整合成一個向量,輸入到之后的模型部分中去。
人口統(tǒng)計學的特征也是非常重要的,能夠提供一個先驗,從而使得對于新用戶的推薦也是合理的。
geographic region以及device之類的特征,也做了embedding,整合到長向量中。簡單的binary特征和連續(xù)型特征,比如gender, logged-in state, age等可以直接輸入到網(wǎng)絡中,實數(shù)值的特征歸一化到[0,1]。
example age是一個很特殊的特征。
在YouTube上每一秒都有很多videos被上傳,對于這種最近被上傳物品的推薦是很重要的。機器學習系統(tǒng)通常表現(xiàn)出對歷史數(shù)據(jù)隱含的偏好,因為模型是從歷史數(shù)據(jù)中進行學習的。為了解決這一問題,在訓練階段引入example age這一特征,指的是the age of the training example。在預測階段,這個特征將會被設置為0(或者很小的負數(shù))。文中并沒有精確的定義example age,應該是把log日志距離當前的時間作為example age。比如24小時前的日志,example age就是24。
回到模型圖,最上面分為training和serving兩部分。在training階段,使用softmax預測用戶的next watch,輸出在所有候選video上的概率分布。label的選擇方式如下。

在serving階段,使用了nearest neighbor search的方法,這是因為最近鄰搜索計算量要小得多。最后一層relu輸出的向量即為user vector,而video vector文中并沒有具體描述,根據(jù)模型圖推斷,應該是最后一個relu和softmax層之間的權重矩陣output embedding matrix來獲得的(通常在word2vec中用input embedding matrix)。

RANKING

在ranking階段,對hundreds規(guī)模的候選集進行精排,確定要推薦給用戶的物品。文中使用一個deep neural network使用logistic regression來為每個video的曝光分配一個值(其實就是做CTR)。然后對物品按score進行排序,并返回給用戶。文中提到YouTube最終的ranking objective會基于線上A/B測試結果做一些調整,但總體上是一個關于每次曝光的期望觀看時長的簡單函數(shù)。并且指出如果完全根據(jù)CTR排序,會促進視頻欺詐,也就是用戶不會播放完整(原文用了clickbait一詞,類似于標題黨)。使用觀看時長,可以更好的捕獲用戶的參與度。

對連續(xù)型特征做歸一化,對離散型特征做embedding(如果不存在,文中提出用0向量代替)。
這里引入一個新的網(wǎng)絡來做ranking是為了引入更多的特征,因為現(xiàn)在候選集的規(guī)模相對比較小了。
圖中畫出了一些具體特征:
?impression video ID:當前考慮的video的ID,之后接一個embedding。
?watched video IDs:用戶觀看過的video的ID,因為是一組ID,做完embedding后還要做average pooling。
?user language:用戶的語言。
?video language:video的語言。
?time since last watch:距離上次觀看的時間。
?# previous impressions:該視頻已經(jīng)曝光給該用戶的次數(shù)。
一個特征輸入x, x ^ 2, 根號x是為了給模型提供更多的表達力。
模型的目標是給定訓練集(包括positive樣本和negative樣本,即video曝光后是否被點擊)來預測期望的觀看時間。正例表示用戶觀看該video的時間。這里使用了weighted logistic regression,損失函數(shù)用交叉熵。對于正例,會通過觀看時間來進行加權;對于負例,使用單位權重。
在serving階段,使用指數(shù)函數(shù)作為激活函數(shù)來預測期望的觀看時間。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容