綜述:機器學習在CTR中的應用

背景:設計個性化信息檢索時进倍,用戶行為預測扮演著重要的作用土至。用戶行為預測的目標是估計用戶點擊、購買等行為的概率猾昆,而該概率代表了用戶對該item的興趣程度陶因,用戶之前的行為同時也影響著我們隨后的排序。如何根據(jù)用戶的query選擇正確的ads并對其進行合理的排序垂蜗,不僅極大的影響著用戶點擊楷扬、瀏覽等行為,而且對于搜索廣告的收益也起到重要的作用贴见。
IR任務中烘苹,數(shù)據(jù)大部分為multi-field類型,例如:[weekday=Tuesday, Gender=Male, City=London]片部,我們可以通過one-hot對其進行編碼镣衡,映射為高維稀疏特征。例如档悠,我們可以將上述特征進行one-hot編碼捆探,然后concatenate得到
[\underbrace {[0,1,0,0,0,0,0]}_{{\rm{Weekday = Tuesday}}}\underbrace {[0,1]}_{{\rm{Gender = Male}}}\underbrace {[0,0,1,0,...,0,0]}_{{\rm{City = London}}}]

LR

{\mathop{\rm f}\nolimits} \left( {\bf{x}} \right) = {\bf{wx}} + b
,其中\bf{x}為特征站粟,\bf{w}為特征權重,b為偏差曾雕。

Degree-2 Polynomial (Poly2)

簡介: LR模型具有計算高效奴烙、可解釋性強等優(yōu)點,但是需要人工抽取交叉特征。而交叉特征對于模型性能起到重要的作用切诀,相比LR線性模型揩环,Poly2設計了特征自動交叉,從而自動計算交叉特征提升模型性能幅虑。
{\mathop{\rm y}\nolimits} \left( {\bf{x}} \right) = {w_0} + \sum\limits_{i = 1}^m {{x_i}{w_i} + \sum\limits_{i = 1}^m {\sum\limits_{j = i + 1}^m {{x_i}{x_j}{w_{h\left( {i,j} \right)}}} } }
h\left( {i,j} \right)是將i丰滑,j編碼為一個自然數(shù)的函數(shù)。

FM

簡介: Poly2模型雖然能夠自動抽取交叉特征倒庵,但是當特征維度較高并且稀疏時褒墨,權重\bf{w}難以收斂。針對該問題作者提出了FM算法擎宝,其中正定矩陣\bf{w}郁妈,可以通過特征向量空間\bf{v}漸進表示。
{\mathop{\rm y}\nolimits} \left( {\bf{x}} \right): = {w_0} + \sum\limits_{i = 1}^n {{x_i}{w_i} + \sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n { < {{\bf{v}}_i},{{\bf{v}}_j} > {x_i}{x_j}} } }
\begin{array}{l} \sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n { < {{\bf{v}}_i},{{\bf{v}}_j} > {x_i}{x_j}} } \\ = \frac{1}{2}\sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n { < {{\bf{v}}_i},{{\bf{v}}_j} > {x_i}{x_j}} } - \frac{1}{2}\sum\limits_{i = 1}^n { < {{\bf{v}}_i},{{\bf{v}}_i} > {x_i}{x_i}} \\ = \frac{1}{2}\left( {\sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\sum\limits_{f = 1}^k {{v_{i,f}}{v_{j,f}}} {x_i}{x_j}} } - \sum\limits_{i = 1}^n {\sum\limits_{f = 1}^k {{v_{i,f}}{v_{i,f}}{x_i}{x_i}} } } \right)\\ = \frac{1}{2}\sum\limits_{f = 1}^k {\left( {\left( {\sum\limits_{i = 1}^n {{v_{i,f}}} {x_i}} \right)\left( {\sum\limits_{j = 1}^n {{v_{j,f}}} {x_j}} \right) - \sum\limits_{i = 1}^n {v_{i,f}^2x_i^2} } \right)} \\ = \frac{1}{2}\sum\limits_{f = 1}^k {\left( {{{\left( {\sum\limits_{i = 1}^n {{v_{i,f}}} {x_i}} \right)}^2} - \sum\limits_{i = 1}^n {v_{i,f}^2x_i^2} } \right)} \end{array}
\sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n { < {{\bf{v}}_i},{{\bf{v}}_j} > {x_i}{x_j}} }是一個無對角線的上三角矩陣绍申,直接可以計算整個矩陣然后減去對角線噩咪。

FFM


簡介: FM算法將所有特征歸結到一個field,而FFM算法則按照field對不同特征進行區(qū)分极阅,主要體現(xiàn)在交叉項中胃碾。在FM算法中user這個特征對應的latent vector不論是對price、genre還是movie都是相同的筋搏,而FFM算法中則對特征進行歸類仆百,latent vector會區(qū)分交叉filed,模型參數(shù)個數(shù)n(n-1)/2拆又∪逖可以看出來FM算法時FFM算法的一個特例,但是隨著FFM算法對latent vector的細化帖族,F(xiàn)M算法中交叉簡化將不再適用.
y\left( x \right) = {w_0} + \sum\limits_{i = 1}^n {{x_i}{w_i}} + \sum\limits_{{j_1} = 1}^n {\sum\limits_{{j_2} = {j_1} + 1}^n {\left( {{{\bf{w}}_{{j_1},{f_2}}} \cdot {{\bf{w}}_{{j_2},{f_1}}}} \right)} } {x_{{j_1}}}{x_{{j_2}}}

其中栈源,{f_1}{f_2}分別表示{j_1}竖般,{j_2}對應的field甚垦,{\bf{w}}_{{j_1},{f_2}}代表{j_1}{f_2}交叉的權重。

FwFMs


簡介: FFM算法按照field對latent vector進行區(qū)分涣雕,從而提升模型的效果艰亮。但是FFM算法沒有區(qū)分不同特征交叉的重要性,本文針對不同特征交叉賦予不同的權重挣郭,從而達到更精細的計算交叉特征的目的迄埃。
網(wǎng)絡結構
{\mathop{\rm y}\nolimits} \left( {\bf{x}} \right): = {w_0} + \sum\limits_{i = 1}^n {{x_i}{w_i} + \sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n { < {{\bf{v}}_i},{{\bf{v}}_j} > {x_i}{x_j}} } } {r_{{\mathop{\rm F}\nolimits} (i),{\mathop{\rm F}\nolimits} (j)}}

其中,{r_{{\mathop{\rm F}\nolimits} (i),{\mathop{\rm F}\nolimits} (j)}}表示field {\mathop{\rm F}\nolimits} (i)兑障,{\mathop{\rm F}\nolimits} (j)交叉特征的重要性侄非。

AFM


簡介: AFM算法與FwFM算法類似蕉汪,目標都是希望通過對不同交叉特征采用不同權重,從而減少引入噪聲提升模型性能逞怨。

AFM的embedding層后者疤,先讓f個field的特征做了element-wise product后,得到f*(f-1)/2個交叉項叠赦,然后AFM引入了一個Attention Net驹马,認為這些交叉特征項每個對結果的貢獻是不同的。例如x_ix_j的權重重要度除秀,用a_{ij}來表示糯累。從這個角度來看,其實AFM其實就是個加權累加的過程鳞仙。
1: Attention-based Pooling Layer
{{a'}_{ij}} = {{\bf{h}}^{\rm{T}}}{\mathop{\rm ReLU}\nolimits} \left( {{\bf{w}}\left( {{{\bf{v}}_i} \odot {{\bf{v}}_j}} \right){x_i}{x_j} + \bf寇蚊} \right)
{a_{ij}} = \frac{{\exp \left( {{{a'}_{ij}}} \right)}}{{\sum\nolimits_{\left( {i,j} \right) \in {\Re x}} {\exp \left( {{{a'}_{ij}}} \right)} }}
2:AFM模型結構
y\left( x \right) = {w_0} + \sum\limits_{i = 1}^n {{x_i}{w_i}} + {{\bf{p}}^{\rm{T}}}\sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n {{a_{ij}}\left( {{{\bf{v}}_i} \odot {{\bf{v}}_j}} \right)} } {x_i}{x_j}

其中,\bf{h}棍好,\bf{w}仗岸,\bf{p}\bf借笙為模型參數(shù)扒怖。

FNN


簡介: LR、FM被廣泛的應用在工業(yè)場景中业稼,但是這些模型對于抽取高階特征顯得無能為力盗痒。深度模型可以學習高階復雜的交叉特征,對于提升模型性能有著重要的作用低散。由于CTR中大部分特征是離散俯邓、高維且稀疏的,需要embedding后才能用nn學習熔号。

FNN模型將embedding層用FM初始化稽鞭,即每個特征對應一個偏置項w_i和一個k維向量v_i。然后參數(shù)向量再隨著訓練不斷學習調整引镊。假設每個field的類別特征都只有一個1值朦蕴,其余為0值,即可進行one-hot編碼弟头,然后做embedding吩抓,Dense Layer里每個Field對應的參數(shù)就是該Field那個不為0的變量對應的FM里的偏置項w_i和k維隱向量v_i。簡單說模型第一層到第二層之間其實是普通的全連接層赴恨,而為0的輸入變量對Dense Layer里的隱單元值不做貢獻疹娶。
FNN模型結構
{z_i} = {\bf{W}}_0^i \cdot x[star{t_i}:en{d_i}] = \left( {{w_i},v_i^1,v_i^2,...,v_i^K} \right)
{{\bf{l}}_1} = \tanh \left( {{{\bf{W}}_1}{\bf{z}} + {{\bf}_1}} \right)
{{\bf{l}}_2} = \tanh \left( {{{\bf{W}}_2}{{\bf{l}}_1} + {{\bf伦连}_2}} \right)
\hat y = {\mathop{\rm sigmoid}\nolimits} \left( {{{\bf{W}}_3}{{\bf{l}}_2} + {{\bf蚓胸}_3}} \right)
損失函數(shù)(最小交叉熵)為:
L\left( {y,\hat y} \right) = - y\log \hat y - \left( {1 - y} \right)\log \left( {1 - \hat y} \right)

CCPM


簡介: 模型結構整體結構相對比較簡單挣饥,首先將特征映射到embedding稠密向量,然后經(jīng)過卷積神經(jīng)網(wǎng)絡抽取高維特征沛膳,最后通過pooling層抽取主要的高維信息。

PNN


簡介: FNN算法實際上是對特征embedding之后進行concatenate汛聚,再接FC锹安,雖然使用了激活函數(shù)增加了非線性,實際上是對特征進行了加權組合(add 操作)倚舀。PNN算法與FNN算法的區(qū)別在于PNN算法中間多了一層Product Layer層叹哭。其中z為embedding層的線性部分,p為embedding層的特征交叉部分,其他與FNN算法結構相同痕貌。
網(wǎng)絡結構
{{\bf{l}}_z} = \left( {{\bf{l}}_z^1,{\bf{l}}_z^2,...,{\bf{l}}_z^n,...,{\bf{l}}_z^{{D_1}}} \right),\;\;\;\;{\bf{l}}_z^n = {\bf{W}}_z^n \odot {\bf{z}}

{{\bf{l}}_p} = \left( {{\bf{l}}_p^1,{\bf{l}}_p^2,...,{\bf{l}}_p^n,...,{\bf{l}}_p^{{D_1}}} \right),\;\;\;{\bf{l}}_p^n = {\bf{W}}_p^n \odot {\bf{p}}

{{\bf{l}}_1} = {\mathop{\rm relu}\nolimits} \left( {{{\bf{l}}_z} + {{\bf{l}}_p} + {{\bf风罩}_1}} \right)

{{\bf{l}}_2} = {\mathop{\rm relu}\nolimits} \left( {{{\bf{W}}_2}{{\bf{l}}_1} + {{\bf}_2}} \right)

\hat y = \sigma \left( {{{\bf{W}}_3}{{\bf{l}}_2} + {b_3}} \right)

Product layer分為兩部分舵稠,其中z代表線性信號向量超升,而p代表二次信號向量。
1: Inner Product-based Neural Network
{\mathop{\rm g}\nolimits} \left( {{{\bf{f}}_i},{{\bf{f}}_j}} \right) = < {{\bf{f}}_i},{{\bf{f}}_j} >

哺徊,即用內積來表示特征的交叉室琢,類似于“且”的關系,{{\bf{f}}_i}為embedding向量落追。
2: Outer Product-based Neural Network
{\mathop{\rm g}\nolimits} \left( {{{\bf{f}}_i},{{\bf{f}}_j}} \right) = {{\bf{f}}_i}{\bf{f}}_j^{\rm{T}}盈滴,即用矩陣乘法來表示特征的交叉,類似于“和”的關系

Wide & Deep


簡介: 線性模型具有計算高效轿钠、可解釋性強等優(yōu)點巢钓,但是模型的泛化性差。深度學習模型對于長尾特征具有更高的泛化性疗垛,并且不需要大量的特征工程症汹。然而當交叉特征稀疏時,深度學習模型容易出現(xiàn)over-generalize继谚。本文提出同時對線性模型和深度模型聯(lián)合訓練烈菌,從而結合線性模型記憶性強、深度模型泛化性強的優(yōu)點花履。
網(wǎng)絡結構
1: The Wide Component
y = {{\bf{w}}^{\rm{T}}}{\bf{x}} + b

wide部分長處在于學習樣本中的高頻部分芽世,優(yōu)點是模型的記憶性好,對于樣本中出現(xiàn)過的高頻低階特征能夠用少量參數(shù)學習诡壁;缺點是模型的泛化能力差济瓢,例如對于沒有見過的ID類特征,模型學習能力較差
2: The Deep Component
{{\bf{a}}^{\left( {l + 1} \right)}} = {\mathop{\rm f}\nolimits} \left( {{{\bf{W}}^l}{{\bf{a}}^l} + {{\bf妹卿}^l}} \right)

其中旺矾,l代表第l層蔑鹦,{\mathop{\rm f}\nolimits}為激活函數(shù)。
deep部分長處在于學習樣本中的長尾部分箕宙,優(yōu)點是泛化能力強涡贱,對于少量出現(xiàn)過的樣本甚至沒有出現(xiàn)過的樣本都能做出預測(非零的embedding向量);缺點是模型對于低階特征的學習需要用較多參才能等同wide部分效果牡辽,而且泛化能力強某種程度上也可能導致過擬合出現(xiàn)badcase
3: Joint Training of Wide & Deep Model
{\bf{P}}\left( {{\rm{Y}} = 1|{\bf{x}}} \right) = \sigma \left( {{\bf{w}}_{wide}^{\rm{T}}\left[ {{\bf{x}},\Phi \left( {\bf{x}} \right)} \right] + {\bf{w}}_{deep}^T{{\bf{a}}^{{l_f}}} + b} \right)
其中,{\bf{w}}_{wide}為wide部分的權重,{\bf{w}}_{deep}為deep部分的權重宛篇,其中{\Phi}\left( {\bf{x}} \right)是指交叉特征值纱。

DeepFM


簡介: FM算法仍然屬于wide&deep架構京景,不過在wide部分做了改進星掰,采用FM替換linear layer,從而通過FM算法對交叉特征的計算能力提升模型的整體性能凤跑。其中inner product和deep network共享embedding feature爆安,因此模型能同時從原始特征中學習低階、高階特征仔引,并且不需要專業(yè)特征扔仓。
網(wǎng)絡結構
1:FM component
{{\mathop{\rm y}\nolimits}_{{\rm{FM}}}} = < w,x > + \sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n { < {{\bf{v}}_i},{{\bf{v}}_j} > {x_i} \cdot {x_j}} }

2:Deep component
{a^{l + 1}} = \sigma \left( {{{\bf{W}}^l}{{\bf{a}}^l} + {{\bf}^l}} \right)

3:combination output layer
\hat y = {\mathop{\rm sigmoid}\nolimits} \left( {{{\mathop{\rm y}\nolimits} _{{\rm{FM}}}} + {{\mathop{\rm y}\nolimits} _{{\rm{DNN}}}}} \right)

NFM


簡介: FNN肤寝、wide&deep当辐、DeepFM等算法在deep network部分都是對embedding之后的特征進行concatenate,未能充分進行特征交叉計算鲤看。本文NFM算法則是對embedding直接采用element-wise后sum起來做特征交叉缘揪,然后通過MLP直接將特征壓縮,最后concatenate linear部分和deep部分的特征义桂。
網(wǎng)絡結構
1: Bi-Interaction Layer
{{\mathop{\rm f}\nolimits}_{BI}}\left( {{{\bf{v}}_x}} \right) = \sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n {{x_i}{{\bf{v}}_i} \odot {x_j}} } {{\bf{v}}_j}

{{\mathop{\rm f}\nolimits}_{BI}}\left( {{{\bf{v}}_x}} \right) = \frac{1}{2}\left[ {{{\left( {\sum\limits_{i = 1}^n {{x_i}{{\bf{v}}_i}} } \right)}^2} - \sum\limits_{i = 1}^n {{{\left( {{x_i}{{\bf{v}}_i}} \right)}^2}} } \right]

其中找筝,\odot代表element-wise product,因此{{\mathop{\rm f}\nolimits}_{BI}}的維度等于\bf{v}的維度慷吊。
2:Hidden Layers
\begin{array}{l} {{\bf{z}}_1} = {\sigma_1}\left( {{{\bf{W}}_1}{{\mathop{\rm f}\nolimits}_{BI}}\left( {{{\bf{v}}_x}} \right) + {{\bf袖裕}_1}} \right)\\ {{\bf{z}}_2} = {\sigma_2}\left( {{{\bf{W}}_2}{{\bf{z}}_1} + {{\bf}_2}} \right)\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;......\\ {{\bf{z}}_L} = {\sigma_L}\left( {{{\bf{W}}_L}{{\bf{z}}_2} + {{\bf溉瓶}_L}} \right) \end{array}
3:Prediction Layer
{\mathop{\rm f}\nolimits} \left( {\bf{x}} \right) = {{\bf{h}}^{\rm{T}}}{{\bf{z}}_L}
\begin{array}{l} {{\hat y}_{NFM}}\left( {\bf{x}} \right) = {w_0} + \sum\limits_{i = 1}^m {{x_i}{w_i} + {{\bf{h}}^{\rm{T}}}{\sigma_L}\left( {{{\bf{W}}_L}\left( {...{\sigma_1}\left( {{{\bf{W}}_1}{{\mathop{\rm f}\nolimits}_{BI}}\left( {{{\bf{v}}_x}} \right) + {{\bf急鳄}_1}} \right)...} \right) + {{\bf}_L}} \right)} \end{array}

NFM算法可退化為FM算法堰酿,將向量\bf{h}置為全1的向量疾宏,即有:
\begin{array}{l} {{\hat y}_{NFM - 0}}\left( {\bf{x}} \right) = {w_0} + \sum\limits_{i = 1}^m {{x_i}{w_i} + {{\bf{h}}^{\rm{T}}}\sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n {{x_i}{{\bf{v}}_i} \odot {x_j}} } {{\bf{v}}_j}} \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\; = {w_0} + \sum\limits_{i = 1}^m {{x_i}{w_i} + \sum\limits_{i = 1}^n {\sum\limits_{j = i + 1}^n {\sum\limits_{f = 1}^k {{h_f}{v_{if}}{v_{jf}} \cdot {x_i}{x_j}} } } } \end{array}

DCN


簡介: 目前FM、FFM触创、DeepFM和PNN算法都只計算了2階交叉坎藐,對于更高維度的交叉特征只能通過deep部分去學習。因此作者提出了Deep&cross network,可以任意組合特征岩馍,而且不增加網(wǎng)絡參數(shù)碉咆。
網(wǎng)絡結構
1:embedding and stacking layer
將稀疏特征用embedding進行表示,比如:country=USA蛀恩,以一個稠密向量表示USA這個特征疫铜,然后將所有的特征concatenate為一個向量用于表示輸入。這里將dense特征和embedding特征一起concatenate双谆,然后做為模型的輸入块攒。
{{\bf{x}}_0} = \left[ {{\bf{x}}_{embed,1}^T,...,{\bf{x}}_{embed,k}^T,{\bf{x}}_{dense}^T} \right]

2: cross layer
借鑒于residual network的思想 ,在每一層網(wǎng)絡對特征進行交叉
{{\bf{x}}_{l + 1}} = {{\bf{x}}_0}{\bf{x}}_l^T{{\bf{w}}_l} + {{\bf佃乘}_l} + {{\bf{x}}_l} = {\mathop{\rm f}\nolimits} \left( {{{\bf{x}}_l},{{\bf{w}}_l},{{\bf}_l}} \right) + {{\bf{x}}_l}

3: deep layer
{{\bf{h}}_{l + 1}} = {\mathop{\rm f}\nolimits} \left( {{{\bf{w}}_l}{{\bf{h}}_l} + {{\bf驹尼}_l}} \right)

趣避,其中{\mathop{\rm f}\nolimits}(.)為relu激活函數(shù)。
4:combination output layer
將經(jīng)過cross layer的輸出x和經(jīng)過deep layer的輸出h進行concat得到最終的特征向量新翎。
p = \sigma \left( {\left[ {{\bf{x}}_{{L_1}}^T,{\bf{h}}_{{L_2}}^T} \right]{{\bf{W}}_{{\rm{logits}}}}} \right)

xDeepFM


簡介: DCN模型做特征交叉時采用的是特征內積程帕,我們知道inner product得到的是一個標量。
{{\bf{x}}_k} = {{\bf{x}}_0}{\bf{x}}_{k - 1}^{\mathop{\rm T}\nolimits} {{\bf{w}}_k} + {{\bf地啰}_k} + {{\bf{x}}_{k - 1}}

去掉偏執(zhí)項{{\bf愁拭}_k}后有
\begin{array}{l} {{\bf{x}}_{i + 1}} = {{\bf{x}}_0}{\bf{x}}_i^{\mathop{\rm T}\nolimits} {{\bf{w}}_{i + 1}} + {{\bf{x}}_i}\\ \;\;\;\;\; = {{\bf{x}}_0}\left( {{{\left( {{\alpha ^i}{{\bf{x}}_0}} \right)}^T}{{\bf{w}}_{i + 1}}} \right) + {\alpha ^i}{{\bf{x}}_0}\\ \;\;\;\;\; = {\alpha ^{i + 1}}{{\bf{x}}_0} \end{array}

\alpha是一個標量,因此多層之后{{\bf{x}}_{i + 1}}仍是{{\bf{x}}_0}與標量的乘積亏吝,并且特征交叉只是bit-wise級岭埠。
本文通過vector-wise級進行交叉計算,并且不會帶來過高的計算復雜度蔚鸥。從圖中可以看出惜论,整個模型由三部分組成,分別是線性層止喷、CIN(Compressed Interaction Network)和DNN馆类,整體結構仍然屬于wide&deep架構。
根據(jù)前一層隱層的狀態(tài){\bf{X}}^{(k-1)}和原特征矩陣{\bf{X}}^0弹谁,計算出一個中間結果{\bf{Z}}^{(k)}乾巧,它是一個三維的張量。


{\bf{X}}_{h,*}^k = \sum\limits_{i = 1}^{{{\rm{H}}_{k - 1}}} {\sum\limits_{j = 1}^m {{\bf{W}}_{ij}^{k,h}} } \left( {{\bf{X}}_{i,*}^{k - 1} \circ {\bf{X}}_{j,*}^0} \right)

其中预愤,m代表field個數(shù)沟于,{{\rm{H}}_{k - 1}}代表第k-1層的特征向量個數(shù),{\bf{W}}類似于CNN中的filter鳖粟,而矩陣外積之后的矩陣就是需要卷積的image社裆,{\bf{X}}_{h,*}^k就是一個feature map。
{\mathop{\rm p}\nolimits}_i^k = \sum\limits_{j = 1}^{\rm{D}} {{\bf{X}}_{i,j}^k}
其中向图,i \in \left[ {1,{{\rm{H}}_k}} \right]泳秀。這樣标沪,我們就得到一個pooling vector:{{\mathop{\rm p}\nolimits} ^k} = \left[ {{\mathop{\rm p}\nolimits} _1^k,{\mathop{\rm p}\nolimits} _2^k,...,{\mathop{\rm p}\nolimits} _{{H_K}}^k} \right]。hidden layers的所有polling vectors在連接到output units之前會被concatenated:{{\mathop{\rm \bf{p}}\nolimits} ^ + } = \left[ {{{\mathop{\rm \bf{p}}\nolimits} ^1},{{\mathop{\rm \bf{p}}\nolimits} ^2},...,{{\mathop{\rm \bf{p}}\nolimits} ^T}} \right]嗜傅,\rm{T}表示網(wǎng)絡的深度金句。

\hat y = \sigma \left( {{\bf{w}}_{{\rm{linear}}}^T{\bf{a}} + {\bf{w}}_{dnn}^T{\bf{x}}_{dnn}^k + {\bf{w}}_{cin}^T{{\bf{p}}^ + } + b} \right)

總結: 從LR到xDeepFM算法,模型的優(yōu)化主要在于從wide和deep兩方面去獲得更多更合理的交叉特征吕嘀。wide部分的優(yōu)化從ploy2违寞、FM、FFM偶房、AFM算法的二階交叉到DCN趁曼、xDeepFM的高階交叉;deep部分的優(yōu)化從FNN對embedding進行concatenate棕洋,到PNN對embedding進行inner product挡闰、outer product,再到NFM對embeding進行bi_interaction掰盘。為了獲得更好的效果摄悯,目前主流的深度學習算法大都采用wide&deep框架,同時結合wide部分和deep部分的優(yōu)點愧捕。
模型復雜度

model Number of Parameters
LR m
Poly2 m + H
FMs m + m * K
FFMs m + m * (n-1) * K
FwFMs m + m * K + n * (n-1)/2
AFM m + m * K + K * H1 + H1 * 2 + K
FNN 1 + n + n * k + (1 + f + f * k) * H1 + H1 * H2 + H2 * 1
IPNN 1 + n + n * k + (1 + f + f * k) * H1 + H1 * H2 + H2 * 1
OPNN 1 + n + n * k + (1 + f + f * k) * H1 + H1 * H2 + H2 * 1
Wide&deep 1 + n + n * k + f * k * H1 + H1 * H2 + H2
deepFM 1 + n + n * k + f * k * H1 + H1 * H2 + H2 * 1
NFM 1 + n + n * k + k * H1 + H1 * H2 + H2 * 1
DCN 1 + n + 2 * d * Lc + d * (m + 1) + m * (m + 1) * (Ld - 1) + 1 + d + m
xDeepFM 1 + n + k * H1 * f + H1 * H2 + H2 * 1 + H2 * (1 + H1 * f)

模型效果

DUPN


簡介: 前面列舉的算法都是針對單點數(shù)據(jù)奢驯,而用戶的行為序列一定程度上代表了用戶當前的興趣,但是行為序列中不是每一次行為都是同等重要的次绘。每一次行為對每一個用戶的重要程度都是不同的瘪阁,因此本文通過user對行為序列做attention計算得到一個user embedding,為了獲得更加通用的user embedding断盛,作者將該user embedding應用到多個任務做multi-task建模罗洗。
輸入item節(jié)點特征包含:

{\bf{h}} = \sum\limits_{t = 1}^N {{a_t}{{\bf{h}}_t}}

{a_t} = \frac{{\exp \left( {{\mathop{\rm attention}\nolimits} \left( {{{\bf{h}}_t},q,u,\omega } \right)} \right)}}{{\sum\nolimits_{t = 1}^T {\exp \left( {{\mathop{\rm attention}\nolimits} \left( {{{\bf{h}}_t},q,u,\omega } \right)} \right)} }}

attention是一個兩層的全連接層。

RIB


簡介: RIB模型和DUPN網(wǎng)絡結構類似于钢猛,不同之處在于attention計算伙菜。另外本文輸入特征中加入商品頁停留時間特征、用戶行為(點擊命迈、瀏覽贩绕、購買、加入購物車)和哪個模塊進入商品頁壶愤,具體特征如下:

Var Attribute Description
p_i Product ID SKU(Stock Keeping Unit)
c_i Category ID Product category
a_1 Home2Product Enter p_i from homepage
a_2 ShopList2Product Enter p_i from category page
a_3 Sale2Product Enter p_i from sale page
a_4 Cart2Product Enter p_i from carted page
a_5 SearchList2Product Enter p_i from searched results
a_6 Detail_comments In p_i comment module
a_7 Detail_specification In p_i specification module
a_8 Detail_bottom At the bottom
a_9 Cart Add p_i to cart
a_10 Order Order p_i
t_1 Dwell time 0 \sim9 seconds
t_2 Dwell time 10\sim24 seconds
t_3 Dwell time 25\sim60 seconds
t_4 Dwell time 61\sim120 seconds
t_5 Dwell time >120 seconds

其中attention計算為:
{{\bf{M}}_t} = \tanh \left( {{{\bf{w}}_m}{{\bf{h}}_t} + {b_m}} \right)
{\bf{at}}{{\bf{t}}_t} = {\mathop{\rm softmax}\nolimits} \left( {{{\bf{w}}_a}{{\bf{M}}_t} + {b_a}} \right)
{\bf{output}} = \sum\limits_{t = 1}^T {{\bf{at}}{{\bf{t}}_t}{{\bf{h}}_t}}

DIN


簡介: 與DUPN淑倾、RIB算法不同,本文并未采用GRU網(wǎng)絡對用戶歷史行為序列進行建模征椒,而是直接通過attention對行為序列進行加權娇哆。DIN模型通過當前item對用戶歷史行為數(shù)據(jù)進行加權求和計算用戶表征向量,這里通過dice激活函數(shù)計算歷史行為的權重。與候選廣告商品相關的行為賦予更高的權重碍讨,對用戶興趣的表示起主要作用治力。
1:用戶歷史行為向量
{{\bf{v}}_{\rm{U}}}\left( {\bf{A}} \right) = {\mathop{\rm f}\nolimits} \left( {{{\bf{v}}_A},{{\bf{e}}_1},{{\bf{e}}_2},...,{{\bf{e}}_H}} \right) = \sum\limits_{j - 1}^H {{\mathop{\rm a}\nolimits} \left( {{{\bf{e}}_j},{{\bf{v}}_A}} \right)} {{\bf{e}}_j} = \sum\limits_{j = 1}^{\rm{H}} {{{\bf{w}}_j}{{\bf{e}}_j}}

其中,\bf{e}代表用戶行為向量勃黍,\bf{v}代表廣告embedding向量宵统。
2:activation function
RELU激活函數(shù)從0點進行分割,大于0原樣輸出覆获,小于0輸出為0马澈,這樣將會導致模型更新緩慢,因此它的改進版PRELU弄息,又叫LeakyRELU的出現(xiàn)痊班,它修正了小于0輸出為0的問題,即使小于0也能更新網(wǎng)絡參數(shù)摹量,加快模型收斂辩块。但是它仍然是在0點進行分割,數(shù)據(jù)分割應該是隨著數(shù)據(jù)而自適應的變化荆永,因此作者提出了PRELU的改進版Dice。


3:自適應歸一化
不歸一化時国章,SGD只需要更新mini-batch中非零稀疏特征具钥。但是加入l2歸一化之后,每個mini-batch需要計算所有參數(shù)液兽,這將會導致計算負擔加重骂删。在CTR任務中,特征較為稀疏并且維度較高四啰,大部分特征只出現(xiàn)幾次宁玫,而小部分特征出現(xiàn)很多次,即長尾分布柑晒,這將會導致模型過擬合欧瘪。一個較為直接的方式,對出現(xiàn)次數(shù)較少的特征進行截斷匙赞,但是這樣將會導致信息的丟失佛掖,因此作者提出了一種根據(jù)特征頻次自適應的更新方式。
1:出現(xiàn)頻次較高的特征給予較小的正則化強度
2:出現(xiàn)頻次較高的特征給予較高的正則化強度
{{\bf{w}}_j} \leftarrow {{\bf{w}}_j} - \eta \left[ {\frac{1}{{\left| {{{\rm B}_m}} \right|}}\sum\limits_{\left( {x,y} \right) \in {{\rm B}_m}} {\frac{{\partial L\left( {p\left( x \right),y} \right)}}{{\partial {{\bf{w}}_j}}} + \lambda \frac{{{\alpha _{mj}}}}{{{n_j}}}{{\bf{w}}_j}} } \right]

DIEN


簡介: din算法對用戶歷史行為通過當前item計算attention涌庭,獲得最終的user embedding芥被,整個算法計算簡單,易于理解坐榆。但是模型忽略了用戶行為之間的關聯(lián)關系拴魄,因此本文用一個GRU網(wǎng)絡(興趣提取模塊)來計算用戶興趣的關聯(lián)關系。DUPN算法也是通過一個GRU網(wǎng)絡計算用戶歷史行為,然后通過一個additional attention進行加權求和獲得最終的user embedding匹中,本文思路與DUPN類似夏漱,整體結構仍然是通過GRU計算用戶歷史行為,然后通過一個attention對不同行為item進行加權求和职员,得到最終的user embedding麻蹋,不同之處在于本文通過另一個GRU對時序數(shù)據(jù)更新進行控制。
Auxiliary loss
{L_{aux}} = - \frac{1}{N}\left( {\sum\limits_{i = 1}^N {\sum\limits_t {\log \sigma \left( {{{\bf{h}}_t},{\bf{e}}_b^i\left[ {t + 1} \right]} \right)} } } \right) + \log \left( {1 - \sigma \left( {{{\bf{h}}_t},{\bf{\hat e}}_b^i\left[ {t + 1} \right]} \right)} \right)

為了充分利用用戶歷史不同的時刻行為焊切,作者在每個時刻加入auxiliary loss用于表征用戶的興趣(用戶點擊item為正扮授、隨機采樣候選集為負)。
Attention
{a_t} = \frac{{\exp \left( {{{\bf{h}}_t}{\bf{W}}{{\bf{e}}_a}} \right)}}{{\sum\nolimits_{j = 1}^T {\exp \left( {{{\bf{h}}_j}{\bf{W}}{{\bf{e}}_a}} \right)} }}

专肪,其中通過候選item和gru輸出計算attention權重刹勃。
Interest Evolving Layer
GRU with attentional input (AIGRU)
{{{\bf{i'}}}_t} = {{\bf{h}}_t}*{a_t}

Attention based GRU(AGRU)
{{{\bf{h'}}}_t} = \left( {1 - {a_t}} \right)*{{{\bf{h'}}}_{t - 1}} + {a_t}*{{{\bf{h'}}}_t}

GRU with attentional update gate (AUGRU)
{{{\bf{\tilde u'}}}_t} = {a_t}*{{{\bf{u'}}}_t}

{{{\bf{h'}}}_t} = \left( {1 - {{{\bf{\tilde u'}}}_t}} \right) \circ {{{\bf{h'}}}_{t - 1}} + {{{\bf{\tilde u'}}}_t} \circ {{{\bf{\tilde h'}}}_t}

我們常用attention與GRU輸出進行加權求和得到最終的特征表示,但是本文通過另一個GRU網(wǎng)絡對第一個GRU網(wǎng)絡的輸出進行建模嚎尤,通過attention計算得到當前item與歷史行為item的相關度荔仁,然后通過該相關度得分做節(jié)點更新約束,如果與當前相關性較弱芽死,則u趨近于零乏梁,狀態(tài)不更新,最后取最終的狀態(tài)輸出作為最終的特征輸出(作者嘗試了3種不同類型的Interest Evolving Layer )关贵。

參考文獻

[1]Factorization Machines
[2]Field-aware Factorization Machines for CTR Prediction
[3]Wide & Deep Learning for Recommender Systems
[4]Deep Learning over Multi-Field Categorical Data: A Case Study on User Response Prediction
[5]Product-based Neural Networks for User Response Prediction
[6]DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
[7]Neural Factorization Machines for Sparse Predictive Analytics
[8] Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks
[9]Deep & Cross Network for Ad Click Predictions
[10]Deep Interest Network for Click-Through Rate Prediction
[11]Field-aware Factorization Machines for CTR Prediction
[12]Field-weighted Factorization Machines for Click-Through Rate Prediction in Display Advertising
[13] Micro Behaviors: A New Perspective in E-commerce Recommender Systems
[14] xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末遇骑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子揖曾,更是在濱河造成了極大的恐慌落萎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炭剪,死亡現(xiàn)場離奇詭異练链,居然都是意外死亡,警方通過查閱死者的電腦和手機奴拦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門媒鼓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人错妖,你說我怎么就攤上這事隶糕。” “怎么了站玄?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵枚驻,是天一觀的道長。 經(jīng)常有香客問我株旷,道長再登,這世上最難降的妖魔是什么尔邓? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮锉矢,結果婚禮上梯嗽,老公的妹妹穿的比我還像新娘。我一直安慰自己沽损,他們只是感情好灯节,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绵估,像睡著了一般炎疆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上国裳,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天形入,我揣著相機與錄音,去河邊找鬼缝左。 笑死亿遂,一個胖子當著我的面吹牛,可吹牛的內容都是我干的渺杉。 我是一名探鬼主播蛇数,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼是越!你這毒婦竟也來了苞慢?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤英妓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后绍赛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔓纠,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年吗蚌,在試婚紗的時候發(fā)現(xiàn)自己被綠了腿倚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚯妇,死狀恐怖敷燎,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情箩言,我是刑警寧澤硬贯,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站陨收,受9級特大地震影響饭豹,放射性物質發(fā)生泄漏鸵赖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一拄衰、第九天 我趴在偏房一處隱蔽的房頂上張望它褪。 院中可真熱鬧,春花似錦翘悉、人聲如沸茫打。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽老赤。三九已至,卻和暖如春源葫,著一層夾襖步出監(jiān)牢的瞬間诗越,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工息堂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嚷狞,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓荣堰,卻偏偏與公主長得像床未,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子振坚,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容