阿里的CTR預測(二):Deep Interest Evolution Network

這篇文章發佈於2018年9月,是以前的DIN的改進版。咱們在阿里的CTR預測(一):Deep Interest Network中提到過,他們嘗試使用LSTM來學習序列化數據的特徵,可是對DIN的結果沒有改善。DIEN在這一點上作了改善。網絡

Deep Interest Evolution Network(DIEN)

咱們略去背景介紹,尤爲是Base Model的部分,若是你們想看的話,能夠去前一篇文章中找。如今咱們直接介紹DIEN的結構。DIEN最大的特色是不但要找到用戶的interest,還要抓住用戶interest的進化過程。做者們將GRU融合到網絡中,從而抓出變化的sequence。關於GRU的介紹有興趣的話不妨看看這篇Understanding GRU networks函數

上面兩張圖分別是DIN和DIEN的結構圖,咱們能夠對比來看。

能夠看到,DIEN仍然存在Embedding Layer,而且Embedding的方法也和以前一致。其餘User profile, target AD和context feature的處理方式二者都是一致的,只是把user behavior組織成了序列數據的形式,並把簡單的使用外積完成的activation unit變成了一個attention-based GRU網絡。post

Interest Extractor Layer

如今咱們具體來講Interest Extractor Layer,也就是GRU單元在的那個layer。顧名思義,這個Layer的主要目標是從embedding數據中提取出interest來。但一個用戶在某一時間的interest不只與當前的behavior有關,也與以前的behavior相關,因此做者們使用GRU單元來提取interest。學習

這是一個GRU單元的表達式,其中i_t = e_b[t]表明一個t時刻behaviour的embedding,\sigma是sigmoid函數,o表明element-by-element乘法。.net

他們在這一步還引入了一個L_{aux}~Loss,用來輔助進行Interest Extractor。由於普通的h_t只能從embedding中提取信息,提取的卻不必定是interest。最後的action只由final interest決定,要保留中間狀態的interest須要其餘的激勵。經過引入L_{aux}~Loss以下 3d

並將最終的模型目標設爲L = L_{target} + L_{aux},可讓GRU在中間狀態提取出interest信息。rest

Interest Evolution Layer

以用戶對衣服的interest爲例,隨着季節和時尚風潮的不斷變化,用戶的interest也會不斷變化。cdn

  • 追蹤用戶的interest可使咱們學習final interest的表達時包含更多的歷史信息
  • 能夠根據interest的變化趨勢更好地進行CTR預測 而interest在變化過程當中遵循以下規律:
  • interest drift:用戶在某一段時間的interest會有必定的集中性。好比用戶可能在一段時間內不斷買書,在另外一段時間內不斷買衣服。
  • interest individual:一種interest有本身的發展趨勢,不一樣種類的interest之間不多相互影響,例如買書和買衣服的interest基本互不相關。

爲了利用這兩個時序特徵,咱們須要再增長一層GRU的變種,並加上attention機制以找到與target AD相關的interest。其中,attention function能夠表示爲: blog

e_a是target AD的embedding。ci

把Attention和GRU結合起來的機制有不少種,

  • AIGRU: i_t'  = h_t * a_t
  • AGRU: h_t' = (1 - a_t) * h_{t - 1}' + a_t * \tilde{h_t'}
  • AUGRU: \tilde{u_t'} = a_t * u_t';~ h_t' = (1 - \tilde{u_t'}) \circ h_{t-1}' + \tilde{u_t'} \circ \tilde{h_t'}

文章中嘗試了這三種機制。

Results

文章在公共數據和本身的數據集上都作了實驗,離線實驗的結果以下:

相關文章
相關標籤/搜索