《推薦系統》-Wide&Deep

演算法手記發表於2020-10-20

1、背景

Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右釋出的一類用於分類和迴歸的模型,並應用到了 Google Play 的應用推薦中。wide and deep 模型的核心思想是結合線性模型的記憶能力(memorization)和 DNN 模型的泛化能力(generalization),在訓練過程中同時優化 2 個模型的引數,從而達到整體模型的預測能力最優。

記憶(memorization)即從歷史資料中發現item或者特徵之間的相關性。

泛化(generalization)即相關性的傳遞,發現在歷史資料中很少或者沒有出現的新的特徵組合。

2、原理

2.1、網路結構

在這裡插入圖片描述
圖1、The spectrum of Wide & Deep models

可以認為:WideDeep = LR + DNN

2.2、推薦系統

在這裡插入圖片描述
圖2、Overview of the recommender system

流程:

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

2、根據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 T x + b y=W^Tx+b y=WTx+b的形式,如圖1(左)所示, x = [ x 1 , x 1 , . . . , x d ] x=[x_{1},x_{1},...,x_{d} ] x=[x1,x1,...,xd]是d個特徵對應的向量, w = [ w 1 , w 2 , . . . , w d ] w=[w_{1}, w_{2},...,w_{d}] w=[w1,w2,...,wd]是模型引數,b是模型偏差。特徵集合包括原始輸入特徵(raw input features)和變化得到的特徵(transformed features)。其中一個最為重要的變換是外積變換(cross-product transformation),它被定義為:

ϕ k ( x ) = ∏ i = 1 d x i c k , i , c k , i ∈ { 0 , 1 } \phi_{k}(x)= \prod_{i=1}^d x_{i}^{c_{k,i}} , {c_{k,i}}\in \left\{ 0,1\right\} ϕk(x)=i=1dxick,i,ck,i{0,1}

其中, c k , i c_{k,i} ck,i是一個bool型變數,在第k個變換 ϕ k { \phi_k} ϕk包含第i個特徵時為1,否則為0。對於二進位制特徵,當且僅當所有組成特徵(“gender=female” 和 “language=en”)都為1時值為1,否則為0。這將捕獲到二進位制特徵間的互動,並向廣義線性模型中新增非線性項。

2.4 The Deep Component

在這裡插入圖片描述
圖3、Deep model structure

3、Deep model structure
deep部分是一個前饋神經網路,如圖3所示。對於連續性特徵可直接輸入模型。對於類別型特徵,原始輸入是特徵字串(如“language=en”),需要embeding後輸入模型。這些稀疏、高維的類別型特徵首先被轉化為低維稠密實值向量,通常被稱為嵌入向量。嵌入向量的維度通常在到間O(10)到O(100)。在模型訓練階段,嵌入向量被隨機初始化並根據最小化最終的損失函式來學習向量引數。這些低維稠密嵌入向量隨後在神經網路的前饋通路中被輸入到隱藏層中。特別地,每個隱藏層進行了如下計算:
x l + 1 = f ( W ( l ) a ( l ) + b ( l ) ) x^{l+1}=f(W^{(l)} a^{(l)}+b^{(l)} ) xl+1=f(W(l)a(l)+b(l))

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

2.5 Wide和Deep模型的協同訓練

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

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

模型的預測是:
P ( Y = 1 ∣ x ) = σ ( W w i d e T [ X , ϕ ( X ) ] + W d e e p T a ( l f ) + b ) P(Y=1|x)=\sigma (W_{wide}^T[X,\phi (X)] + W_{deep}^Ta^{(l_{f} )}+b ) P(Y=1x)=σ(WwideT[X,ϕ(X)]+WdeepTa(lf)+b)

其中,Y是二進位制標籤, σ ( . ) \sigma(.) σ(.)是sigmoid函式, ϕ ( x ) \phi(x) ϕ(x)是原特徵x的外積變換,b是偏差項, W w i d e W_{wide} Wwide是所有wide模型的權重向量, W d e e p {W_{deep}} Wdeep是作用在最終啟用 a l f a^{l_{f} } alf的權重。

3、論文總結

記憶和泛化對推薦系統都很重要。Wide線性模型可通過外積特徵變換有效記憶稀疏特徵互動資訊,而深度神經網路可通過低維嵌入技術對未見過的特徵互動進行泛化。我們呈現了Wide&Deep學習框架來結合兩個模型的優勢。我們在大規模商業應用商店Google Play的推薦系統中實踐並評估了這一框架。線上實驗結果表明,相對於僅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預估中的應用

相關文章