「乾貨」YouTube 基於深度神經網絡推薦系統剖析

YouTube轉用深度學習做推薦系統,也許有跟風的意味,希望跟隨谷歌“using deep learning as a general-purpose solution for nearly alllearning problems”也就是將深度學習作為機器學習問題的通用解決方案。所幸這樣的方法是成功的,帶來了推薦系統的“Dramatic Improvement”。

YouTube推薦系統的三大難點:

· 一是規模太大,簡單的推薦算法在如此大規模數據量上可能是失效的;

· 二是實效性,即新數據不斷產生,需要將其良好的呈現給用戶,以平衡舊有的好內容以及新內容;

· 三是噪音問題,用戶行為與視頻描述均有噪音,並且只能獲得充滿噪音的用戶隱含反饋,而不能直接獲取用戶滿意度。

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖1.YouTube基於深度學習推薦系統架構圖

本文呈現的推薦系統解決方案分為兩個部分:

· 一個是備選生成(Candidate Generation),其目標是初選結果,從海量數據中選擇出符合其個人需求偏好的百級別數據;

· 一個則是排序(Ranking),通過更加豐富的用戶,視頻乃至場景信息,對結果進行精細化排序,得到呈現給用戶的備選。

備選生成階段,將推薦系統定義為一個多分類器,其職責是確定某個用戶,在某個場景與時間下,將從系統的視頻中選擇消費哪一個視頻。具體的方法是,將用戶與視頻全部轉化為Embedding描述,即一個向量,最終用戶消費某個視頻的概率通過如下方式計算得到:

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

而構建用戶與視頻的Embedding,則是通過訓練而來。將用戶觀看視頻/搜索記錄/其它信息如年齡性別等作為輸入特徵,部分稀疏特徵首先進行Embedding化,中間為數層ReLU,最終一層用SoftMax進行分類。換句話講,是將用戶與場景信息作為輸入,預估用戶下一個要看的視頻,也就是將用戶分到具體某一個視頻作為其類別。用戶與視頻的Eembedding,則是神經網絡最後一層的對應矩陣。這種方法除了能利用用戶行為信息外,其它信息例如設備,地理位置,性別等也可以作為輸入,這是神經網絡相對於普通MF類算法的優勢之一。

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖2.YouTube推薦備選生成階段架構

備選生成的下一個階段是排序。其網絡結構跟備選生成階段類似,將所有排序模型中的信息輸入後,進入多層ReLU,最終進行優化的是一個加權邏輯迴歸損失函數,觀看時間作為陽性樣本權重。在這一層,也可以看到其推薦“代理問題”的轉化:由點擊行為預估轉為了以觀看時長為權重的點擊行為預估,這樣更佳貼近Youtube的產品優化方向。與備選生成階段另一個不同在於,排序模塊需要考量的特徵要多得多:

· “場景”類特徵,例如用戶可能在某個地方某個時間願意觀看某一條視頻,但是在別的地方別的時間則不會;

· 曝光信息:用戶觀看了某界面,但是並未在其上進行操作,那麼隨之應進行已呈現內容降級;

· 備選生成層輸出:排序需要將各種備選結果聯合起來;

· 更豐富的用戶信息:例如用戶最近的一次搜索詞,用戶最近觀看的同一個主題下的視頻數量,用戶上一次觀看同主題視頻的時間,用戶所使用的語言等;

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖3.YouTube推薦排序階段架構

除了整體設計與系統架構以外,本篇論文中陳述了很多“選擇”,這些選擇更多的是“藝術”而不完全屬於技術範疇。這些選擇往往是很多技術人員關注不多的點,但在筆者看來,這些都蘊含著YouTube技術與產品人員深入的思考與判斷。

“Example Age” 特徵

對於YouTube產品層來講,鼓勵內容產生毫無疑問是至關重要的,所以推薦系統也希望對用戶上傳的新內容的有所偏好。然而幸運的是,即使損失一部分相關性,視頻的消費者也偏好新內容。也就是說,新內容的價值可以良好的通過其帶來的吸引力呈現出來,並不需要平臺刻意而為之。

由於系統使用一個時間窗口的訓練樣本進行訓練,如果沒有視頻的上傳時間信息,那麼模型會認為這個時間窗口內用戶對視頻的偏好是穩定的,然而事實遠非如此。將視頻的上傳時間加入到特徵集合後,預估更加準確,尤其是視頻剛上傳階段的強烈便好被成功捕捉到。

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖4.無時間特徵預估/有時間特徵預估/真實情況 三者對比

優化目標選擇

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖5.優化對象的選擇

算法系統的設計首先要明確優化對象,這不僅僅涉及到損失函數的形式,同樣也是評判系統成功與否的標準。YouTube是視頻平臺,更是富含“價值”的長視頻平臺,其觀看行為比點擊行為意義更大。(當然,筆者認為沒有任何一個簡單指標可以完全代表一個產品)

“正樣本”定義

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖6.何為正樣本的設計選擇

YouTube選擇用戶觀看記錄作為訓練數據的初始來源,即完成觀看視頻記錄為正樣本。主要原因是用戶觀看記錄相對於用戶的顯性行為例如點贊收藏要多得多。而觀看更是視頻應用中表達讚賞的最直接方式,其它的顯性行為往往意味著強烈的情緒與偏好。

訓練數據來源

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖7.關於訓練數據來源的設計抉擇

訓練數據應該只來源於推薦界面的曝光嗎?YouTube認為不然。如果只考慮推薦界面曝光,則無法對用戶便好進行探索,更加無法捕捉用戶偏好的變化,因為用戶偏好的變化往往首先會對應著搜索與瀏覽行為。所以YouTube將各個界面例如搜索,導航等用戶行為全部納入其中。

訓練數據窗口

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖8. 訓練數據收集方式的設計選擇

Youtube將所有用戶等而視之,每個用戶收集一定量的樣本。而不是慣常可見的直接收集一個時間窗口內的所有用戶行為,作為訓練樣本。這樣的好處是避免系統收到少數行為過多用戶的影響,使得系統更多的為大眾設計。這樣的設計理念與近期阿里Gai Kun的論文中評測方法(用戶AUC)設計有異曲同工之妙。

用戶行為序列處理

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖9.用戶行為序列信息處理的設計選擇

在系統中,用戶往往會順著一個檢索結果頁或者用戶發佈者瀏覽頁進行順序觀看,如果系統捕捉到了用戶看了檢索界面的前三個結果,那麼預估用戶將看第四個結果就會很容易。但是這樣真的好嗎?將檢索結果頁面或者用戶發佈視頻界面直接作為推薦結果呈現給用戶是並不友好的--搶了別的界面應該乾的活嘛。所以此處YouTube對用戶行為序列做了處理,在模型輸入中選擇放棄用戶行為的序列信息,將其打散成詞袋Embedding,即使這樣的信息有利於模型的離線訓練效果。

預估對象的選擇

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

圖10.關於預估對象的設計選擇

用戶的行為往往是有順序的,用戶在系統中“熱身”後,在一個頻道下面,往往先看大眾喜歡的熱門,然後逐步找到自己的興趣點,聚焦看一塊內容。那麼,訓練數據則應該收集用戶前段時間行為,預估此後的行為。而不是收集時間前後段的行為,預估中間時間段的用戶行為。這樣模型更加接近用戶習慣。

「乾貨」YouTube 基於深度神經網絡推薦系統剖析

除此之外,Youtube根據系統設計了對應的實驗,結果非常簡單:深度網絡層數越高,效果越好。

YouTube的推薦系統,已經為其貢獻了70%的用戶播放時長,搜索與導航在PC時代的主導地位在移動時代已經完全被顛覆掉。希望大家在其中學到一些東西。筆者水平所限,若有錯誤不當之處,敬請指正。

另外,個人用TensorFlow模擬Youtube的推薦系統,做了一個簡單實現。其實就是一個多分類器外加一個單分類器,遠談不上成熟,可以供大家參考。

https://github.com/wangkobe88/Earth

——END——


分享到:


相關文章: