# Deep Neural Networks for YouTube Recommendations ###### tags: `paper notes` `deep learning` [paper link](https://static.googleusercontent.com/media/research.google.com/zh-TW//pubs/archive/45530.pdf) ## Intro - 主要的挑戰有三個 : Scale, Freshness, Noise - Scale : 需要非常大規模的分散是訓練以及 serving 才能處理他們的 scale,這是許多現有的推薦系統無法處理的 - Freshness : 由於每一秒都有大量的內容被上傳到 YouTube,系統必須能反應得足夠快速去處理這些新內容,並且在新內容和現存已有的優質內容之間做平衡 ( exploration/exploitation ) - Noise : 使用者的歷史資料不僅 sparse 且受到許多外部因子的影響,幾乎很難直接拿到 groud truth of user satisfaction,反而是必須從 implicit feedback 中擷取出來,另外影片的 metadata 也需要做一些處理才能用 ## SYSTEM OVERVIEW - 整個系統由 1. candidate generation 和 2. ranking 所組成 - candidate generation 利用協同過濾提供一個廣泛的個人化內容 - ranking 則是得利用影片和使用者的特徵來根據 objective 對這些 candidate 指派一個 score - 他們同時做了 offline 的評估 (precision, recalls, rank loss) 以及 online 的評估 (Live A/B Testing) 以避免兩者之間的 gap 影響到模型的效能判斷  ## CANDIDATE GENERATION - 他們模擬的是一個用 matrix factorization trained under rank loss 的系統 - 但是是用淺層的 NN 來 embedded 使用者曾經看過的影片 - Can be viewed as a non-linear generalization of factorization techniques ### Recommendation as Classification - 把"推薦" model 成一個分類問題  - 從基於 User $U$ 和 Context $C$ 所找出的語料 $V$ 在時間 $t$ 觀看的 $i$ 種影片 $w_t$ 屬於哪一類 - The task of the deep neural network is to **learn user embeddings u as a function of the user's history and context that are useful for discriminating among videos with a softmax classifier** - 簡單來說就是輸入 user 和其瀏覽紀錄跟當下的 context 輸出推薦的影片類別 - 他們用的是 implicit feedback (是否有看完一個影片) 而非 explicit feedback (喜歡/不喜歡)來訓練模型,這是為了讓他們能在 explicit feedback 很少的情況下也能做出好的推薦 #### Efficient Extreme Multiclass - 他們從 background distribution 中抽樣 negative sample 並利用 importance weighting 將這些 sample 矯正來訓練這種百萬級的分類問題 訓練 - 對每一個模型而言,訓練的目標是讓 true label 和這些 negative sample 的 cross entropy loss 最小化 - 但也由於他們抽樣了數千個負樣本,必須改用 hierarchical softmax 而非傳統的 softmax 來加速運算,不過也因此放棄了一些 accuracy (因為遍歷到的可能是不相關的 nodes) Serving - Serving 方面他們必須找出使用者最有可能喜歡的 N 個影片種類,並從中選出 top N 個影片給使用者 - Serving 的時候不需要算 softmax 所以就拿掉了,他們改為使用 nearest neighbor search in dot product space 來做 scoring - A/B Testing 對於不同的 nearest neighbor search algo 不太敏感 (用甚麼都沒什麼差別) ### Model Architecture Candidate generation 的架構  - 輸入 fixed vocalulary 和每一個影片的高維度 embedding 給 feedforward NN - 使用者的 user history 是用一串 sparse video ID 來表示 - embedding 最後會全部 average 起來作為輸入 ### Heterogeneous Signals - 使用 NN 來做 matrix factorization 的優勢在於連續型和類別型特徵可以直接輸入到模型之中 - Demographic features 就是一個很重要的特徵 - User 的 geographic region and device 會被 embedded and concatenated - User 的性別、年齡、登入狀態這些簡單的連續型特徵則是會被 normalize 到 [0,1] 上之後直接輸入模型 - 搜尋歷史和觀看歷史是類似的東西 (each query is tokenized into unigrams and bigrams and each to-ken is embedded) #### “Example Age” Feature - YouTube 會特別關注那些喜歡看新影片的使用者來推薦影片給他們,但也不會因此而犧牲影片和使用者的相關性 - 影片的分布是高度非穩態的,但他們的推薦系統產生的影片是集合在影片的分布之上,基本上反映的是訓練所取時間段(Time windows)的平均觀看喜好的影片 - 簡單來說就是即使影片熱門度是非穩態的難以預測,但卻能利用影片上傳的時間與類似影片的平均觀看可能性來做基本的預測 - 因此他們會將 **"age of the training example"** 作為一個額外的特徵用來訓練模型 (也就是這個影片的上傳時間和根據時間來看的熱門度) - 在 Serving 的時候這個特徵會被設為0或是slightly negative  ### Label and Context Selection - 更廣泛的data source - Recommendation often involves solving a surrogate problem and transferring the result to a particular context - 由於 Online 以及 Offline 必定會有 gap,且 Online A/B Testing 對於 surrogate learning problem 才是重點 - 因此**訓練資料就得使用所有YouTube的觀看資料 (即使是嵌入在其他網站的也一樣)**,而不是只用那些系統所推薦的資料來訓練,才能符合現實情況,同時新的內容才能浮上水面 - 固定了每一個使用者的訓練資料個數來增進訓練效率 (在 loss function 中可以把每一個使用者都 equally weighting,不會有人的訓練資料特別多或者特別少) - 丟棄了 sequence information - 用來防止 surrogate 的 overfitting - 比如使用者搜尋了 "Taylor swift" 之後,並不能因此而推薦使用者當時所搜尋到跟 Taylor swift 有關的內容 - Asymmetric co-watch probabilities - 指的是使用者在瀏覽影片的時候通常是序列式的,從一開始先看流行的影片再慢慢找到自己真的感興趣的影片類型 - Predicting held-out watch 是許多協同過濾系統使用的方法,但他的訓練方法是利用上下文 (過去以及未來看過的影片) 來預測目前的影片 - Predicting future watch 則是他們選擇的方法,只看過去的瀏覽紀錄來訓練模型,才能避免掉不對稱的 co-watch  ### Experiments with Features and Depth - 他們是利用 tower 方式來建立模型 (也就是網路越深的維度就越高)  ## RANKING - Ranking 階段最重要的就是評估使用者對影片的喜歡程度 - 這個階段強調的是推薦的品質,因為這個階段所處理的數量級相較於 candidate generation 已經大量減少了許多 (只有數百級),因此可以輸入更多樣的特徵以及做更多步驟的處理 - 他們發現最重要的特徵是使用者過往與item以及相似item的互動資訊 - 這同時也是最具挑戰性的任務,要如何表現出用戶的互動資訊以及這些互動如何與已經被評分過的影片被放在一起考慮 - 例如**他們會以一個使用者的數量指標以及時間指標來判斷他對這個影片的喜歡程度,數量指標指的是使用者在過去看了多少個這個頻道影片,時間指標是使用者最近一次瀏覽這個頻道的影片是距今多久** - 他們也發現以特徵的方式將 candidate 的資訊傳遞到 ranking 很重要,比如是哪些來源提名了這個影片,而這個影片的分數是多少  - Ranking 的架構與 candidate generation 差不多,不過改用了 logistic regression 來 assign score 給影片 ### Embedding Categorical Features - 數量指標以及時間指標都是非常好用的連續型特徵,並且可以直接輸入到 NN 之中,而其他的稀疏類別型特徵則是也被轉成Dense輸入 - 但**並不是所有特徵都會轉成 Embedding,比如影片的 id 就只需要按照點擊率排序,選擇 top N 轉為 Embedding** - 相同 ID space 中的類別型特徵會分享他們的 embedding (共享 embedding 可以加速運算),比如 (video ID of the impression, last video ID watched by the user, video ID that "seeded" the recommendation, etc.) ### Normalizing Continuous Features - NN 對於輸入特徵的維度以及數量很敏感,因為 YouTube 的運算量很龐大,他們找到一種很有效的 Normalize 連續型特徵的方式 一個連續型特徵 $x$ 服從機率分布 $f$,會被 normalize 為 $\hat{x}$,這個 $\hat{x}$是平均分布在 [0,1) 之上,公式是直接對$x$以線性插值做分位數的積分, - 公式  除此之外他們也把 $\sqrt{\hat{x}}$ 和 $\hat{x}^2$都輸入進去 NN,得以輕鬆獲得 super- and sub-linear functions of the feature ### Experiments with Hidden Layers  - Hidden layers size 越大,表現越好,結果並不是很令人意外 ## 結論 - Google將Yotube推薦系統切分成兩個部分: candidate generation和ranking - 他們的協同過濾方法超越了過去矩陣分解方法,因為他們使用了更精準的Predicting future watch去訓練可以避免模型overfit在surrogate problem上而無法轉移到homepage - 使用訓練樣本的年齡作為輸入特徵可以消除對過去,並允許模型表示時間相關的影片流行的行為。這種改進的離線保留精確的結果並在 A/B testing中大幅增加了查看最近上傳影片的觀看時間 - 對ranking來說,相較於tree-based algo,深度網路有更高的潛力
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up