簡(jiǎn)介
本文要介紹的Deep Interest Network(DIN)模型是阿里媽媽精準(zhǔn)定向檢索及基礎(chǔ)算法團(tuán)隊(duì)在2017年6月提出的噩咪。相比之前很多”學(xué)術(shù)風(fēng)“的深度學(xué)習(xí)模型淆攻,DIN模型更加具有業(yè)務(wù)氣息。它的應(yīng)用場(chǎng)景是阿里巴巴的電商廣告推薦,重點(diǎn)針對(duì)電子商務(wù)領(lǐng)域的CTR預(yù)估問(wèn)題,主要特點(diǎn)是充分利用、挖掘了用戶歷史行為數(shù)據(jù)中的信息敌卓,并且提出了兩項(xiàng)新穎的改進(jìn)措施來(lái)提升大規(guī)模稀疏數(shù)據(jù)下神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效率。
論文連接: Deep Interest Network for Click-Through Rate Prediction
背景知識(shí)
由于DIN是阿里巴巴針對(duì)其具體業(yè)務(wù)而提出的伶氢,所以有必要先介紹一下DIN的具體應(yīng)用場(chǎng)景趟径。在電商網(wǎng)站中,廣告天然就是商品鞍历。所以DIN模型其實(shí)是根據(jù)用戶的歷史行為數(shù)據(jù)來(lái)向其投放廣告舵抹。比如在淘寶app中,app向用戶推薦的商品或者店鋪信息劣砍,其實(shí)這些都屬于廣告信息惧蛹。下面的示意圖展示了這一過(guò)程:在這個(gè)過(guò)程中,用戶的歷史行為數(shù)據(jù)起到很重要的作用刑枝。阿里巴巴的廣告展示過(guò)程可以分為兩步:
- 在匹配階段香嗓,根據(jù)用戶的歷史行為數(shù)據(jù),通過(guò)協(xié)同過(guò)濾等算法等為用戶產(chǎn)生一個(gè)候選廣告列表装畅。
- 在排名階段靠娱,對(duì)于候選列表中的廣告,通過(guò)CTR算法來(lái)計(jì)算其分?jǐn)?shù)掠兄,選取分?jǐn)?shù)最高的若干個(gè)廣告呈現(xiàn)給用戶像云。
對(duì)于阿里巴巴而言,每天都有數(shù)以百萬(wàn)的用戶訪問(wèn)網(wǎng)站蚂夕,留下了海量的用戶行為數(shù)據(jù)迅诬,這些數(shù)據(jù)可以幫助更好地完善廣告展示的匹配和排名階段。值得注意的是婿牍,擁有海量行為數(shù)據(jù)的用戶群體的興趣是多樣化的侈贷。如何能夠從用戶行為數(shù)據(jù)中挖掘出最有價(jià)值的信息,并且精準(zhǔn)地進(jìn)行廣告展示等脂,投其所好呢俏蛮?
為此論文提出了DIN網(wǎng)絡(luò),對(duì)于不同的候選廣告上遥,模型需要充分考慮該廣告與用戶歷史行為的相關(guān)性搏屑,以便自適應(yīng)地學(xué)習(xí)用戶興趣的特征表達(dá)。下面舉個(gè)例子詳細(xì)說(shuō)明一下粉楚〔桥铮考慮一位年輕的母親最近瀏覽了呢子大衣、T恤、耳環(huán)抑党、手提袋、皮革手提包撵摆、以及孩子的外套等底靠。這些行為數(shù)據(jù)告訴了我們她的購(gòu)物興趣。當(dāng)她訪問(wèn)電商網(wǎng)站時(shí)特铝,系統(tǒng)會(huì)展示一些合適的廣告給她暑中,比如,一個(gè)新的手提包鲫剿。顯然雕凹,這個(gè)展示的廣告只匹配和激活了這個(gè)用戶的部分歷史行為數(shù)據(jù)汽摹,即之前購(gòu)買過(guò)的手提袋舟舒、皮革手提包等砍的。
總結(jié)一下床佳,有兩點(diǎn)需要注意:
- 用戶可能購(gòu)買過(guò)很多中不同類型的商品浪感,即用戶的興趣是多樣化的。
- 用戶是否會(huì)點(diǎn)擊系統(tǒng)推薦給她的商品捐名,僅僅取決于其歷史行為數(shù)據(jù)中的部分梅忌。
特征表示
CTR預(yù)估任務(wù)中的數(shù)據(jù)大部分以一種多分組的類別形式存在。舉個(gè)例子尸诽,[weekday=Friday, gender=Female,visited_cate_ids={Bag,Book}, ad_cate_id=Book]商蕴,通常的做法是通過(guò)embedding技術(shù)對(duì)這些高維稀疏特征進(jìn)行編碼格郁。常用的方式有one-hot編碼和multi-hot編碼自沧。前面提到的例子包含了4個(gè)組,對(duì)每個(gè)組進(jìn)行編碼后可以得到: 可以看到這其中既包含了one-hot編碼厨埋,也包含了multi-hot編碼邪媳。
Base Model
現(xiàn)有的DNN模型大部分遵循Embedding+MLP這一基礎(chǔ)架構(gòu),即先將原始高維稀疏的離散特征向量通過(guò)Embedding網(wǎng)絡(luò)映射到固定長(zhǎng)度的地位稠密向量耘沼,再對(duì)其進(jìn)行特征交叉等极颓,并將其作為多個(gè)MLP層的輸入,來(lái)擬合高階的非線性關(guān)系群嗤,最后再通過(guò)sigmoid函數(shù)映射到0~1之間菠隆,用來(lái)表示CTR。相比傳統(tǒng)的LR狂秘、GBDT骇径、FM模型等,這類的DNN模型能夠大大減少手工特征工程的工作量赃绊,并且可以學(xué)習(xí)到特征之間的非線性關(guān)系既峡。Base Model的結(jié)構(gòu)如下:
-
Embedding層
Embedding層的輸入是高維的二值化特征向量卦方,將其轉(zhuǎn)換到低維的稠密特征向量表示羊瘩。對(duì)于中的第個(gè)特征組,令代表第個(gè)Embedding字典盼砍,其中代表embedding向量尘吗,維度為。代表第個(gè)特征組的維度浇坐。其實(shí)embedding操作類似有查表操作睬捶,就是在中找出對(duì)應(yīng)的embedding向量。這里要注意的是近刘,對(duì)于one-hot和multi-hot編碼的特征擒贸,經(jīng)過(guò)embedding轉(zhuǎn)換之后,輸出的特征向量不一樣觉渴。- 如果是one-hot編碼介劫,并且第個(gè)元素,那么的embedding表示就是一個(gè)單個(gè)向量案淋。
- 如果是multi-hot編碼座韵,并且第個(gè)元素,并且哎迄,那么的embedding表示就是一個(gè)向量列表回右。
-
池化層和聚合層
由于不同的用戶擁有不同數(shù)量的行為數(shù)據(jù),而用戶行為數(shù)據(jù)是通過(guò)multi-hot進(jìn)行編碼的漱挚,這意味著不同用戶的歷史行為數(shù)據(jù)產(chǎn)生的Embedding列表長(zhǎng)度不同翔烁。而MLP層只能處理固定長(zhǎng)度的向量,因此通常的做法是將這些向量列表通過(guò)池化層來(lái)得到固定長(zhǎng)度的向量旨涝,如上圖中藍(lán)色陰影部分所示蹬屹,具體表達(dá)如下:embedding和pooling操作都是以一種分組的形式來(lái)講原始空間的稀疏特征向量轉(zhuǎn)換成多種固定長(zhǎng)度的向量表示慨默。然后所有的向量被聚合起來(lái)以獲得總體的特征表示。這種方式有它本身的缺陷弧腥,這也是DIN著重要改進(jìn)的地方厦取。
MLP層
MLP的作用就是學(xué)習(xí)這些特征向量之間的高階非線性關(guān)系。-
損失函數(shù)
基于深度學(xué)習(xí)的CTR模型廣泛使用的損失函數(shù)是 負(fù)對(duì)數(shù)似然函數(shù)(the negative log-likelihood function)Loglos管搪,使用標(biāo)簽作為目標(biāo)項(xiàng)來(lái)監(jiān)督整體的預(yù)測(cè)虾攻。
DIN
Base Model通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)擬合高階非線性關(guān)系铡买,減少了人工特征的工作量。但是它也有一些缺點(diǎn)霎箍,其中最明顯的就是Base Model的池化層和聚合層的操作奇钞。在對(duì)用戶歷史行為數(shù)據(jù)進(jìn)行處理時(shí), 由于每個(gè)用戶的歷史點(diǎn)擊個(gè)數(shù)是不相等的, 包含了許多興趣信息,由于MLP層只能接收固定的輸入漂坏,因此Base Model通過(guò)pooling操作將它們編碼成一個(gè)固定長(zhǎng)為維的向量景埃。而維度向量最多只能表達(dá)個(gè)獨(dú)立的興趣,而用戶的興趣可能不止顶别。的大小會(huì)對(duì)計(jì)算量產(chǎn)生明顯影響谷徙,一般用大的效果會(huì)更好,即擴(kuò)展向量的維度驯绎,但這樣會(huì)增加學(xué)習(xí)的參數(shù)和在有限的數(shù)據(jù)中有過(guò)擬合的風(fēng)險(xiǎn)蒂胞。
為了優(yōu)雅地解決這個(gè)問(wèn)題,作者提出DIN模型条篷。相比于Base Model,DIN的創(chuàng)新之處在于它引入了一個(gè)局部激活單元(local activation unit)蛤织,即保持了Base Model的整體架構(gòu)不變赴叹,又解決了Base Model針對(duì)不同廣告,對(duì)用戶歷史行為數(shù)據(jù)都同等對(duì)待的問(wèn)題指蚜。DIN模型如下:
Activation Unit的輸入包括用戶歷史商品和候選廣告的embedding向量,將這兩者以及它們之間的外積連接起來(lái)伞租,再通過(guò)激活函數(shù)和線性層得到歷史商品和候選廣告在embedding空間的關(guān)系權(quán)重贞谓。計(jì)算出每個(gè)歷史行為數(shù)據(jù)的權(quán)重之后,執(zhí)行一個(gè)帶權(quán)重的sum pooling即可葵诈÷阆遥可知祟同,DIN和Base Model的主要區(qū)別就在于是否使用了帶權(quán)重的poolng操作,而這個(gè)改進(jìn)取得了不俗的表現(xiàn)烁兰。
在這種計(jì)算方式下耐亏,最終的用戶的興趣向量會(huì)根據(jù)不同的廣告而變化。這就是“用戶興趣的千物千面”沪斟。比如广辰,一個(gè)用戶之前買過(guò)奶粉與泳衣,當(dāng)展示給她泳鏡時(shí)主之,顯然更會(huì)喚起她買過(guò)的泳衣的記憶择吊;而當(dāng)展示給她尿不濕時(shí),顯然更喚起她買過(guò)的奶粉的記憶槽奕。
這其實(shí)就是Attention在DIN中的使用了几睛。一般來(lái)說(shuō),做Attention的時(shí)候粤攒,需要對(duì)所有的分?jǐn)?shù)通過(guò)softmax做歸一化所森,這樣做有兩個(gè)好處,一是保證權(quán)重非負(fù)夯接,二是保證權(quán)重之和為1焕济。但是在DIN的論文中強(qiáng)調(diào),不對(duì)點(diǎn)擊序列的attention分?jǐn)?shù)做歸一化盔几,直接將分?jǐn)?shù)與對(duì)應(yīng)商品的embedding向量做加權(quán)和晴弃,目的在于保留用戶的興趣強(qiáng)度。例如逊拍,用戶的點(diǎn)擊序列中90%是衣服上鞠,10%是電子產(chǎn)品,有一件T恤和一部手機(jī)需要預(yù)測(cè)CTR芯丧,那么T恤會(huì)激活大部分的用戶行為芍阎,使得根據(jù)T恤計(jì)算出來(lái)的用戶行為向量在數(shù)值上更大。
訓(xùn)練技巧
Mini-batch Aware Regularization
考慮有g(shù)oods_id特征的大規(guī)模神經(jīng)網(wǎng)絡(luò)容易過(guò)擬合缨恒,因此加入正則化是必須的能曾。mini-batch中只有輸入稀疏特征不為0對(duì)應(yīng)的參數(shù)才更新,但加入L2正則就會(huì)導(dǎo)致每個(gè)mini-batch都會(huì)計(jì)算全部參數(shù)的L2-norm肿轨,這是不可接受的寿冕。本文提出mini-batch中instance的原始feature第維不為0,才會(huì)計(jì)算相應(yīng)的L2-norm椒袍,最后近似為至少有一個(gè)instance其維不為0才計(jì)算一次驼唱。公式推導(dǎo)如下(主要的參數(shù)來(lái)自embedding字典,統(tǒng)稱為W驹暑。下面為在所有sample上的L2正則計(jì)算):
Data Adaptive Activation Function
作者對(duì)傳統(tǒng)的激活函數(shù)ReLU做了改進(jìn),提出了Dice激活函數(shù)京办,過(guò)程如下:
-
ReLU和PReLU
上圖左邊是ReLU激活函數(shù)掀序,其在值大于0時(shí)候原樣輸出,小于0時(shí)輸出為0惭婿。這樣可以有效避免梯度消失等問(wèn)題不恭,但同時(shí)也會(huì)導(dǎo)致許多網(wǎng)絡(luò)節(jié)點(diǎn)更新緩慢。右邊是PReLU激活函數(shù)财饥,唯一的區(qū)別就是在值小于0時(shí)换吧,梯度依然存在,網(wǎng)絡(luò)的參數(shù)可以更新钥星,加快了網(wǎng)絡(luò)的收斂速度沾瓦。
- PReLU和Dice
盡管對(duì) ReLU進(jìn)行了修正得到了PRelu,但是仍然有一個(gè)問(wèn)題:即我們認(rèn)為分割點(diǎn)都是 0谦炒。但實(shí)際上贯莺,分割點(diǎn)應(yīng)該由數(shù)據(jù)決定。因此宁改,論文中提出了 Dice 激活函數(shù)乖篷,Dice 激活函數(shù)的全稱是 Data Dependent Activation Function,其形式如下:
代碼實(shí)踐
待補(bǔ)充