深度興趣網絡DIN-DIEN-DSIN

看看阿里如何在淘寶作推薦,實現「一人千物千面」的用戶多樣化興趣推薦,首先總結下DIN、DIEN、DSIN:網絡

  1. 傳統深度學習在推薦就是稀疏到embedding編碼,變成稠密向量,餵給NN
  2. DIN引入attention機制,捕獲候選商品和用戶瀏覽過的商品之間的關係(興趣)
  3. DIEN在DIN基礎上引入序列概念,將用戶歷史行爲序列歸入到網絡內
  4. DSIN將行爲序列劃分爲session,更符合RNN概念

大多推薦場景下數據下都包含以下信息,用戶內在屬性信息、用戶行爲信息、商品信息、上下文信息,一個明顯不一樣的不一樣用戶的行爲信息差別很大。session

深度學習在推薦系統通常作法:架構

稀疏向量 -- embedding -- fixed-length稠密向量 --- MLPide

這樣作有什麼問題?學習

  1. 一個明顯的問題是不一樣用戶的行爲序列長度是不一樣的,fixed-length信息表達不全面優化

  2. 用戶最終的行爲只和歷史行爲中的部分有關,所以對歷史序列中商品相關度應有區分編碼

  • DIN

根據上述問題,有兩個解決思路:idea

  1. 對不一樣用戶嘗試不一樣維度的向量,致使訓練困難
  2. 如何在有限的維度表示用戶的差別化興趣?

DIN從第二個問題出發,引入局部激活單元,對特定的ad自適應學習用戶興趣表示向量。即同一用戶在獲選ad不一樣時,embedding向量不一樣。spa

key idea3d

使用attention機制捕獲ad和用戶行爲序列商品之間的關係

看結果

  1. 和ad類似度搞得物品擁有更高的權重
  2. 不相關物品的類似度低

下面是兩個小tricks,對結果提高有幫助:

  1. Mini-batch Aware Regularization

  2. Dice Activation Function

tricks的細節能夠參考原論文。


  • DIEN
    DIEN使用了GRU來建模用戶行爲序列,在DIN基礎上考慮序列信息
  1. 使用GRU建模序列信息,即用GRU最後時刻的隱狀態表示序列
  2. 修改GRU爲AUGRU

看下AUGRU部分:
\[ a_{t}=\frac{\exp \left(\mathbf{h}_{t} W \mathbf{e}_{a}\right)}{\sum_{j=1}^{T} \exp \left(\mathbf{h}_{j} W \mathbf{e}_{a}\right)} \]

\[ \begin{aligned}&\tilde{\mathbf{u}}_{t}^{\prime}=a_{t} * \mathbf{u}_{t}^{\prime}\\&\mathbf{h}_{t}^{\prime}=\left(1-\tilde{\mathbf{u}}_{t}^{\prime}\right) \circ \mathbf{h}_{t-1}^{\prime}+\tilde{\mathbf{u}}_{t}^{\prime} \circ \tilde{\mathbf{h}}_{t}^{\prime}\end{aligned} \]

根據attention score控制更新門。

看模型,直觀的思考貌似很合理,可是有兩個問題:

  1. 序列信息包含多長?即短時間興趣仍是長期興趣的問題
  2. 序列連續否?不一樣時期的興趣不同,序列間隔過大相關性可能很低
  3. 用戶是否必定服從嚴格的序列?先點那個和後點那個的區別大嗎

1.DIEN使用過去14天信息行爲序列,從RNN角度來講可能短時間內行爲信息更重要,但長期信息是否引入了噪音?

2.過去14天內用戶需求會變。好比第一天買了衣服、可能十天後買的是書

3.用戶點擊順序不必定重要,本身想想好像是

關於使用RNN是否合適,RNN只關心t-1(上一步)和t(當前步),而沒有涉及t-1和t之間的時間間隔。沒涉及不表明不重要,反而是由於其使用前提就是假定各步驟之間是等間距的,見維基百科。

A time series is a series of data points indexed (or listed or graphed) in time order. Most commonly, a time series is a sequence taken at successive equally spaced points in time"

以上部份內容摘自[3].


  • DSIN

DSIN進一步作出優化,在每一個會話中的行爲是相近的,而在不一樣會話之間差異是很大的,以下圖的例子:

模型架構

1.會話分割層

將用戶的點擊行爲按照時間排序,判斷每兩個行爲之間的時間間隔,先後的時間間隔大於30min,就進行切分。

2.興趣提取層

用Tansformer編碼用戶行爲序列,簡單來講就是輸入一個序列,輸出一個對應的embedding序列。

引入了偏置編碼(Bias encoding),實質上是對序列中位置信息的編碼

原始作法:
\[ \begin{aligned}&P E_{(\text {pos}, 2 i)}=\sin \left(\text {pos} / 10000^{2 i / d_{\text {model}}}\right)\\&P E_{(p o s, 2 i+1)}=\cos \left(p o s / 10000^{2 i / d_{m o d e l}}\right)\end{aligned} \]
bias encoding:
\[ \mathbf{B E}_{(k, t, c)}=\mathbf{w}_{k}^{K}+\mathbf{w}_{t}^{T}+\mathbf{w}_{c}^{C} \]
第一項表示處於第幾個session,第二項表示session的第幾個行爲,第三項表示總體位置的embedding。關於這三項其實不是很明確,知道的同窗麻煩幫忙解答下,貼上原圖

3.興趣交互層

捕獲序列的順序關係,文中使用Bi-LSTM

4.興趣激活層

和DIN中同樣,使用attention捕捉商品相關性

模型思想大概就這麼多,細節部分能夠參考原論文。

具體應用

  1. 充分了解領域數據特色,根據場景定製適合具體問題的網絡結構

  2. 須要有豐富的特徵

references:

[1]Deep Interest Network for Click-Through Rate Prediction,https://arxiv.org/pdf/1706.06978.pdf ,KDD2018

[2]Deep Interest Evolution Network for Click-Through Rate Prediction, https://arxiv.org/pdf/1809.03672.pdf. AAAI 2019

[3]也評Deep Interest Evolution Network . https://zhuanlan.zhihu.com/p/54838663.

[4]Deep Session Interest Network for Click-Through Rate Prediction. https://arxiv.org/pdf/1905.06482.pdf . IJCAI 2019

相關文章
相關標籤/搜索