---
# System prepended metadata

title: 'Recommending What Video to Watch Next: A Multitask Ranking System'
tags: [deep learning, RecSys, paper notes]

---

# 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)
   ![](https://i.imgur.com/DybDo5v.jpg)
- 整體系統架構
  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 平行)
![](https://i.imgur.com/lcEhWie.jpg)

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) 來改善這的問題
![](https://i.imgur.com/5dGEFNH.jpg)
- 在 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
![](https://i.imgur.com/aVYzQuA.jpg)

## EXPERIMENT RESULTS 

![](https://i.imgur.com/lcUKOE4.jpg)
- 整個實驗都是在 YouTube 上面進行的
    - Offline 使用 AUC 評估
    - Online 使用 A/B Testing，評估 engagement 和 satisfaction，以及服務的 cost
- Baseline 就是 shared-bottom
![](https://i.imgur.com/fdlFbc1.jpg)
- 有的 Expert 偏重 engagement，有的偏重satisfaction
   - gating network 和 input layer 相連沒有什麼很大的改善，因此不需要直連
![](https://i.imgur.com/YHvPdDN.jpg)

- 位置越前面的 Position bias 越大，越後面的則越小
![](https://i.imgur.com/bzieMS0.jpg)

![](https://i.imgur.com/I0NYLgb.jpg)
