推薦系統(tǒng)之DIN模型原理以及代碼實(shí)踐

簡(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ò)程:
淘寶推薦過(guò)程

在這個(gè)過(guò)程中,用戶的歷史行為數(shù)據(jù)起到很重要的作用刑枝。阿里巴巴的廣告展示過(guò)程可以分為兩步:

  1. 在匹配階段香嗓,根據(jù)用戶的歷史行為數(shù)據(jù),通過(guò)協(xié)同過(guò)濾等算法等為用戶產(chǎn)生一個(gè)候選廣告列表装畅。
  2. 在排名階段靠娱,對(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)需要注意:

  1. 用戶可能購(gòu)買過(guò)很多中不同類型的商品浪感,即用戶的興趣是多樣化的。
  2. 用戶是否會(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編碼邪媳。

下面給出DIN模型的輸入數(shù)據(jù)格式,總共包含4個(gè)組荡陷,分別是用戶畫像特征雨效、用戶行為特征、廣告特征废赞、上下文特征徽龟,其中用戶行為是multi-hot編碼。
這其中并沒(méi)有組合特征唉地,DIN使用深度神經(jīng)網(wǎng)絡(luò)來(lái)捕獲特征之間的交互据悔。

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)如下:

紅藍(lán)粉三色節(jié)點(diǎn)分別表示商品 ID (Goods ID), 店鋪 ID (Shop ID), 類目 ID (Cate ID) 三種稀疏特征, 其他的輸入特征, 使用白色節(jié)點(diǎn)表示 (比如左邊的用戶特征, 比如用戶 ID; 還有右邊的上下文特征, 比如廣告位之類的特征)。注意 Goods 1 ~ Goods N 用來(lái)描述用戶的歷史行為碧查,候選廣告 Candidate Ad 本身也是商品运敢,也具有 Goods / Shop / Cate ID 三種特征校仑。自底向上觀察BaseModel模型,可以看到包含3個(gè)部分传惠,分別是Embedding層迄沫、池化層和聚合層以及MLP層。

  • Embedding層
    Embedding層的輸入是高維的二值化特征向量卦方,將其轉(zhuǎn)換到低維的稠密特征向量表示羊瘩。對(duì)于t_i中的第i個(gè)特征組,令W^i= [w_i^i,...,w_j^i,...w_{K_i}^i] \in \mathbb R^{D \times K_i}代表第i個(gè)Embedding字典盼砍,其中w_j^i \in \mathbb R^D代表embedding向量尘吗,維度為DK_ii代表第i個(gè)特征組的維度浇坐。其實(shí)embedding操作類似有查表操作睬捶,就是在W^i中找出對(duì)應(yīng)的embedding向量。這里要注意的是近刘,對(duì)于one-hot和multi-hot編碼的特征擒贸,經(jīng)過(guò)embedding轉(zhuǎn)換之后,輸出的特征向量不一樣觉渴。

    • 如果t_i是one-hot編碼介劫,并且第j個(gè)元素t_i[j]=1,那么t_i的embedding表示就是一個(gè)單個(gè)向量w_j^i案淋。
    • 如果t_i是multi-hot編碼座韵,并且第j個(gè)元素t_i[j]=1,并且j \in \{i_1, i_2,...,i_k\}哎迄,那么t_i的embedding表示就是一個(gè)向量列表\{e_{i_1}, e_{i_1}, ...,e_{i_k}\} = \{w_{i_1}^i,w_{i_2}^i,...,w_{i_k}^i\}回右。
  • 池化層和聚合層
    由于不同的用戶擁有不同數(shù)量的行為數(shù)據(jù),而用戶行為數(shù)據(jù)是通過(guò)multi-hot進(jìn)行編碼的漱挚,這意味著不同用戶的歷史行為數(shù)據(jù)產(chǎn)生的Embedding列表\{e_{i_1}, e_{i_1}, ...,e_{i_k}\}長(zhǎng)度不同翔烁。而MLP層只能處理固定長(zhǎng)度的向量,因此通常的做法是將這些向量列表通過(guò)池化層來(lái)得到固定長(zhǎng)度的向量旨涝,如上圖中藍(lán)色陰影部分所示蹬屹,具體表達(dá)如下:

    pooling
    一般有求和池化和平均池化兩種操作,都是通過(guò)逐元素的方式來(lái)對(duì)列表中的向量進(jìn)行求和或者取平均操作白华。

    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è)虾攻。

    log損失函數(shù)

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)為K維的向量景埃。而K維度向量最多只能表達(dá)K個(gè)獨(dú)立的興趣,而用戶的興趣可能不止K顶别。K的大小會(huì)對(duì)計(jì)算量產(chǎn)生明顯影響谷徙,一般用大的K效果會(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模型如下:

DIN模型
可以看到乞巧,DIN跟Base Model的區(qū)別不是很大,主要是SUM Pooling層的前面做了些文章摊鸡。對(duì)于用戶歷史行為數(shù)據(jù)绽媒,DIN不再是對(duì)其進(jìn)行sum pooling或者average pooling操作,而是引入了一個(gè)激活單元來(lái)學(xué)習(xí)用戶歷史行為數(shù)據(jù)e_j和給定廣告v_A之間的關(guān)系免猾。用公式表達(dá)如下:
其中\{ e_1,e_2,..,e_H\}代表用戶U的行為數(shù)據(jù)的embedding向量列表是辕,v_A是廣告A的embedding向量。v_{U}(A)代表用戶U對(duì)特定廣告A的感興趣程度猎提,可以看到v_{U}(A)因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=A" alt="A" mathimg="1">的不同而不同获三。a(\cdot)代表一個(gè)前向神經(jīng)網(wǎng)絡(luò),它的輸出就是激活權(quán)重锨苏。如上圖右上角所示疙教。
Activation Unit的輸入包括用戶歷史商品和候選廣告的embedding向量,將這兩者以及它們之間的外積連接起來(lái)伞租,再通過(guò)激活函數(shù)和線性層得到歷史商品e_i和候選廣告A在embedding空間的關(guān)系權(quán)重贞谓。計(jì)算出每個(gè)歷史行為數(shù)據(jù)e_i的權(quán)重w_i之后,執(zhí)行一個(gè)帶權(quán)重的sum pooling即可葵诈÷阆遥可知祟同,DIN和Base Model的主要區(qū)別就在于是否使用了帶權(quán)重的poolng操作,而這個(gè)改進(jìn)取得了不俗的表現(xiàn)烁兰。

在這種計(jì)算方式下耐亏,最終的用戶U的興趣向量會(huì)根據(jù)不同的廣告A而變化。這就是“用戶興趣的千物千面”沪斟。比如广辰,一個(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第j維不為0,才會(huì)計(jì)算相應(yīng)w_j的L2-norm椒袍,最后近似為至少有一個(gè)instance其j維不為0才計(jì)算一次驼唱。公式推導(dǎo)如下(主要的參數(shù)來(lái)自embedding字典,統(tǒng)稱為W驹暑。下面為在所有sample上的L2正則計(jì)算):

有了上式之后玫恳,loss的形式就確定了辨赐,因此參數(shù)更新公式如下:

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ù)p的變化如下:
    論文認(rèn)為采用 PReLU作為激活函數(shù)時(shí)透且,它的rectified point 固定為 0,這在每一層的輸入分布發(fā)生變化時(shí)是不適用的豁鲤。所以秽誊,論文針對(duì)該激活函數(shù)進(jìn)行了改進(jìn),一方面平滑了激活函數(shù)在 rectified point 附近的曲線琳骡,另一方面激活函數(shù)會(huì)根據(jù)每層輸入數(shù)據(jù)的分布來(lái)自適應(yīng)調(diào)整 rectified point 的位置锅论,從而對(duì)模型參數(shù)的更新和收斂起到一定的加速作用。

代碼實(shí)踐

待補(bǔ)充

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楣号,一起剝皮案震驚了整個(gè)濱河市最易,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炫狱,老刑警劉巖藻懒,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異视译,居然都是意外死亡嬉荆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門酷含,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鄙早,“玉大人汪茧,你說(shuō)我怎么就攤上這事∠薹” “怎么了舱污?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)弥虐。 經(jīng)常有香客問(wèn)我扩灯,道長(zhǎng),這世上最難降的妖魔是什么躯舔? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任驴剔,我火速辦了婚禮,結(jié)果婚禮上粥庄,老公的妹妹穿的比我還像新娘丧失。我一直安慰自己,他們只是感情好惜互,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布布讹。 她就那樣靜靜地躺著,像睡著了一般训堆。 火紅的嫁衣襯著肌膚如雪描验。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天坑鱼,我揣著相機(jī)與錄音膘流,去河邊找鬼。 笑死鲁沥,一個(gè)胖子當(dāng)著我的面吹牛呼股,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播画恰,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼彭谁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了允扇?” 一聲冷哼從身側(cè)響起缠局,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎考润,沒(méi)想到半個(gè)月后狭园,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糊治,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年妙啃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揖赴,死狀恐怖馆匿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情燥滑,我是刑警寧澤渐北,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站铭拧,受9級(jí)特大地震影響赃蛛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搀菩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一呕臂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肪跋,春花似錦歧蒋、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吴叶,卻和暖如春阐虚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚌卤。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工实束, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逊彭。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓咸灿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诫龙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容