綜述:機(jī)器學(xué)習(xí)在CTR中的應(yīng)用

背景:設(shè)計(jì)個(gè)性化信息檢索時(shí),用戶行為預(yù)測扮演著重要的作用。用戶行為預(yù)測的目標(biāo)是估計(jì)用戶點(diǎn)擊、購買等行為的概率,而該概率代表了用戶對該item的興趣程度,用戶之前的行為同時(shí)也影響著我們隨后的排序。如何根據(jù)用戶的query選擇正確的ads并對其進(jìn)行合理的排序,不僅極大的影響著用戶點(diǎn)擊、瀏覽等行為,而且對于搜索廣告的收益也起到重要的作用。
IR任務(wù)中,數(shù)據(jù)大部分為multi-field類型,例如:[weekday=Tuesday, Gender=Male, City=London],我們可以通過one-hot對其進(jìn)行編碼,映射為高維稀疏特征。例如,我們可以將上述特征進(jìn)行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}為特征權(quán)重,b為偏差。

Degree-2 Polynomial (Poly2)

簡介: LR模型具有計(jì)算高效、可解釋性強(qiáng)等優(yōu)點(diǎn),但是需要人工抽取交叉特征。而交叉特征對于模型性能起到重要的作用,相比LR線性模型,Poly2設(shè)計(jì)了特征自動交叉,從而自動計(jì)算交叉特征提升模型性能。
{\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編碼為一個(gè)自然數(shù)的函數(shù)。

FM

簡介: Poly2模型雖然能夠自動抽取交叉特征,但是當(dāng)特征維度較高并且稀疏時(shí),權(quán)重\bf{w}難以收斂。針對該問題作者提出了FM算法,其中正定矩陣\bf{w},可以通過特征向量空間\bf{v}漸進(jìn)表示。
{\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}} }是一個(gè)無對角線的上三角矩陣,直接可以計(jì)算整個(gè)矩陣然后減去對角線。

FFM


簡介: FM算法將所有特征歸結(jié)到一個(gè)field,而FFM算法則按照field對不同特征進(jìn)行區(qū)分,主要體現(xiàn)在交叉項(xiàng)中。在FM算法中user這個(gè)特征對應(yīng)的latent vector不論是對price、genre還是movie都是相同的,而FFM算法中則對特征進(jìn)行歸類,latent vector會區(qū)分交叉filed,模型參數(shù)個(gè)數(shù)n(n-1)/2??梢钥闯鰜鞦M算法時(shí)FFM算法的一個(gè)特例,但是隨著FFM算法對latent vector的細(xì)化,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}對應(yīng)的field,{\bf{w}}_{{j_1},{f_2}}代表{j_1}{f_2}交叉的權(quán)重。

FwFMs


簡介: FFM算法按照field對latent vector進(jìn)行區(qū)分,從而提升模型的效果。但是FFM算法沒有區(qū)分不同特征交叉的重要性,本文針對不同特征交叉賦予不同的權(quán)重,從而達(dá)到更精細(xì)的計(jì)算交叉特征的目的。
網(wǎng)絡(luò)結(jié)構(gòu)
{\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算法類似,目標(biāo)都是希望通過對不同交叉特征采用不同權(quán)重,從而減少引入噪聲提升模型性能。

AFM的embedding層后,先讓f個(gè)field的特征做了element-wise product后,得到f*(f-1)/2個(gè)交叉項(xiàng),然后AFM引入了一個(gè)Attention Net,認(rèn)為這些交叉特征項(xiàng)每個(gè)對結(jié)果的貢獻(xiàn)是不同的。例如x_ix_j的權(quán)重重要度,用a_{ij}來表示。從這個(gè)角度來看,其實(shí)AFM其實(shí)就是個(gè)加權(quán)累加的過程。
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模型結(jié)構(gòu)
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īng)用在工業(yè)場景中,但是這些模型對于抽取高階特征顯得無能為力。深度模型可以學(xué)習(xí)高階復(fù)雜的交叉特征,對于提升模型性能有著重要的作用。由于CTR中大部分特征是離散、高維且稀疏的,需要embedding后才能用nn學(xué)習(xí)。

FNN模型將embedding層用FM初始化,即每個(gè)特征對應(yīng)一個(gè)偏置項(xiàng)w_i和一個(gè)k維向量v_i。然后參數(shù)向量再隨著訓(xùn)練不斷學(xué)習(xí)調(diào)整。假設(shè)每個(gè)field的類別特征都只有一個(gè)1值,其余為0值,即可進(jìn)行one-hot編碼,然后做embedding,Dense Layer里每個(gè)Field對應(yīng)的參數(shù)就是該Field那個(gè)不為0的變量對應(yīng)的FM里的偏置項(xiàng)w_i和k維隱向量v_i。簡單說模型第一層到第二層之間其實(shí)是普通的全連接層,而為0的輸入變量對Dense Layer里的隱單元值不做貢獻(xiàn)。
FNN模型結(jié)構(gòu)
{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


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

PNN


簡介: FNN算法實(shí)際上是對特征embedding之后進(jìn)行concatenate,再接FC,雖然使用了激活函數(shù)增加了非線性,實(shí)際上是對特征進(jìn)行了加權(quán)組合(add 操作)。PNN算法與FNN算法的區(qū)別在于PNN算法中間多了一層Product Layer層。其中z為embedding層的線性部分,p為embedding層的特征交叉部分,其他與FNN算法結(jié)構(gòu)相同。
網(wǎng)絡(luò)結(jié)構(gòu)
{{\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} >

,即用內(nèi)積來表示特征的交叉,類似于“且”的關(guān)系,{{\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}},即用矩陣乘法來表示特征的交叉,類似于“和”的關(guān)系

Wide & Deep


簡介: 線性模型具有計(jì)算高效、可解釋性強(qiáng)等優(yōu)點(diǎn),但是模型的泛化性差。深度學(xué)習(xí)模型對于長尾特征具有更高的泛化性,并且不需要大量的特征工程。然而當(dāng)交叉特征稀疏時(shí),深度學(xué)習(xí)模型容易出現(xiàn)over-generalize。本文提出同時(shí)對線性模型和深度模型聯(lián)合訓(xùn)練,從而結(jié)合線性模型記憶性強(qiáng)、深度模型泛化性強(qiáng)的優(yōu)點(diǎn)。
網(wǎng)絡(luò)結(jié)構(gòu)
1: The Wide Component
y = {{\bf{w}}^{\rm{T}}}{\bf{x}} + b

wide部分長處在于學(xué)習(xí)樣本中的高頻部分,優(yōu)點(diǎn)是模型的記憶性好,對于樣本中出現(xiàn)過的高頻低階特征能夠用少量參數(shù)學(xué)習(xí);缺點(diǎn)是模型的泛化能力差,例如對于沒有見過的ID類特征,模型學(xué)習(xí)能力較差
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部分長處在于學(xué)習(xí)樣本中的長尾部分,優(yōu)點(diǎn)是泛化能力強(qiáng),對于少量出現(xiàn)過的樣本甚至沒有出現(xiàn)過的樣本都能做出預(yù)測(非零的embedding向量);缺點(diǎn)是模型對于低階特征的學(xué)習(xí)需要用較多參才能等同wide部分效果,而且泛化能力強(qiáng)某種程度上也可能導(dǎo)致過擬合出現(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部分的權(quán)重,{\bf{w}}_{deep}為deep部分的權(quán)重,其中{\Phi}\left( {\bf{x}} \right)是指交叉特征。

DeepFM


簡介: FM算法仍然屬于wide&deep架構(gòu),不過在wide部分做了改進(jìn),采用FM替換linear layer,從而通過FM算法對交叉特征的計(jì)算能力提升模型的整體性能。其中inner product和deep network共享embedding feature,因此模型能同時(shí)從原始特征中學(xué)習(xí)低階、高階特征,并且不需要專業(yè)特征。
網(wǎng)絡(luò)結(jié)構(gòu)
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之后的特征進(jìn)行concatenate,未能充分進(jìn)行特征交叉計(jì)算。本文NFM算法則是對embedding直接采用element-wise后sum起來做特征交叉,然后通過MLP直接將特征壓縮,最后concatenate linear部分和deep部分的特征。
網(wǎng)絡(luò)結(jié)構(gòu)
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算法都只計(jì)算了2階交叉,對于更高維度的交叉特征只能通過deep部分去學(xué)習(xí)。因此作者提出了Deep&cross network,可以任意組合特征,而且不增加網(wǎng)絡(luò)參數(shù)。
網(wǎng)絡(luò)結(jié)構(gòu)
1:embedding and stacking layer
將稀疏特征用embedding進(jìn)行表示,比如:country=USA,以一個(gè)稠密向量表示USA這個(gè)特征,然后將所有的特征concatenate為一個(gè)向量用于表示輸入。這里將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)絡(luò)對特征進(jìn)行交叉
{{\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進(jìn)行concat得到最終的特征向量。
p = \sigma \left( {\left[ {{\bf{x}}_{{L_1}}^T,{\bf{h}}_{{L_2}}^T} \right]{{\bf{W}}_{{\rm{logits}}}}} \right)

xDeepFM


簡介: DCN模型做特征交叉時(shí)采用的是特征內(nèi)積,我們知道inner product得到的是一個(gè)標(biāo)量。
{{\bf{x}}_k} = {{\bf{x}}_0}{\bf{x}}_{k - 1}^{\mathop{\rm T}\nolimits} {{\bf{w}}_k} + {{\bf}_k} + {{\bf{x}}_{k - 1}}

去掉偏執(zhí)項(xiàng){{\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是一個(gè)標(biāo)量,因此多層之后{{\bf{x}}_{i + 1}}仍是{{\bf{x}}_0}與標(biāo)量的乘積,并且特征交叉只是bit-wise級。
本文通過vector-wise級進(jìn)行交叉計(jì)算,并且不會帶來過高的計(jì)算復(fù)雜度。從圖中可以看出,整個(gè)模型由三部分組成,分別是線性層、CIN(Compressed Interaction Network)和DNN,整體結(jié)構(gòu)仍然屬于wide&deep架構(gòu)。
根據(jù)前一層隱層的狀態(tài){\bf{X}}^{(k-1)}和原特征矩陣{\bf{X}}^0,計(jì)算出一個(gè)中間結(jié)果{\bf{Z}}^{(k)},它是一個(gè)三維的張量。


{\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個(gè)數(shù),{{\rm{H}}_{k - 1}}代表第k-1層的特征向量個(gè)數(shù),{\bf{W}}類似于CNN中的filter,而矩陣外積之后的矩陣就是需要卷積的image,{\bf{X}}_{h,*}^k就是一個(gè)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]。這樣,我們就得到一個(gè)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)絡(luò)的深度。

\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)

總結(jié): 從LR到xDeepFM算法,模型的優(yōu)化主要在于從wide和deep兩方面去獲得更多更合理的交叉特征。wide部分的優(yōu)化從ploy2、FM、FFM、AFM算法的二階交叉到DCN、xDeepFM的高階交叉;deep部分的優(yōu)化從FNN對embedding進(jìn)行concatenate,到PNN對embedding進(jìn)行inner product、outer product,再到NFM對embeding進(jìn)行bi_interaction。為了獲得更好的效果,目前主流的深度學(xué)習(xí)算法大都采用wide&deep框架,同時(shí)結(jié)合wide部分和deep部分的優(yōu)點(diǎn)。
模型復(fù)雜度

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


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

{\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是一個(gè)兩層的全連接層。

RIB


簡介: RIB模型和DUPN網(wǎng)絡(luò)結(jié)構(gòu)類似于,不同之處在于attention計(jì)算。另外本文輸入特征中加入商品頁停留時(shí)間特征、用戶行為(點(diǎn)擊、瀏覽、購買、加入購物車)和哪個(gè)模塊進(jìn)入商品頁,具體特征如下:

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計(jì)算為:
{{\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)絡(luò)對用戶歷史行為序列進(jìn)行建模,而是直接通過attention對行為序列進(jìn)行加權(quán)。DIN模型通過當(dāng)前item對用戶歷史行為數(shù)據(jù)進(jìn)行加權(quán)求和計(jì)算用戶表征向量,這里通過dice激活函數(shù)計(jì)算歷史行為的權(quán)重。與候選廣告商品相關(guān)的行為賦予更高的權(quán)重,對用戶興趣的表示起主要作用。
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點(diǎn)進(jìn)行分割,大于0原樣輸出,小于0輸出為0,這樣將會導(dǎo)致模型更新緩慢,因此它的改進(jìn)版PRELU,又叫LeakyRELU的出現(xiàn),它修正了小于0輸出為0的問題,即使小于0也能更新網(wǎng)絡(luò)參數(shù),加快模型收斂。但是它仍然是在0點(diǎn)進(jìn)行分割,數(shù)據(jù)分割應(yīng)該是隨著數(shù)據(jù)而自適應(yīng)的變化,因此作者提出了PRELU的改進(jìn)版Dice。


3:自適應(yīng)歸一化
不歸一化時(shí),SGD只需要更新mini-batch中非零稀疏特征。但是加入l2歸一化之后,每個(gè)mini-batch需要計(jì)算所有參數(shù),這將會導(dǎo)致計(jì)算負(fù)擔(dān)加重。在CTR任務(wù)中,特征較為稀疏并且維度較高,大部分特征只出現(xiàn)幾次,而小部分特征出現(xiàn)很多次,即長尾分布,這將會導(dǎo)致模型過擬合。一個(gè)較為直接的方式,對出現(xiàn)次數(shù)較少的特征進(jìn)行截?cái)?,但是這樣將會導(dǎo)致信息的丟失,因此作者提出了一種根據(jù)特征頻次自適應(yīng)的更新方式。
1:出現(xiàn)頻次較高的特征給予較小的正則化強(qiáng)度
2:出現(xiàn)頻次較高的特征給予較高的正則化強(qiáng)度
{{\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算法對用戶歷史行為通過當(dāng)前item計(jì)算attention,獲得最終的user embedding,整個(gè)算法計(jì)算簡單,易于理解。但是模型忽略了用戶行為之間的關(guān)聯(lián)關(guān)系,因此本文用一個(gè)GRU網(wǎng)絡(luò)(興趣提取模塊)來計(jì)算用戶興趣的關(guān)聯(lián)關(guān)系。DUPN算法也是通過一個(gè)GRU網(wǎng)絡(luò)計(jì)算用戶歷史行為,然后通過一個(gè)additional attention進(jìn)行加權(quán)求和獲得最終的user embedding,本文思路與DUPN類似,整體結(jié)構(gòu)仍然是通過GRU計(jì)算用戶歷史行為,然后通過一個(gè)attention對不同行為item進(jìn)行加權(quán)求和,得到最終的user embedding,不同之處在于本文通過另一個(gè)GRU對時(shí)序數(shù)據(jù)更新進(jìn)行控制。
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)

為了充分利用用戶歷史不同的時(shí)刻行為,作者在每個(gè)時(shí)刻加入auxiliary loss用于表征用戶的興趣(用戶點(diǎn)擊item為正、隨機(jī)采樣候選集為負(fù))。
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輸出計(jì)算attention權(quán)重。
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輸出進(jìn)行加權(quán)求和得到最終的特征表示,但是本文通過另一個(gè)GRU網(wǎng)絡(luò)對第一個(gè)GRU網(wǎng)絡(luò)的輸出進(jìn)行建模,通過attention計(jì)算得到當(dāng)前item與歷史行為item的相關(guān)度,然后通過該相關(guān)度得分做節(jié)點(diǎn)更新約束,如果與當(dāng)前相關(guān)性較弱,則u趨近于零,狀態(tài)不更新,最后取最終的狀態(tài)輸出作為最終的特征輸出(作者嘗試了3種不同類型的Interest Evolving Layer )。

參考文獻(xiàn)

[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

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容