推薦系統(tǒng)排序算法--DIN模型

1、背景

深度學(xué)習(xí)在CTR預(yù)估領(lǐng)域已經(jīng)有了廣泛的應(yīng)用,常見的算法比如Wide&Deep,DeepFM等。這些方法一般的思路是:通過Embedding層,將高維離散特征轉(zhuǎn)換為固定長度的連續(xù)特征,然后通過多個全聯(lián)接層,最后通過一個sigmoid函數(shù)轉(zhuǎn)化為0-1值,代表點擊的概率。即Sparse Features -> Embedding Vector -> MLPs -> Sigmoid -> Output.

這種方法的優(yōu)點在于:通過神經(jīng)網(wǎng)絡(luò)可以擬合高階的非線性關(guān)系,同時減少了人工特征的工作量。

不過,阿里的研究者們通過觀察收集到的線上數(shù)據(jù),發(fā)現(xiàn)了用戶行為數(shù)據(jù)中有兩個很重要的特性:

Diversity:用戶在瀏覽電商網(wǎng)站的過程中顯示出的興趣是十分多樣性的。

Local activation: 由于用戶興趣的多樣性,只有部分歷史數(shù)據(jù)會影響到當(dāng)次推薦的物品是否被點擊,而不是所有的歷史記錄。

這兩種特性是密不可分的。

舉個簡單的例子:

Diversity體現(xiàn)在年輕的母親的歷史記錄中體現(xiàn)的興趣十分廣泛,涵蓋羊毛衫、手提袋、耳環(huán)、童裝、運動裝等等。而愛好游泳的人同樣興趣廣泛,歷史記錄涉及浴裝、旅游手冊、踏水板、馬鈴薯、冰激凌、堅果等等。

Local activation體現(xiàn)在,當(dāng)我們給愛好游泳的人推薦goggle(護目鏡)時,跟他之前是否購買過薯片、書籍、冰激凌的關(guān)系就不大了,而跟他游泳相關(guān)的歷史記錄如游泳帽的關(guān)系就比較密切。

針對上面提到的用戶行為中存在的兩種特性,阿里將其運用于自身的推薦系統(tǒng)中,推出了深度興趣網(wǎng)路DIN,接下來,我們就一起來看一下模型的一些實現(xiàn)細節(jié),然后我們會給出一個簡化版的tensorflow實現(xiàn)。

2、模型設(shè)計

整體框架

我們先來看一下推薦系統(tǒng)的整體框架:

1、架構(gòu)

整個流程可以描述為:

1.檢查用戶歷史行為數(shù)據(jù)

2.使用matching module產(chǎn)生候選ads。

3.通過ranking module做point-wise的排序,即得到每個候選ads的點擊概率,并根據(jù)概率排序得到推薦列表。

4.記錄下用戶在當(dāng)前展示廣告下的反應(yīng)(點擊與否),作為label。

特征設(shè)計

本文將所涉及到的特征分為四個部分:用戶特征、用戶行為特征、廣告特征、上下文特征,具體如下:

2、特征

其中,用戶行為特征是multi-hot的,即多值離散特征。針對這種特征,由于每個涉及到的非0值個數(shù)是不一樣的,常見的做法就是將id轉(zhuǎn)換成embedding之后,加一層pooling層,比如average-pooling,sum-pooling,max-pooling。DIN中使用的是weighted-sum,其實就是加權(quán)的sum-pooling,權(quán)重經(jīng)過一個activation unit計算得到。這里我們后面還會再介紹到。

BaseModel

在介紹DIN之前,我們先來看一下一個基準(zhǔn)模型,結(jié)構(gòu)如下:

3、基準(zhǔn)模型

這里element-wise的意思其實就是元素級別的加減,同時,可不要忽略廣播的存在喲。一個元素和一個向量相乘,也可以看作element-wise的,因為這個元素會廣播成和向量一樣的長度嘛,嘻嘻。

可以看到,Base Model首先吧one-hot或multi-hot特征轉(zhuǎn)換為特定長度的embedding,作為模型的輸入,然后經(jīng)過一個DNN的part,得到最終的預(yù)估值。特別地,針對multi-hot的特征,做了一次element-wise+的操作,這里其實就是sum-pooling,這樣,不管特征中有多少個非0值,經(jīng)過轉(zhuǎn)換之后的長度都是一樣的!

Deep Interest Network

Base Model有一個很大的問題,它對用戶的歷史行為是同等對待的,沒有做任何處理,這顯然是不合理的。一個很顯然的例子,離現(xiàn)在越近的行為,越能反映你當(dāng)前的興趣。因此,對用戶歷史行為基于Attention機制進行一個加權(quán),阿里提出了深度興趣網(wǎng)絡(luò)(Deep Interest Network),先來看一下模型結(jié)構(gòu):

4、DIN模型

Attention機制簡單的理解就是,針對不同的廣告,用戶歷史行為與該廣告的權(quán)重是不同的。假設(shè)用戶有ABC三個歷史行為,對于廣告D,那么ABC的權(quán)重可能是0.8、0.1、0.1;對于廣告E,那么ABC的權(quán)重可能是0.3、0.6、0.1。這里的權(quán)重,就是Attention機制即上圖中的Activation Unit所需要學(xué)習(xí)的。

為什么要引入這一個機制呢?難道僅僅是通過觀察歷史數(shù)據(jù)拍腦袋決定的么?當(dāng)然不是,如果不用Local activation的話,將會出現(xiàn)下面的情況:假設(shè)用戶的興趣的Embedding是V_u,候選廣告的Embedding是V_a,用戶興趣和候選的廣告的相關(guān)性可以寫作F(u,a)=V_u *V_a。如果沒有Local activation機制的話,那么同一個用戶對于不同的廣告,V_u都是相同的。舉例來說,如果有兩個廣告A和B,用戶興趣和A,B的相似性都很高,那么在V_aV_b連線上的廣告都會有很高的相似性。這樣的限制使得模型非常難學(xué)習(xí)到有效的用戶和廣告的embedidng表示。

在加入Activation Unit之后,用戶的興趣表示計算如下:

? ??????????????????V_u = f(V_a) = \sum_{i=1}^N w_i * V_i = \sum_{i=1}^N g(V_i, V_a)* V_i

其中,V_i表示behaviorI_id i的嵌入向量,比如good_id,shop_id等。V_u是所有behavior_ids的加權(quán)和,表示的是用戶興趣;V_a是候選廣告的嵌入向量;W_i是候選廣告影響著每個behavior_id的權(quán)重,也就是Local Activation。w_i通過Activation Unit計算得出,這一塊用函數(shù)去擬合,表示為 g(V_i, V_a)。

3、模型細節(jié)

3.1 評價指標(biāo)GAUC

模型使用的評價指標(biāo)是GAUC,我們先來看一下GAUC的計算公式:

? ??????????????????GAUC = \frac{\sum\nolimits_{i=1}^n w_i*AUC_i }{\sum\nolimits_{i=1}^n w_i}  = \frac{\sum\nolimits_{i=1}^n impression_i * AUC_i }{\sum\nolimits_{i=1}^n impression_i}

我們首先要肯定的是,AUC是要分用戶看的,我們的模型的預(yù)測結(jié)果,只要能夠保證對每個用戶來說,他想要的結(jié)果排在前面就好了。

假設(shè)有兩個用戶A和B,每個用戶都有10個商品,10個商品中有5個是正樣本,我們分別用TA,TB,F(xiàn)A,F(xiàn)B來表示兩個用戶的正樣本和負樣本。也就是說,20個商品中有10個是正樣本。假設(shè)模型預(yù)測的結(jié)果大小排序依次為TA,F(xiàn)A,TB,F(xiàn)B。如果把兩個用戶的結(jié)果混起來看,AUC并不是很高,因為有5個正樣本排在了后面,但是分開看的話,每個用戶的正樣本都排在了負樣本之前,AUC應(yīng)該是1。顯然,分開看更容易體現(xiàn)模型的效果,這樣消除了用戶本身的差異。

但是上文中所說的差異是在用戶點擊數(shù)即樣本數(shù)相同的情況下說的。還有一種差異是用戶的展示次數(shù)或者點擊數(shù),如果一個用戶有1個正樣本,10個負樣本,另一個用戶有5個正樣本,50個負樣本,這種差異同樣需要消除。那么GAUC的計算,不僅將每個用戶的AUC分開計算,同時根據(jù)用戶的展示數(shù)或者點擊數(shù)來對每個用戶的AUC進行加權(quán)處理。進一步消除了用戶偏差對模型的影響。通過實驗證明,GAUC確實是一個更加合理的評價指標(biāo)。

3.2 Dice激活函數(shù)

從Relu到PRelu

Relu激活函數(shù)在值大于0時原樣輸出,小于0時輸出為0。這樣的話導(dǎo)致了許多網(wǎng)絡(luò)節(jié)點的更新緩慢。因此又了PRelu,也叫Leaky Relu,形式如下:

5、PRelu

這樣,及時值小于0,網(wǎng)絡(luò)的參數(shù)也得以更新,加快了收斂速度。

從PReLU到Dice

盡管對Relu進行了修正得到了PRelu,但是仍然有一個問題,即我們認(rèn)為分割點都是0,但實際上,分割點應(yīng)該由數(shù)據(jù)決定,因此文中提出了Dice激活函數(shù)

Dice激活函數(shù)的全稱是Data Dependent Activation Function,形式如下:

? ??????????????????y_i = a_i(1-p_i)y_i + p_iy_i

? ??????????????????p_i = \frac{1}{1+e^{-\frac{y_i - E[y_i]}{\sqrt{v \alpha \tau [y_i]} +\varepsilon  } }}

其中,期望和方差的計算如下:

? ??????????????????{E[y_i]_{t+1}}^ {\prime} ={E[y_i]_t}^{\prime} + \alpha {E[y_i]}_{t+1}

? ??????????????{V\alpha \tau [y_i]_{t+1}}^ {\prime} ={V\alpha \tau [y_i]_t}^{\prime} + \alpha {V\alpha \tau [y_i]}_{t+1}

可也看到,每一個yi對應(yīng)了一個概率值pi。pi的計算主要分為兩步:將yi進行標(biāo)準(zhǔn)化和進行sigmoid變換。

3.3 自適應(yīng)正則 Adaptive Regularization

CTR中輸入稀疏而且維度高,通常的做法是加入L1、L2、Dropout等防止過擬合。但是論文中嘗試后效果都不是很好。用戶數(shù)據(jù)符合長尾定律long-tail law,也就是說很多的feature id只出現(xiàn)了幾次,而一小部分feature id出現(xiàn)很多次。這在訓(xùn)練過程中增加了很多噪聲,并且加重了過擬合。

對于這個問題一個簡單的處理辦法就是:直接去掉出現(xiàn)次數(shù)比較少的feature id。但是這樣就人為的丟掉了一些信息,導(dǎo)致模型更加容易過擬合,同時閾值的設(shè)定作為一個新的超參數(shù),也是需要大量的實驗來選擇的。

因此,阿里提出了自適應(yīng)正則的做法,即:

1.針對feature id出現(xiàn)的頻率,來自適應(yīng)的調(diào)整他們正則化的強度;

2.對于出現(xiàn)頻率高的,給與較小的正則化強度;

3.對于出現(xiàn)頻率低的,給予較大的正則化強度。

計算公式如下:

? ??????????????????I_i = \left\{\begin{array}{cc} 
		1, \exists (x_j,y_j)\in B,s.t.[x_j]_i \neq 0\\0, other\ values 
	\end{array}\right.

? ??????????????????w_i \leftarrow w_i - \eta [\frac{1}  \sum_{(x_j,y_j)\in B} \frac{\partial L(f(x_j),y_j)}{\partial  w_i} +\lambda \frac{1}{n_i}w_iI_i   ]

4、效果展示

下圖是對Local Activation效果的一個展示,可以看到,對于候選的廣告是一件衣服的時候,用戶歷史行為中跟衣服相關(guān)的權(quán)重較高,而非衣服的部分,權(quán)重較低。

6、Local activation

下圖是對使用不同正則項的結(jié)果進行的展示,可以發(fā)現(xiàn),使用自適應(yīng)正則的情況下,模型的驗證集誤差和驗證集GAUC均是最好的。

7、驗證自適應(yīng)正則

下圖對比了Base Model和DIN的實驗結(jié)果,可以看到,DIN模型在加入Dice激活函數(shù)以及自適應(yīng)正則之后,模型的效果有了一定的提升:

8、DIN與基準(zhǔn)模型比較

參考文獻:

論文:Deep Interest Network for Click-Through Rate Prediction

推薦系統(tǒng)遇上深度學(xué)習(xí)(十八)--探秘阿里之深度興趣網(wǎng)絡(luò)(DIN)淺析及實現(xiàn)

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

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

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