阿里又雙叒叕開(kāi)源新算法了,這次的名稱(chēng)叫做Deep Session Interest Network,我們將其翻譯為深度會(huì)話興趣網(wǎng)絡(luò),一起來(lái)看看吧~~
論文題目:《Deep Session Interest Network for Click-Through Rate Prediction》
論文鏈接:https://arxiv.org/abs/1905.06482
代碼鏈接:https://github.com/shenweichen/DSIN
1、背景
從用戶行為中呢,我們發(fā)現(xiàn),在每個(gè)會(huì)話中的行為是相近的,而在不同會(huì)話之間差別是很大的,如下圖的例子:

這里會(huì)話的劃分和airbnb一樣,首先將用戶的點(diǎn)擊行為按照時(shí)間排序,判斷每?jī)蓚€(gè)行為之間的時(shí)間間隔,前后的時(shí)間間隔大于30min,就進(jìn)行切分。可以看上圖,第一個(gè)session中,用戶查看的都是跟褲子相關(guān)的物品,第二個(gè)session中,查看的是戒指相關(guān)的物品,第三個(gè)則是上衣相關(guān)。
基于此,阿里提出了深度會(huì)話興趣網(wǎng)絡(luò)Deep Session Interest Network,來(lái)建模用戶這種跟會(huì)話密切相關(guān)的行為。接下來(lái),我們就來(lái)介紹模型的結(jié)構(gòu)。
2、模型結(jié)構(gòu)
2.1 Base Model
Base Model就是一個(gè)全連接神經(jīng)網(wǎng)絡(luò),其輸入的特征的主要分為三部分,用戶特征,待推薦物品特征,用戶歷史行為序列特征。用戶特征如性別、城市、用戶ID等等,待推薦物品特征包含商家ID、品牌ID等等,用戶歷史行為序列特征主要是用戶最近點(diǎn)擊的物品ID序列。
這些特征會(huì)通過(guò)Embedding層轉(zhuǎn)換為對(duì)應(yīng)的embedding,拼接后輸入到多層全連接中,并使用logloss指導(dǎo)模型的訓(xùn)練。
2.2 DSIN
DSIN模型的總體框架如下圖:

DSIN在全連接層之前,分成了兩部分,左邊的那一部分,將用戶特征和物品特征轉(zhuǎn)換對(duì)應(yīng)的向量表示,這部分主要是一個(gè)embedding層,就不再過(guò)多的描述。右邊的那一部分主要是對(duì)用戶行為序列進(jìn)行處理,從下到上分為四層:
1)序列切分層session division layer
2)會(huì)話興趣抽取層session interest extractor layer
3)會(huì)話間興趣交互層session interest interacting layer
4)會(huì)話興趣激活層session interest acti- vating layer
接下來(lái),我們主要介紹這4層。
2.2.1 Session Division Layer
這一層將用戶的行文進(jìn)行切分,首先將用戶的點(diǎn)擊行為按照時(shí)間排序,判斷每?jī)蓚€(gè)行為之間的時(shí)間間隔,前后的時(shí)間間隔大于30min,就進(jìn)行切分。
切分后,我們可以將用戶的行為序列S轉(zhuǎn)換成會(huì)話序列Q。第k個(gè)會(huì)話Qk=[b1;b2;...;bi;...;bT],其中,T是會(huì)話的長(zhǎng)度,bi是會(huì)話中第i個(gè)行為,是一個(gè)d維的embedding向量。所以Qk是T * d的。而Q,則是K * T * d的
2.2.2 Session Interest Extractor Layer
這里對(duì)每個(gè)session,使用transformer對(duì)每個(gè)會(huì)話的行為進(jìn)行處理。有關(guān)Transformer的內(nèi)容,可以參考文章https://mp.weixin.qq.com/s/RLxWevVWHXgX-UcoxDS70w。
在Transformer中,對(duì)輸入的序列會(huì)進(jìn)行Positional Encoding。Positional Encoding對(duì)序列中每個(gè)物品,以及每個(gè)物品對(duì)應(yīng)的Embedding的每個(gè)位置,進(jìn)行了處理,如下:

但在我們這里不一樣了,我們同時(shí)會(huì)輸入多個(gè)會(huì)話序列,所以還需要對(duì)每個(gè)會(huì)話添加一個(gè)Positional Encoding。在DSIN中,這種對(duì)位置的處理,稱(chēng)為Bias Encoding,它分為三塊:

BE是K * T * d的,和Q的形狀一樣。BE(k,t,c)是第k個(gè)session中,第t個(gè)物品的嵌入向量的第c個(gè)位置的偏置項(xiàng),也就是說(shuō),每個(gè)會(huì)話、會(huì)話中的每個(gè)物品有偏置項(xiàng)外,每個(gè)物品對(duì)應(yīng)的embedding的每個(gè)位置,都加入了偏置項(xiàng)。所以加入偏置項(xiàng)后,Q變?yōu)椋?/p>

隨后,是對(duì)每個(gè)會(huì)話中的序列通過(guò)Transformer進(jìn)行處理:

這里的過(guò)程和Transformer的Encoding的block處理是一樣的,不再贅述。感興趣的同學(xué)可以看一下上文提到的文章。
這樣,經(jīng)過(guò)Transformer處理之后,每個(gè)Session是得到的結(jié)果仍然是T * d,隨后,我們經(jīng)過(guò)一個(gè)avg pooling操作,將每個(gè)session興趣轉(zhuǎn)換成一個(gè)d維向量。

這樣,Ik就代表第k個(gè)session對(duì)應(yīng)的興趣向量。
2.2.3 Session Interest Interacting Layer
用戶的會(huì)話興趣,是有序列關(guān)系在里面的,這種關(guān)系,我們通過(guò)一個(gè)雙向LSTM(bi-LSTM)來(lái)處理:

每個(gè)時(shí)刻的hidden state計(jì)算如下

相加的兩項(xiàng)分別是前向傳播和反向傳播對(duì)應(yīng)的t時(shí)刻的hidden state。這里得到的隱藏層狀態(tài)Ht,我們可以認(rèn)為是混合了上下文信息的會(huì)話興趣。
2.2.4 Session Interest Activating Layer
用戶的會(huì)話興趣與目標(biāo)物品越相近,那么應(yīng)該賦予更大的權(quán)重,這里使用注意力機(jī)制來(lái)刻畫(huà)這種相關(guān)性:

這里XI是帶推薦物品向量。
同樣,混合了上下文信息的會(huì)話興趣,也進(jìn)行同樣的處理:

后面的話,就是把四部分的向量:用戶特征向量、待推薦物品向量、會(huì)話興趣加權(quán)向量UI、帶上下文信息的會(huì)話興趣加權(quán)向量UH進(jìn)行橫向拼接,輸入到全連接層中,得到輸出。
3、模型試驗(yàn)
模型使用了兩個(gè)數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn),分別是阿里媽媽的廣告數(shù)據(jù)集和阿里巴巴的電商推薦數(shù)據(jù)集。
對(duì)比模型有:YoutubeNet、Wide & Deep、DIN 、DIN-RNN(這個(gè)和DIN很像,在原始的DIN中,用戶的行為序列沒(méi)有使用RNN進(jìn)行處理,而DIN-RNN使用bi-LSTM對(duì)用戶的歷史行為序列進(jìn)行處理)、DIEN。
評(píng)價(jià)指標(biāo)是AUC。結(jié)果如下:

對(duì)于DSIN,這里有分了三種情況,第一個(gè)是DSIN,不過(guò)將Bias Encoding變?yōu)門(mén)ransformer里面的Positional Encoding,第二個(gè)是DSIN,使用bias encoding,但不添加session inter-est interacting layer and the corresponding activation unit。第三個(gè)就是前文介紹的DSIN框架。可以看到,最后一個(gè)在兩個(gè)數(shù)據(jù)集上的AUC均為最大。
4、總結(jié)討論
這里,論文對(duì)結(jié)果進(jìn)行了進(jìn)一步討論,主要有:
4.1 Effect of Multiple Sessions
從實(shí)驗(yàn)結(jié)果來(lái)看,DIN-RNN的效果差于DIN,而DSIN-BE的效果好于DSIN-BE-No-SIIL。兩組的差別均是有沒(méi)有使用序列建模。文章里提到,對(duì)于序列建模來(lái)說(shuō),如果用戶的行為時(shí)十分跳躍的,同時(shí)是突然結(jié)束的,會(huì)使得用戶的行為看上進(jìn)去具有很大的噪聲(這里也不知道翻譯的對(duì)不對(duì),直接上原文吧):

這樣就使得DIN-RNN的效果反而不如DIN,但在DSIN中,我們對(duì)用戶的行為序列按照會(huì)話進(jìn)行了分組,由于以下兩點(diǎn)原因,使得DSIN中使用序列建模效果反而更好:

4.2 Effect of Session Interest Interacting Layer
DSIN-BE的效果好于DSIN-BE-No-SIIL,說(shuō)明通過(guò) Effect of Session Interest Interacting Layer得到混合上下文信息的用戶興趣,可以進(jìn)一步提升模型的效果。
4.3 Effect of Bias Encoding
DSIN-BE的效果好于DSIN-PE,說(shuō)明對(duì)不同的session添加偏置項(xiàng),效果還是十分不錯(cuò)的。
4.4 Visualization of Self-attention and the Activation Unit
這里論文展示了一下 Self-attention and the Activation Unit的效果,還是開(kāi)篇的那個(gè)例子:
