阿里又雙叒叕開源新算法了,這次的名稱叫做Deep Session Interest Network,我們將其翻譯為深度會話興趣網絡,一起來看看吧~~
論文題目:《Deep Session Interest Network for Click-Through Rate Prediction》
論文鏈接:https://arxiv.org/abs/1905.06482
代碼鏈接:https://github.com/shenweichen/DSIN
1、背景
從用戶行為中呢,我們發現,在每個會話中的行為是相近的,而在不同會話之間差別是很大的,如下圖的例子:
這里會話的劃分和airbnb一樣,首先將用戶的點擊行為按照時間排序,判斷每兩個行為之間的時間間隔,前后的時間間隔大于30min,就進行切分。可以看上圖,第一個session中,用戶查看的都是跟褲子相關的物品,第二個session中,查看的是戒指相關的物品,第三個則是上衣相關。
基于此,阿里提出了深度會話興趣網絡Deep Session Interest Network,來建模用戶這種跟會話密切相關的行為。接下來,我們就來介紹模型的結構。
2、模型結構
2.1 Base Model
Base Model就是一個全連接神經網絡,其輸入的特征的主要分為三部分,用戶特征,待推薦物品特征,用戶歷史行為序列特征。用戶特征如性別、城市、用戶ID等等,待推薦物品特征包含商家ID、品牌ID等等,用戶歷史行為序列特征主要是用戶最近點擊的物品ID序列。
這些特征會通過Embedding層轉換為對應的embedding,拼接后輸入到多層全連接中,并使用logloss指導模型的訓練。
2.2 DSIN
DSIN模型的總體框架如下圖:
DSIN在全連接層之前,分成了兩部分,左邊的那一部分,將用戶特征和物品特征轉換對應的向量表示,這部分主要是一個embedding層,就不再過多的描述。右邊的那一部分主要是對用戶行為序列進行處理,從下到上分為四層:
1)序列切分層session division layer
2)會話興趣抽取層session interest extractor layer
3)會話間興趣交互層session interest interacting layer
4)會話興趣激活層session interest acti- vating layer
接下來,我們主要介紹這4層。
2.2.1 Session Division Layer
這一層將用戶的行文進行切分,首先將用戶的點擊行為按照時間排序,判斷每兩個行為之間的時間間隔,前后的時間間隔大于30min,就進行切分。
切分后,我們可以將用戶的行為序列S轉換成會話序列Q。第k個會話Qk=[b1;b2;...;bi;...;bT],其中,T是會話的長度,bi是會話中第i個行為,是一個d維的embedding向量。所以Qk是T * d的。而Q,則是K * T * d的
2.2.2 Session Interest Extractor Layer
這里對每個session,使用transformer對每個會話的行為進行處理。有關Transformer的內容,可以參考文章https://mp.weixin.qq.com/s/RLxWevVWHXgX-UcoxDS70w。
在Transformer中,對輸入的序列會進行Positional Encoding。Positional Encoding對序列中每個物品,以及每個物品對應的Embedding的每個位置,進行了處理,如下:
但在我們這里不一樣了,我們同時會輸入多個會話序列,所以還需要對每個會話添加一個Positional Encoding。在DSIN中,這種對位置的處理,稱為Bias Encoding,它分為三塊:
BE是K * T * d的,和Q的形狀一樣。BE(k,t,c)是第k個session中,第t個物品的嵌入向量的第c個位置的偏置項,也就是說,每個會話、會話中的每個物品有偏置項外,每個物品對應的embedding的每個位置,都加入了偏置項。所以加入偏置項后,Q變為:
隨后,是對每個會話中的序列通過Transformer進行處理:
這里的過程和Transformer的Encoding的block處理是一樣的,不再贅述。感興趣的同學可以看一下上文提到的文章。
這樣,經過Transformer處理之后,每個Session是得到的結果仍然是T * d,隨后,我們經過一個avg pooling操作,將每個session興趣轉換成一個d維向量。
這樣,Ik就代表第k個session對應的興趣向量。
2.2.3 Session Interest Interacting Layer
用戶的會話興趣,是有序列關系在里面的,這種關系,我們通過一個雙向LSTM(bi-LSTM)來處理:
每個時刻的hidden state計算如下
相加的兩項分別是前向傳播和反向傳播對應的t時刻的hidden state。這里得到的隱藏層狀態Ht,我們可以認為是混合了上下文信息的會話興趣。
2.2.4 Session Interest Activating Layer
用戶的會話興趣與目標物品越相近,那么應該賦予更大的權重,這里使用注意力機制來刻畫這種相關性:
這里XI是帶推薦物品向量。
同樣,混合了上下文信息的會話興趣,也進行同樣的處理:
后面的話,就是把四部分的向量:用戶特征向量、待推薦物品向量、會話興趣加權向量UI、帶上下文信息的會話興趣加權向量UH進行橫向拼接,輸入到全連接層中,得到輸出。
3、模型試驗
模型使用了兩個數據集進行了實驗,分別是阿里媽媽的廣告數據集和阿里巴巴的電商推薦數據集。
對比模型有:YoutubeNet、Wide & Deep、DIN 、DIN-RNN(這個和DIN很像,在原始的DIN中,用戶的行為序列沒有使用RNN進行處理,而DIN-RNN使用bi-LSTM對用戶的歷史行為序列進行處理)、DIEN。
評價指標是AUC。結果如下:
對于DSIN,這里有分了三種情況,第一個是DSIN,不過將Bias Encoding變為Transformer里面的Positional Encoding,第二個是DSIN,使用bias encoding,但不添加session inter-est interacting layer and the corresponding activation unit。第三個就是前文介紹的DSIN框架。可以看到,最后一個在兩個數據集上的AUC均為最大。
4、總結討論
這里,論文對結果進行了進一步討論,主要有:
4.1 Effect of Multiple Sessions
從實驗結果來看,DIN-RNN的效果差于DIN,而DSIN-BE的效果好于DSIN-BE-No-SIIL。兩組的差別均是有沒有使用序列建模。文章里提到,對于序列建模來說,如果用戶的行為時十分跳躍的,同時是突然結束的,會使得用戶的行為看上進去具有很大的噪聲(這里也不知道翻譯的對不對,直接上原文吧):
這樣就使得DIN-RNN的效果反而不如DIN,但在DSIN中,我們對用戶的行為序列按照會話進行了分組,由于以下兩點原因,使得DSIN中使用序列建模效果反而更好:
4.2 Effect of Session Interest Interacting Layer
DSIN-BE的效果好于DSIN-BE-No-SIIL,說明通過 Effect of Session Interest Interacting Layer得到混合上下文信息的用戶興趣,可以進一步提升模型的效果。
4.3 Effect of Bias Encoding
DSIN-BE的效果好于DSIN-PE,說明對不同的session添加偏置項,效果還是十分不錯的。
4.4 Visualization of Self-attention and the Activation Unit
這里論文展示了一下 Self-attention and the Activation Unit的效果,還是開篇的那個例子: