看看阿里如何在淘寶作推薦,實現「一人千物千面」的用戶多樣化興趣推薦,首先總結下DIN、DIEN、DSIN:網絡
大多推薦場景下數據下都包含以下信息,用戶內在屬性信息、用戶行爲信息、商品信息、上下文信息,一個明顯不一樣的不一樣用戶的行爲信息差別很大。session
深度學習在推薦系統通常作法:架構
稀疏向量 -- embedding -- fixed-length稠密向量 --- MLPide
這樣作有什麼問題?學習
一個明顯的問題是不一樣用戶的行爲序列長度是不一樣的,fixed-length信息表達不全面優化
用戶最終的行爲只和歷史行爲中的部分有關,所以對歷史序列中商品相關度應有區分編碼
根據上述問題,有兩個解決思路:idea
- 對不一樣用戶嘗試不一樣維度的向量,致使訓練困難
- 如何在有限的維度表示用戶的差別化興趣?
DIN從第二個問題出發,引入局部激活單元,對特定的ad自適應學習用戶興趣表示向量。即同一用戶在獲選ad不一樣時,embedding向量不一樣。spa
key idea3d
使用attention機制捕獲ad和用戶行爲序列商品之間的關係
看結果
下面是兩個小tricks,對結果提高有幫助:
Mini-batch Aware Regularization
Dice Activation Function
tricks的細節能夠參考原論文。
- 使用GRU建模序列信息,即用GRU最後時刻的隱狀態表示序列
- 修改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.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進一步作出優化,在每一個會話中的行爲是相近的,而在不一樣會話之間差異是很大的,以下圖的例子:
模型架構
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捕捉商品相關性
模型思想大概就這麼多,細節部分能夠參考原論文。
具體應用
充分了解領域數據特色,根據場景定製適合具體問題的網絡結構
須要有豐富的特徵
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