推薦系統(tǒng)排序算法--Wide&Deep

1、背景

Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右發(fā)布的一類用于分類和回歸的模型,并應用到了 Google Play 的應用推薦中。wide and deep 模型的核心思想是結合線性模型的記憶能力(memorization)和 DNN 模型的泛化能力(generalization),在訓練過程中同時優(yōu)化 2 個模型的參數(shù),從而達到整體模型的預測能力最優(yōu)。

記憶(memorization)即從歷史數(shù)據(jù)中發(fā)現(xiàn)item或者特征之間的相關性。

泛化(generalization)即相關性的傳遞,發(fā)現(xiàn)在歷史數(shù)據(jù)中很少或者沒有出現(xiàn)的新的特征組合。

2、原理

2.1、網(wǎng)絡結構

1、The spectrum of Wide & Deep models

可以認為:WideDeep = LR + DNN

2.2、推薦系統(tǒng)

2、Overview of the recommender system

流程:

1、query召回 100 個 相關的items;

2、根據(jù)query+items+用戶日志學習排序模型;

3、利用 2 的模型,對 1 中召回的items排序,先去top10 推薦給用戶。

論文主要講排序的部分,排序時使用到的特征:

user features (e.g., country, language, demographics);

contextual features (e.g., device, hour of the day, day of the week);

impression features (e.g., app age, historical statistics of an app)。

2.3 The Wide Component

wide部分就是LR,具有著y=W^Tx+b的形式,如圖1(左)所示,x=[x_{1},x_{1},...,x_u0z1t8os ]d個特征對應的向量,w=[w_{1}, w_{2},...,w_u0z1t8os]是模型參數(shù),b是模型偏差。特征集合包括原始輸入特征(raw input features)和變化得到的特征(transformed features)。其中一個最為重要的變換是外積變換(cross-product transformation),它被定義為:

? ???????????????????\phi_{k}(x)= \prod_{i=1}^d x_{i}^{c_{k,i}} , {c_{k,i}}\in \left\{ 0,1\right\}

其中,c_{k,i}是一個bool型變量,在第k個變換\phi_{k} 包含第i個特征時為1,否則為0。對于二進制特征,當且僅當所有組成特征(“gender=female” 和 “l(fā)anguage=en”)都為1時值為1,否則為0。這將捕獲到二進制特征間的交互,并向廣義線性模型中添加非線性項。

2.4 The Deep Component


3、Deep model structure

deep部分是一個前饋神經(jīng)網(wǎng)絡,如圖3所示。對于連續(xù)性特征可直接輸入模型。對于類別型特征,原始輸入是特征字符串(如“l(fā)anguage=en”),需要embeding后輸入模型。這些稀疏、高維的類別型特征首先被轉化為低維稠密實值向量,通常被稱為嵌入向量。嵌入向量的維度通常在到間O(10)O(100)。在模型訓練階段,嵌入向量被隨機初始化并根據(jù)最小化最終的損失函數(shù)來學習向量參數(shù)。這些低維稠密嵌入向量隨后在神經(jīng)網(wǎng)絡的前饋通路中被輸入到隱藏層中。特別地,每個隱藏層進行了如下計算:

? ???????????????????x^{l+1}=f(W^{(l)} a^{(l)}+b^{(l)} )

其中,l是層的序號,f是激活函數(shù),通常為ReLU。a^{(l)} 、b^{(l)}W^{(l)} 分別為l層的激活、偏差和模型權重。

2.5 Wide和Deep模型的協(xié)同訓練

wide模塊和deep模塊的組合依賴于對其輸出的對數(shù)幾率(log odds)的加權求和作為預測,隨后這一預測值被輸入到一個一般邏輯損失函數(shù)(logistic loss function)中進行聯(lián)合訓練。需注意的是,聯(lián)合訓練(joint training)拼裝(ensemble)是有區(qū)別的。在拼裝時,獨立模型是分別訓練的,它們的預測結果是在最終推斷結果時組合在一起的,而不是在訓練的時候。作為對比,聯(lián)合訓練是在訓練環(huán)節(jié)同時優(yōu)化wide模型、deep模型以及它們總和的權重。在模型大小上也有不同:對拼裝而言,由于訓練是解耦的,獨立模型常常需要比較大(如更多的特征和變換)來達到足夠合理的準確度用于模型拼裝;作為對比,聯(lián)合訓練中wide部分只需要補充deep部分的弱點,即只需要少量的外積特征變換而不是全部的wide模型。

對Wide&Deep模型的聯(lián)合訓練通過同時對輸出向模型的wide和deep兩部分進行梯度的反向傳播(back propagating)來實現(xiàn)的,這其中應用了小批量隨機優(yōu)化(mini-batch stochastic optimization)的技術。在實驗中,我們使用了FTRL(Follow-the-regularized-leader)算法以及使用L1正則化來優(yōu)化wide部分的模型,并使用AdaGrad優(yōu)化deep部分。

模型的預測是:

? ??????????????????P(Y=1|x)=\sigma (W_{wide}^T[X,\phi (X)] + W_{deep}^Ta^{(l_{f} )}+b )

其中,Y是二進制標簽,\sigma(.)是sigmoid函數(shù),\phi(x)是原特征x的外積變換,b是偏差項,W_{wide} 是所有wide模型的權重向量,W_{deep} 是作用在最終激活a^{l_{f} }的權重。

3、論文總結

記憶和泛化對推薦系統(tǒng)都很重要。Wide線性模型可通過外積特征變換有效記憶稀疏特征交互信息,而深度神經(jīng)網(wǎng)絡可通過低維嵌入技術對未見過的特征交互進行泛化。我們呈現(xiàn)了Wide&Deep學習框架來結合兩個模型的優(yōu)勢。我們在大規(guī)模商業(yè)應用商店Google Play的推薦系統(tǒng)中實踐并評估了這一框架。線上實驗結果表明,相對于僅Wide和僅Deep模型,Wide&Deep模型對APP獲取指標有著顯著提升。參考文獻:

論文:Wide&Deep

中譯文:Wide & Deep Learning for Recommender Systems / 中譯文

代碼:https://github.com/tensorflow/tensorflow/blob/r1.3/tensorflow/examples/learn/wide_n_deep_tutorial.py

FTRL:https://zhuanlan.zhihu.com/p/32903540

AdaGrad:https://zhuanlan.zhihu.com/p/29920135

推薦好文:?深度學習在CTR預估中的應用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容