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

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

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


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

  1. Scale: 用戶基數多、數據量龐大;導致很多在小數據上表現好的算法在YouTube推薦場景下失效。
  2. Freshness:YouTube視頻更新快,系統需要平衡新老內容,解決冷啟動的問題。
  3. noise: 用戶行為數據稀疏且只有隱反饋,有很多噪音數據。

系統架構

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

推薦系統的架構基本都是大同小異,無非是召回和排序兩大部分,YouTube也不例外。第一層Candidate Generation就是召回模塊,完成候選視頻快速篩選,候選視頻的量級從百萬到百。第二層Ranking指完成召回後的幾百量級候選視頻的精排序。召回模型相對簡單,特徵較少,主要保證時效性,對個性化的要求較低,排序則是使用更多特徵,模型較為複雜,對個性化要求高。

召回模型

模型架構

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

特徵集

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

  1. 用戶觀看的視頻embedding
  2. 用戶搜索的關鍵詞embedding
  3. 用戶基本信息,比如年齡、性別、地理位置等
  4. 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還將視頻年齡作為特徵加入訓練。

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

  1. 加入這一特徵的原因和處理手法,和推薦系統中常見的position-bias思路是一樣的。上傳越早的視頻,更有機會成為受歡迎視頻。我們在收集訓練樣本時,就已經加入這個bias了。在訓練時,將這一信息考慮在內,否則由於時間偏移容易導致 “過擬合”。
  2. 在線上召回時,將所有候選視頻的年齡都設置成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了,


分享到:


相關文章: