推薦領域開創(chuàng)性論文,詳解阿里巴巴DIN模型
點擊上方藍字,關注并星標,和我一起學技術。
大家好,今天來聊聊推薦領域一篇很重要的paper,它就是阿里巴巴18年發(fā)表的Deep Interest Network for Click-Through Rate Prediction,也就是深度興趣網(wǎng)絡模型,簡稱DIN。
摘要
眾所周知,CTR預估在搜索、推薦、廣告領域都占據(jù)著舉足輕重的作用。隨著深度模型在推薦領域的興起,離散特征的Embedding被越來越廣泛地使用。用戶或者是商品的離散特征會被轉(zhuǎn)化成固定長度的向量,經(jīng)過一系列轉(zhuǎn)化之后,將這些向量拼接在一起作為MLP的輸入,最后訓練得到結(jié)果。
這樣的模型取得了不錯的效果,但是也有瓶頸,它最大的瓶頸就在于轉(zhuǎn)化之后得到的向量長度是固定的。它只包含user以及item本身的特征,丟失了用戶之前的歷史行為,這些行為當中往往隱藏著用戶大量的興趣以及偏好的信息。在本篇paper當中,我們推出了一個新的模型DIN,它可以通過使用local activation unit從用戶歷史行為信息,從而提升模型的表達能力。
簡介
在CPC廣告系統(tǒng)當中,CTR的預估非常重要。所謂的CPC指的是cost-per-click,也就是按點擊扣費,這也是淘寶等電商平臺最常用的廣告扣費模式。商家通過競價排名來購買廣告從而獲得廣告曝光的機會,當用戶實際發(fā)生點擊的時候才會進行扣費。對于廣告展示平臺來說,為了追求利益最大化,每次應該展示獲得的收益期望最大的廣告。
這個期望也就是CTR * bid price,這里的bid price也就是商家對于廣告的競價,這個是一個已知的變量。而CTR也就是商品的點擊率,這是一個后驗的概率,無法提前得到,所以只能通過模型來預測。因此CTR的預測對于廣告來說至關重要,它會直接影響廣告平臺的收入。
截止到論文發(fā)表時,主流的CTR預估的模型都是通過將離散特征轉(zhuǎn)化成Embedding的方式來進行的。這樣的結(jié)果是user的特征轉(zhuǎn)化之后得到的長度是固定的,說白了,一個廣泛活躍的用戶和一個幾乎不活躍的用戶轉(zhuǎn)化得到的特征長度是一樣的。反而用戶的興趣可能是廣泛的,一個人可能既對球鞋也對游戲機感興趣,如果我們只用用戶整體的行為來構建特征,那么往往只能得到單一的興趣。因此這是模型一個很大的瓶頸,本篇paper就是圍繞這一塊內(nèi)容展開的。
從另一個角度來說,我們也沒有必要把用戶所有的興趣全部壓縮,因為當用戶看到一個商品時,他是否會有點擊往往是由他興趣的一個部分驅(qū)動的。比如對于一個上周買了游戲機的人來說,他這周點擊游戲的概率要明顯大于手機。我們希望模型能夠?qū)W習用戶某個歷史興趣以及當前行為之間的聯(lián)系。DIN模型會根據(jù)目標展示的item信息,自動表示出用戶興趣的Embedding。
背景
對于電商網(wǎng)站來說,廣告非常重要,由于廣告的內(nèi)容往往就是商品,所以我們可以把廣告看成是item。下圖簡單展示了廣告展示的過程。

一個是召回過程,根據(jù)用戶的行為以及相關上下文信息進行商品的召回。第二個是排序的過程,根據(jù)用戶以及商品的信息預測它的CTR,根據(jù)預測出來的CTR從高到低進行排序,挑選出CTR最高的商品進行展示。
每天都有數(shù)以百萬的用戶在平臺留下大量的信息,值得注意的是,擁有豐富歷史行為的用戶往往也有這豐富的興趣。比如一位年輕的媽媽,最近瀏覽過毛大衣,T恤,耳環(huán),手包和兒童外套,這些行為數(shù)據(jù)背后能夠反映她的興趣。這樣當她再次來到平臺的時候,系統(tǒng)就會根據(jù)她的興趣推薦符合她興趣的商品,比如新款的手包。關于用戶興趣的識別以及表達是本文的重點,我們將會在之后的內(nèi)容詳細闡述。
DIN網(wǎng)絡
特征表示
在CTR預估的場景當中categorical形式的特征往往都會被轉(zhuǎn)化成多組Embedding向量,比如性別是一組,每周周幾是一組,商品的類別也是一組。比如[weekday=Friday, gender=Female, visited_cate_ids={Bag,Book}, ad_cate_id=Book]這樣一組特征在編碼之后的結(jié)果可能是[4, 19, 21],然后再通過這些索引找到對應位置的Embedding向量。
我們把第i個特征轉(zhuǎn)化得到的向量寫成,這里的表示的是i所在的特征組的維度,也可以理解成Embedding的長度。表示這個Embedding第j個元素,它是一個0到1的浮點數(shù),,如果k=1就是one-hot特征,如果k > 1則說明是multihot特征。這樣的話一條樣本就可以表示成:。因為我們通常所有的Embedding都擁有一樣的維度,所以它們的上標都寫成T。
這樣我們可以把[weekday=Friday, gender=Female, visited_cate_ids={Bag,Book}, ad_cate_id=Book]這組特征表示為:

其中weekday、gender、ad_cate_id是one-hot特征,visited_cate_ids是multihot特征。
論文當中還提供了常用的一些特征的維度表:

基本模型
這里的基本模型主要介紹的是主流的推薦領域的模型,也就是Embedding&MLP結(jié)構的模型。在這篇論文當中將它稱為基本模型。
我們可以參考下圖:

Embedding層
模型的輸入一般都是高緯度的01向量,Embedding層的用處就是將這些categorical的向量轉(zhuǎn)化成低維度的Embedding向量。這個很好理解, 比如我們特征所有的維度是M,Embedding的長度是D,那么模型會生成一個M x D的二維向量。假設有一個特征的index是21,那么在做Embedding的時候就會從這個M x D的二維向量當中取出它的第21行作為這個特征的Embedding,這個操作被稱為lookup。
multihot和onehot的操作類似,同樣是生成索引查找對應的Embedding。只不過onehot只會查找一個,而multihot往往會查找多個。
pooling層和concat層
pooling層同樣在深度學習模型當中廣泛使用,它的主要作用是對tensor進行壓縮。比如我們現(xiàn)在有10個長度為20的向量,我們可以把這些向量類加在一起,也可以計算它每一位的均值。一般來說常用的pooling操作也就只有這兩個,sumpooling和avgpooling。它的公式可以簡單寫成:
concat層也很好理解,我們經(jīng)過模型處理得到的tensor往往不止一個,比如連續(xù)性特征組成的tensor,onehot組成的tensor,用戶特征組成的tensor等等。對于這些tensor我們不可能都pooling到一起,否則會丟失信息,所以這個時候一個比較好的方法就是把這些tensor拼接在一起,最后將拼接之后的結(jié)果作為MLP的輸入。
MLP和Loss
MLP和Loss這兩個很好理解,MLP就是多層感知機,也就是最普通的DNN。
而Loss一般用交叉熵,公式可以寫成:
DIN結(jié)構
最后終于到了本文的重頭戲,也就是DIN結(jié)構。
DIN模型主體依然借用的基本模型,只不過其中加入了DIN結(jié)構,也就是下圖紅框當中標記出來的部分。

這里的User Behaviors表示的用戶歷史的行為,可以理解成用戶有過行為交互過的商品集,當中的每一個Good表示一個商品。對于每一個商品我們會選擇它的幾個特征做Embedding,圖中畫的是3個,實際我們實現(xiàn)的時候可以進行調(diào)節(jié)。然后我們把這幾個Embedding拼接到一起作為整個商品的Embedding。
之后每一個商品的Embedding會和當前候選商品的Embedding一起進入Activation Unit當中去計算得到權重,表示這個商品與當前候選的相似度或者是關聯(lián)度。這個Activation Unit的部分論文當中也給與了詳細的展示,如下圖:

用戶歷史行為有過交互的商品與候選商品的本質(zhì)是一樣的,都是商品,所以它們轉(zhuǎn)化成Embedding之后的維度相同。然后我們將它們的Embedding進行out product運算,再將這個out product的結(jié)果與輸入的兩個item Embedding concat到一起作為一個MLP的輸入,MLP的輸出結(jié)果為一個單一的權重。
為了保證這個權重的值不會太大,我們在進行sum pooling之前往往還會進行softmax操作,保證加權的和為1。
最后我們看下模型實驗的結(jié)果,原論文當中選擇了亞馬遜以及阿里自己的數(shù)據(jù)集作為驗證的標準。

我們可以看到在這兩個數(shù)據(jù)集當中,DIN模型的效果都是最好的。
總結(jié)
到這里整個DIN模型的原理和模型細節(jié)就算是講解完了,原paper當中還有一些其他的技術細節(jié),比如大規(guī)模參數(shù)進行正則運算的方法等等,這些內(nèi)容相對不太重要,因此就不過多贅述了,感興趣的同學可以去閱讀一下原文詳細了解一下。
DIN模型和之前介紹的FM家族等模型相比是一個飛躍,因為它開創(chuàng)性地引入了用戶歷史行為的序列,獲得了更多的信息,并且良好地表達了這些信息,因此產(chǎn)生了非常好的效果。也就是說它效果好不僅是模型的結(jié)構改進帶來的,也是因為引入了更多的特征和更多的信息,這也印證了那句話,數(shù)據(jù)決定了效果的上限,而模型只能是逼近這個上限。
好了,今天的文章就到這里,感謝大家的閱讀,如果喜歡本文的話,不要忘了三連。
