推薦系統之YouTube深度學習經典論文解讀

推薦系統之YouTube深度學習經典論文解讀

今天給大家帶來的是2016年YouTube發表的基於Deep learning做影片推薦的論文,站在今天來看,這篇paper在演算法架構上並沒有什麼特別的地方,但是從工程和影片場景理解上的的確確是一篇經典之作,下面一起重溫經典。

這篇論文提出的背景主要有三點,也就是當時YouTube影片推薦面臨的問題:

Scale: 使用者基數多、資料量龐大;導致很多在小資料上表現好的演算法在YouTube推薦場景下失效。

Freshness:YouTube影片更新快,系統需要平衡新老內容,解決冷啟動的問題。

noise: 使用者行為資料稀疏且只有隱反饋,有很多噪音資料。

系統架構

推薦系統之YouTube深度學習經典論文解讀

推薦系統的架構基本都是大同小異,無非是召回和排序兩大部分,YouTube也不例外。第一層

Candidate Generation

就是召回模組,完成候選影片快速篩選,候選影片的量級從百萬到百。第二層

Ranking指

完成召回後的幾百量級候選影片的精排序。召回模型相對簡單,特徵較少,主要保證時效性,對個性化的要求較低,排序則是使用更多特徵,模型較為複雜,對個性化要求高。

召回模型

模型架構

推薦系統之YouTube深度學習經典論文解讀

特徵集

召回部分的特徵集主要由三部分組成:

使用者觀看的影片embedding

使用者搜尋的關鍵詞embedding

使用者基本資訊,比如年齡、性別、地理位置等

example age

watch embedding

熟悉word2vec,這一塊應該很容易理解,就是對使用者觀看過的影片做embedding,最後做一個average得到影片embedding。

search embedding

使用者歷史搜尋的關鍵詞embedding最後average得到token embedding。

上面其實和文字分類中由word embedding到doc embedding是一樣的,直接將歷史觀看影片的embedding做加法平均還是比較暴力的,對比阿里DIN論文,這一塊其實是可以最佳化的。目前的推薦架構中一般是直接onehot輸入經過一個embedding layer,直接參與網路訓練的,我估計YouTube應該是考慮召回的效率沒有采用這種方式(

有不同意見的,歡迎評論區留言。

使用者畫像特徵

如地理位置,裝置,性別,年齡,登入狀態等連續或離散特徵都被歸一化為[0,1], 和watch vector以及search vector做concat

影片年齡

除了以上這些歷史向量、人員基本資訊的特徵以外,Youtube還將影片年齡作為特徵加入訓練。

影片年齡=(訓練視窗內的最近觀看時間)-該影片的上傳時間

加入這一特徵的原因和處理手法,和推薦系統中常見的

position-bias

思路是一樣的。上傳越早的影片,更有機會成為受歡迎影片。我們在收集訓練樣本時,就已經加入這個bias了。在訓練時,將這一資訊考慮在內,否則由於時間偏移容易導致 “過擬合”。

在線上召回時,將所有候選影片的年齡都設定成0,對新老影片一視同仁,有利於召回那些

雖然上傳時間短,但是影片內容與使用者更加匹配的新影片

。對於完成

推新

的要求,這是一個非常好的辦法。

該特徵表示影片被上傳之後的時間。我們知道,每一秒中,YouTube都有大量影片被上傳,推薦這些最新影片對於YouTube來說是極其重要的。作者持續的觀察到,使用者更傾向於推薦那些儘管相關度不高但是是最新(fresh)的影片。推薦系統往往是利用使用者過去的行為來預測未來,那麼對於歷史行為,推薦系統通常是能夠學習到一種隱式的基準的。但是對於影片的流行度分佈,往往是高度不穩定的。作者寫道,在之前的處理上,訓練所選擇的時間視窗,是採用最近幾周的使用者平均觀看似然率來進行推薦的。那麼考慮到example age的現象,我們的推薦策略將example age作為一個特徵拼接到DNN的輸入向量。訓練時,時間視窗越靠後,該值越接近於0或者為一個小負數。加入了example age特徵後,模型效果和觀測到的實際資料更加逼近,參見下圖:

推薦系統之YouTube深度學習經典論文解讀

樣本和上下文選擇

1、收集一些非推薦的影片觀看。訓練資料中收集所有的youtube觀看影片(或者一些站外觀看)而不是僅僅是推薦的結果是非常重要的。這樣不但可以防止使用者興趣學習有偏(推薦系統給什麼,看什麼),而且可以試探到很多使用者的興趣。

2、固定每個使用者訓練樣本量。這樣做的好處是平等對待每個使用者的損失影響,避免損失來自小部分活躍使用者。

3、不對稱的共同瀏覽(asymmetric co-watch)問題。使用者在瀏覽影片往往是序列式的,具有先後關係。下圖所示圖(a)是hled-out方式,利用上下文資訊預估中間的一個影片;相當於對使用者未來看到的內容進行了資訊洩漏。圖(b)是predicting next watch的方式,是利用上文資訊,預估下一次瀏覽的影片。這和我們實際閱讀順序是一致的。文中也提到圖(b)的方式在線上A/B test中表現更佳。而實際上,傳統的協同過濾類的演算法,都是隱含的採用圖(a)的held-out方式,忽略了不對稱的瀏覽模式。

特徵集以及深度的實驗

新增特徵以及DNN深度可以顯著提升預測效果,但並非一直如此。第0層的輸入向量全連線到softmax輸出層,第0層以及輸出層都是採用固定的256維度。中間的深度網路採用的是類似tower的結構。深度增加時,預測效果如下圖:

推薦系統之YouTube深度學習經典論文解讀

由上圖可以看到,DNN深度到三層預測效果基本就穩定了。

離線訓練模組

得到特徵集之後直接concatenate餵給三層DNN(啟用函式為

relu

),最後透過softmax輸出機率, 這一階段的目標是從資源庫中找出幾百個最相關的資源,推薦系統以往的做法是採用矩陣分解技術計算相關度,作者提到他們早期也使用過淺層神經網路對使用者歷史瀏覽的embedded進行訓練,該演算法可以視作是非線性的矩陣分解技術。作者將推薦任務轉化為一個超級多分類問題,也即在時刻t,使用者U在場景C的觀看Wt為從影片庫V預測為影片i的類別,其中每一個影片i可以視作為一個類別,其分類模型如下式所示:

推薦系統之YouTube深度學習經典論文解讀

其中u是使用者和場景資訊的高維embedding, vj表示候選影片的embedding。Embedding可以簡單的理解為將一個稀疏實體(user,vedio)到RN空間內的密集向量的對映。DNN的任務是基於使用者的歷史及場景,學習一個使用者向量u的對映函式(embedding),透過一個softmax分類器,u能夠有效的從影片語料庫中識別影片的類別(也就是推薦的結果)。softmax層的輸出是預測的影片分類結果。也就是上面公式使用者觀看影片j的機率。要注意,影片向量的embedding是透過類似word2vec的方式生成的,我們能拿到影片j的id,就能得到vj的向量。

線上serving模組

線上服務有嚴格的效能要求,必須在幾十毫秒內返回結果。DNN輸出使用者向量u,u與影片庫中的影片向量做內積並排序,得到TopN。該過程耗費時間巨大,作者採用了一種hashing演算法進行加速。

排序模型

排序階段影片候選只有幾百量級,因此排序模型會引入更多特徵進行精細的打分排序。排序階段採用和召回階段類似的網路結構,用logistics regresion對影片進行打分。不同的是,排序階段採用

觀看時長

作為學習目標而非點選率(想一想這是為什麼?)

模型架構

推薦系統之YouTube深度學習經典論文解讀

特徵集

從模型架構來說,Ranking和召回類似,具體的特徵如下:

(1)

impression video ID embedding

: 當前要計算的影片embedding

(2)

watched video IDs average embedding

: 使用者觀看過的最後N個影片embedding的average pooling

(3)

language embedding

: 使用者搜尋關鍵詞的embedding和當前影片語言的embedding

(4)

time since last watch

: 自上次觀看同channel影片的時間

(5)

#previous impressions

: 該影片已經被曝光給該使用者的次數

特徵中需要注意的點是:

1、同空間特徵共享Embedding(video embedding、language embdding)

這麼做主要還是減少記憶體佔用,減少網路引數,加速訓練。在vido embedding中直接截斷低頻video,目的應該還是節約記憶體,另外低頻偶然性比較大,截斷可以減低noise資料干擾。

2、連續特徵歸一化

神經網路模型對輸入規模和分佈非常敏感。文中採用累計積分的方式,將連續特徵歸一化到0到1之間,並且新增sqrt(x)等引入非線性。

3、歷史互動的特徵

上面特徵集中的(4)、(5)都是表示使用者與影片之間的歷史互動,引入使用者行為提高推薦準確性。

目標函式

以點選率作為目標,受標題,影片封面圖等影響比較大,不能夠完全表達使用者喜好,而觀看時長能夠真實地捕獲使用者的興趣,更重要的是觀看時長更符合商業價值,因此youtube的預測期目標是觀看時長。具體如何操作?訓練集中包含正樣本和負樣本,正樣本是使用者點選並且觀看的影片,負樣本是曝光之後沒有點選的影片。訓練時採用Weighted logistics,並且對正負樣本設定不同的權重,負樣本設定單位權重,正樣本用觀看時長作為權重,在serving時,用指數函式作為啟用函式計算期望觀看時長。

為什麼在train時使用Weighted logistics,在serving時使用指數損失衡量呢?

在邏輯迴歸中odds是一個非常重要的概念:

推薦系統之YouTube深度學習經典論文解讀

推薦系統之YouTube深度學習經典論文解讀

推薦系統之YouTube深度學習經典論文解讀

對於Weighted logistics,相當於對正樣本進行過取樣,odds就是下面形式:

推薦系統之YouTube深度學習經典論文解讀

在影片場景中p一般很小,所以上面結果剛好是影片播放時長的期望。

推薦系統之YouTube深度學習經典論文解讀

這樣預測的正是影片的期望觀看時長,預測的目標跟建模的期望保持一致,這是這篇paper型很巧妙的地方。

寫在最後

這篇paper開啟了工業界利用DNN做推薦系統上的先河。如何結合業務實際和使用者場景,選擇等價問題上為很多公司提供指導。工程性極強,幾乎是近幾年最經典的paper了,