1. 程式人生 > >深度興趣演化網路— 阿里媽媽精準定向廣告組

深度興趣演化網路— 阿里媽媽精準定向廣告組

今天講的部落格參考了2019年的AAAI的一篇paper《Deep Interest Evolution Network for Click-Through Rate Prediction》,這又是阿里媽媽蓋坤組新的一篇paper,同時也是之前公佈的深度置信網路《Deep Interest Network》的進階版。

整體來說這篇paper最大的亮點還是體現在對於使用者歷史行為序列的建模上,之前的深度置信網路是對這些使用者行為進行加權求和,而這一些深度興趣演化網路則利用了GRU網路結構。這篇文章的提出主要是解決廣告推薦方向的2個問題:1 是使用者的興趣會隨著時間的推移而產生變化;2 使用使用者的行為資料特徵來描述使用者latent興趣存在誤差。基於此,作者提出了一下的網路結構:

在這裡插入圖片描述
整體來說模型中有2塊結構是比較重要的:Interest Extractor Layer和Interest Evolving Layer,這兩種結構都是以GRU模型為基礎改造的。GRU的基本形式如下所示:
u t = σ ( W

u x t + U u h t
1
+ b u ) u_t=\sigma(W_ux_t+U_uh_{t-1}+b_u)
r t = σ ( W r x t + U r h t 1 + b r ) r_t=\sigma(W_rx_t+U_rh_{t-1}+b_r)
p t = t a n h ( W p x t + r t U h h t 1 + b h ) p_t=tanh(W_px_t+r_t \bigodot U_h h_{t-1}+b_h)
h t = ( 1 u t ) h t 1 + u t p t h_t=(1-u_t) \bigodot h_{t-1}+u_t \bigodot p_t

其中Interest Extractor Layer用來解決使用者latent興趣的提取問題,Interest Evolving Layer用來解決使用者興趣的演化問題。在介紹這兩種結構的細節之前,我們首先來說一下這個任務的具體形式,模型的輸入由4個維度的資訊組成:1 User Profile(年齡,性別等);2 User behavior (一段時間內使用者點選過的商品id等);3 Item資訊(商品id,所屬shop id等);4 Context資訊(購買裝置,購買時間等)。不難看出,其中的User behavior對於每一條需要預測的樣本來說是一個序列特徵,這部分是本篇paper處理的重點。

Interest Extractor Layer
在該結構中,作者提出了一種 auxiliary 損失函式來輔助生成使用者的latent的興趣向量。直白來說,就是將使用者過去一段時間內(一般是2周)的User behavior對應的序列輸入到GRU模型中,然後把最後一時刻 T T 對應的GRU輸出的hidden state向量作為使用者整個目前狀態下的興趣表徵,這樣最終模型訓練出來的引數更多傾向於以最後幾個時刻的點選行為來作為使用者的興趣特徵;同時,GRU產生的一系列 h t h_t 只能捕捉到相鄰行為序列之間的依賴關係,並不是直接的使用者興趣。為了克服這些缺點,作者將GRU每一時刻的 h t h_t 都進行商品的點選率的預測,正樣本就是該時刻的點選商品,負樣本就是隨機從該時刻使用者看了但是卻沒有點選的商品中隨機抽樣獲得的。這部分的損失也被稱之為auxiliary損失:
L a u x = 1 N ( i = 1 N t l o g σ ( h t , p t i ( t + 1 ) ) + l o g ( 1 σ ( h t , n b i ( t + 1 ) ) ) ) L_{aux}=-\frac{1}{N}(\sum_{i=1}^N\sum_t log \sigma(h_t,p_t^i(t+1))+log(1-\sigma(h_t,n^{i}_b(t+1))))
其中 p t i ( t + 1 ) p_t^i(t+1) 是使用者 t + 1 t+1 時刻點選的商品的embedding向量形式即Positive sample, n b i ( t + 1 ) n^{i}_b(t+1) 是使用者 t + 1 t+1 時刻看過但是沒有點選的商品的embedding向量形式即Negative sample。這樣GRU生成的hidden state序列 h 1 , h 2 , . . . . h n h_1,h_2,....h_n 就能夠真正反映使用者的興趣資訊。

Interest Evolving Layer
在Interest Extractor Layer生成了hidden state序列 h 1 , h 2 , . . . . h n h_1,h_2,....h_n 之後(這些序列也代表了使用者的興趣序列),需要另一個GRU來對這些hidden state序列進行建模,在建模之前考慮到一個使用者在每一時刻的興趣都包含了多個方面的內容,那麼在對當前商品進行預測的時候,需要提取出這些行為序列中和當前帶預測商品一致的那部分資訊來,這裡使用了attention機制:
α t = e x p ( h t W e t ) j = 1 t e x p ( h j W e t ) \alpha_t=\frac{exp(h_tWe_t)}{\sum_{j=1}^texp(h_jWe_t)} ,其中 h t h_t 是上一個GRU輸出的使用者興趣向量, e t e_t 是待預測商品embedding形式向量。

具體如何將這些通過at