# Wide & Deep Learning for Recommender Systems ###### tags: `paper notes` `deep learning` [paper link](https://arxiv.org/abs/1606.07792) [references](https://www.ycc.idv.tw/wide-and-deep-learning.html) # Intro - 主要應用在 Google play 的 app 推薦系統上 - 希望解決推薦系統的無法兼得 memorization 和 generalization 的問題 - Memorization 指的是能從歷史資料中找出常常一起出現的item或是feature有哪些,並利用這些關係來做推薦 (推薦跟使用者看過的東西有關係的) - Generalization 指的是根據這些歷史資料的特徵來推薦使用者他從未或者很少看過的那些新的特徵組合 (從使用者的歷史資料來推測他會喜歡甚麼沒看過的) - Logistic Regression 因為簡單、易擴展以及可解釋性而常被推薦系統所使用 - 可以把特徵轉成 One-hot 並利用 cross-product over sparse features 來達成 Memorization,缺點是沒辦法推廣到沒有這種特徵的 query-item pairs - Generalization 則是可以透過把特徵做組合來達成,缺點是通常需要做手動的特徵工程 - FM 或是 NN 則是能透過較少的特徵工程就可以 generalize 過去從未看過的 query-item pairs - 這會需要從 low-dimensional dense embedding vector for each query and item feature 中去學習 - 但如果遇到 query-item matrix 是 sparse 或是 high-rank 的情況下就很難有效率的去學習 (此時使用者可能是有比較特別或是少見的偏好),在這種情況下模型很可能會 over-generalize 而導致推薦的效果很差 - 不過線性模型卻又能清楚地記住這些少見的例外 case 而能花費更少的參數來做出好的推薦 - 這篇 paper 則是希望能結合 linear model 以及 NN 來同時達成 Memorization 以及 Generalization - The spectrum of Wide & Deep models  - Overview of the recommender system  # The Wide Component - Wide 是 Linear Model,$y = w^Tx + b$ - Sparse feature 是利用 Cross-product transformation 來轉換後才輸入,公式如下 - $c_{ki}$ 是 bool 值,為1時代表第 i 個特徵是屬於第 k 個 transformation $\phi_k$ 的一部分,為0時代表不屬於  - 舉例來說,有兩個特徵 gender ,以及 language - Cross product 就是對兩個特徵做 AND 變成 AND(gender=female, language=en),假如結果是 True 則代表所有特徵都是符合敘述的,也就是 gender = female, language = en,否則都會是 false - 抓取二元特徵的互動以及增加線性模型的非線性能力 # The Deep Component - Deep 是 feed-forward NN - 類別型特徵會先轉成 embedding vector 再輸入模型中 - 每一個 Hidden layer 中的運算如下 - $a^{(l)}$ 是 activations at $l_{th}$ layer  # Joint Training of Wide & Deep Model - Jointy training 是兩個模型共享參數一起訓練,Ensemble 是兩個模型分開獨立訓練,只在需要做 inference 的時候才會結合再一起產生輸出 - Jointy 通常只需要較少的運算而 Ensemble 則需要較多的運算 - 他們使用 Weight Sum 來結合 Wide 和 Deep Component 各別的輸出,並利用 logisitic loss 來訓練  - $\sigma$ 是 Sigmoid - $\phi$ 則是經過 cross-product transformation 的 $x$ - $W_{wide}$ 是 wide component 中所有 model weight 組成的 vector - $W_{deep}$ 是 deep component 中在 final activiation $a^{l_f}$ (最後一層的輸出) 上的 weight - 利用 Follow-the-regularized-leader (FTRL) algorithm with $L_1$ regularization 作為 Wide 的 optimizer - 而 Deep 的 optimizer 則是使用 AdaGrad # SYSTEM IMPLEMENTATION - 包含 data generation, model training, and model serving  ## Data Generation - 主要是做資料前處理,像是one hot encoding、字串轉換以及離散化 ## Model training - Online learning,只要有新的資料進來,他就會將過去的權重拿出來,繼續學習微調權重  ## Model Serving - 希望能在10ms去做response,因此他們使用multithreading 以及batch設定進行加速 ## EXPERIMENT RESULTS - Offline vs Online  - Batch size 實驗  # Summary - 簡單模型的架構簡單,記憶能力強,容易記住點擊過A就推薦B的推薦流程 - 複雜模型的泛化能力強,可以解決稀疏物品或是cold start的問題 - Wide的輸入: 已安裝應用程式+曝光應用,經過 Cross Product 之後進入一層的邏輯回歸模型,只有兩個特徵都符合(AND)的時候才會得出1,否則皆為0 - Deep的輸入: 年齡 人口特徵, 裝置特徵, 已安裝應用程式, 曝光應用等等,把數值跟通過embedding的類別特徵一起輸入多層MLP
×
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