# Recommending What Video to Watch Next: A Multitask Ranking System
###### tags: `paper notes` `deep learning`
[paper link](https://dl.acm.org/doi/10.1145/3298689.3346997)
[references](https://zhuanlan.zhihu.com/p/82584437)
## Intro
- 這篇是由Google所發表的多工影片排名推薦系統論文
- 所處理的問題是 **given 一個使用者以及他正在觀看的影片,要推薦給他下一個他可能會想看的影片** (a large-scale ranking system for video recommendation)
- 專注在處理 ranking 的問題 (通常一個推薦系統會有 candidate generation 以及 ranking 兩個階段)
- ranking 所使用的 objective 可能會有所衝突 (例如要同時考慮到使用者的歷史觀看以及普遍高評價的影片)
- 系統中的 implicit bias (使用者會選擇觀看一個影片可能只是因為影片被排得很前面,而不是因為這個影片是在推薦列表中他最喜歡的)
- 系統架構是把 [Wide & Deep](https://hackmd.io/8gJMrLm9SZqqmG8okcaYww?view) 用 Multi-gate Mixture-of-Experts (MMoE) 實作出來,並引進 shallow tower 來 model 以及移除 selection bias,如下圖
- MMoE 會訓練各種不同的 expert 來處理 multitasking,每一個 expert 底下的 submodels 會互相分享,並同時使用 gate 來決定使用哪些 expert 的結果來增進可訓練性,適合用在任務是有高度相關的情況下
- [MMoE 架構](https://www.youtube.com/watch?v=Dweg47Tswxw)

- 整體系統架構
1. 把所有的 multiple objective 分類成兩類 : engagement objectives 和 satisfaction objectives,前者是指使用者的點擊和觀看,後者是指使用者對影片的評價(喜歡/不喜歡)
- 這部分是利用 MMoE 來自動學習如何分類這些 objective (同時也用來解決可能有 conflicting 的 objective)
2. shallow tower 會輸入和 selection bias 有關的特徵,比如目前系統決定的 ranking order,然後輸出一個 scalar 作為模型最終輸出的 bias
- 可以說是用來呈現 Wide & Deep 的 Wide
- 這可以讓 training data 的 label 有兩個部分,一個是 main model 來的 unbiased feature (比如觀看的影片主題、時間),另一個是 shallow tower 來的 propensity scroe (比如點擊的位置)
- 注意他是直接從feature學習的 (跟 Main model 平行)

Evalution
- 測試 multitask learning
- 測試移除掉 selection bias 會怎樣 (也就是 click position bias)
## RELATED WORK
- 一個推薦問題其實可以看成是 given 一個 query, context 以及一串 items,然後需要回傳許多高品質的 items
- 比如一個電影推薦系統,query就是使用者的觀看歷史,context就是星期五的晚上在家裡使用平板,以及有一連串電影
- 然後需要回傳一串使用者有興趣的電影 (a subset of movies that this user is likely to watch and enjoy)
- 這個部分會談到三個推薦系統議題 : industrial case studies on recommendation systems, multi-objective recommendation systems, and understanding biases in training data
### Industrial Recommendation Systems
目前作法
- 通常都需要很多 user logs
- 最直接的方式是詢問使用者對於 item 的 feedback,但這很難 scale up (成本高且使用者未必願意)
- 因此通常推薦系統都會以 implicit feedback 的方式來做 ranking (像是點擊跟engagement)
- 現行的推薦系統通常包含 candidate generation 和 ranking
- 前者會用協同過濾或是NN的方式做
- 後者則是用一些 learning-to-ranking 的混合方式做,比如 Linear + tree-based 或是 GBDT+NN
挑戰
- 主要是 scalability 問題
- 通常都會用更有效率的演算法或是改變架構來犧牲 quality 以獲得一些效率
- Popular choics is deep neural network-based point-wise ranking models
但除此之外他們覺得對於被推薦過的 items,使用者的 implicit feedback 以及使用者真正的偏好之間的 misalignment 也是很重要的問題
- 因此就使用 NN 來解決 multiple ranking objectives (每一個目標都對應一種 user feedback)
### Multi-objective Learning for Recommendation Systems
- 雖然使用者的行為有很多種,但卻不是每一個都能反映出使用者偏好
- 但是現行的 behavior aware 和 multiobjective recommendation 都是用在 candidate generation 而非 ranking 上
- 比如把協同過濾擴展到可以從各種不同的使用者資訊中找出 user-item similarity
- 這些方法在產生 candidate 的時候很有用,但卻不是一個有效率的 ranking 方式
- 除此之外現有的多工排名系統都是專門為了特定的 feature 和 application 設計的 (比如文字),很難擴展到其他應用 (比如影片標題中的文字或是影片縮圖的特徵)
- 雖然有很多不適合用在推薦系統上的處理表徵學習的多工學習技巧,但這些東西也啟發了他們去作出一個 DNN based 且支援 multitask 的 ranking system
### Understanding and Modeling Biases in Training Data
- 過往的研究已經證明 position bias (其中一種 selection bias) 會對於 rank model 的學習有所影響
- 一個很常用的解決方法是把 position 作為一個 input feature 來訓練模型,並在 serving 的時候拿掉
- 也有人是用 counter-factual model 學 inverse propensity score (IPS),但這都不適合 YouTube 這種訓練資料的分布會持續改變的情況 (效率不夠好)
## PROBLEM DESCRIPTION
- "推薦下一部影片"這件事情到底會遇到哪些問題
- candidate generation 跟 ranking 會遇到哪些問題
Multimodal feature space
- 使用者曾經所看過的影片包含許多不同類型的特徵 (影片內容、標題、縮圖、音樂、敘述、地理以及人口資訊)
- 這麼多樣的特徵在其他類型的模型是難以遇到的,要如何將這些 low-level 特徵結合起來變成有意義的 content 以及如何從這種 sparse distribution 使用協同過濾來學習是兩大難題
Scalability
- 主要的困難點在於要能同時兼顧系統的 training 效率以及 serving 效率
- 而且得同時能 real-time 去學習數十億的 user-items 特徵
如何解決?
- 他們利用擷取出每個影片的 metadata 以及內容來作為影片的 representation 並且將當時的 context (使用者的裝置、人口資訊、地理資訊、時間) 一起輸入進去,作為 Multimodel feature space
- 這樣就有了 **given 目前正在觀看的影片資訊以及當下的 context**
- scalability 的問題
### Candidate Generation
- 他們有許多用來抓 query video 和 candidate video 相似度的 candidate generation algo
- topic matching
- how often these video has been watched together
舉例來說,他們
- 利用 [Deep neural networks for YouTube Recommendations](https://hackmd.io/BNYIb1oqTKCfwAIdYmQJrg) 中的技巧來產生個人化 candidate
- 也用了 [Efcient training on very large corpora via gramian estimation](https://arxiv.org/abs/1807.07187) 中的技巧來產生 context-aware high recall relevant candidates
- 最後將所有的 candidate 都丟到一個 pool 中集合起來
### Ranking
- 只需要從幾百個 candidate 中做排名
- 重視的是 utility,因此使用了很多很困難的 ML 方法來確保 utility 夠高
## MODEL ARCHITECTURE
- ranking system 主要從
1. engagement behaviors (像是點擊和觀看)
2. satisfaction behaviors (像是喜歡和不喜歡)
兩種 user feedback 來學習
Point-wise approaches
- Learning-to-rank framework
- Given each candidates, ranking system 會利用 candidate 的特徵、query 和 context 作為輸入來預測各種使用者行為 (點擊、觀看、喜歡、不喜歡的機率是多少)
Pair-wise approaches (list-wise)
- 預測兩個或多個 candidate 的 ranking order
- 能增加模型的 diversity
不過考量到 serving 的壓力會過大,他們最後主要是使用 Point-wise ranking 方法 (使用Pair-wise 會限制到 scalability)
### Ranking Objectives
主要有兩種目標 : engagement objectives and satisfaction objectives
- Engagement objective 分為 binary classification 和 regression 兩種 tasks
- Classification 是預測 user 是否會點擊之類的
- Regression 是預測 user 在特定行為上所花費的時間
- Satisfcation objective 則分為 binary classification 或是 regression 兩種 tasks
- Classification 是預測是否點擊影片喜歡
- Regression 是預測對影片的評價(rating)
Loss
- 分類任務都是用 cross entropy loss
- 回歸任務用 squared loss (MSE)
weight
- 手動調整,以最佳化user engagements 和 user satisfactions
### Modeling Task Relations and Conficts with Multi-gate Mixture-of-Experts
- 多目標的 Ranking system 通常是使用 shared-bottom 的模型架構
- shared-bottom 缺點是如果任務和任務之間的關聯性不高就會表現差 (hard parameter)
- 因此他們改用 MMoE (soft parameter) 來改善這的問題

- 在 shared-bottom 上面加上 expert 是因為 MoE layer 可以幫忙模組化輸入 (能更好的從 input layer 或是 lower hidden layer 去 model 多模型的特徵空間)
- 不過這樣會增加很多 training cost 和 serving cost (因為 input layer 的維度通常都比 hidden layer 還高很多)
### Modeling and Removing Position and Selection Biases
- 為了移除 selection bias (position bias),也就是排名原本就靠前面的比靠後面的更容易被點擊,因此造成高的永遠更高,低的永遠更低的循環,而因此除了 main tower 外還加入 shallow tower 來 model 這種 bias
- shallow tower 會以瀏覽時所有影片的位置作為輸入,並加上 10% 的 dropout rate 來訓練
- serving 的時候這個位置特徵會被設定為 missing
- 另外也會加入 device info,因為不同的 device 會有不同的 position bias

## EXPERIMENT RESULTS

- 整個實驗都是在 YouTube 上面進行的
- Offline 使用 AUC 評估
- Online 使用 A/B Testing,評估 engagement 和 satisfaction,以及服務的 cost
- Baseline 就是 shared-bottom

- 有的 Expert 偏重 engagement,有的偏重satisfaction
- gating network 和 input layer 相連沒有什麼很大的改善,因此不需要直連

- 位置越前面的 Position bias 越大,越後面的則越小

