經典論文閱讀(二)--DIN:深度興趣網絡

DIN(Deep Interest Network)是由阿里媽媽精準定向廣告算法團隊在KDD2018提出的針對電商場景深入理解用戶興趣的預估模型,也可適用於其他場景。

主要貢獻:

  1. 指出了使用固定長度的向量來表達用戶多樣性的興趣的侷限性,設計了新穎的Deep Intrest Network,它引入了局部激活單元(local activation unit)來自適應地從給定廣告的歷史行爲中學習用戶興趣的表達。
  2. 開發了兩種技術來訓練工業級深度網絡:i) mini-batch aware的正則化,避免了在NN的巨量參數上計算正則。ii) 一個數據自適應的激活函數(Dice),在泛化推廣PReLU過程中考慮到了輸入數據的分佈。
  3. 在公開和阿里的數據集上做了深入的實驗,驗證了DIN和訓練技術的有效性。並公開了代碼。

一、背景

1. Motivation

現有的深度CTR預估模型都可以歸結爲Embedding&MLP的範式:首先通過embedding layer將大規模的稀疏特徵投影爲低維連續的embedding vector,然後將這些向量concatate後輸入到一個全連接網絡中,計算其最終的預估目標。Embedding&MLP模型利用一個固定的向量VuV_u去表達用戶就會成爲模型表達用戶多樣興趣的瓶頸。此固定用戶向量VuV_u的維度限制了整體模型解空間的秩, 而向量的維度受計算力以及泛化性的限制不可能無限制的擴充。
實際上當我們要預測一個User VuV_u對一個目標Item ItI_t 的點擊率,我們可能並不需要VuV_u表達用戶的所有興趣,我們只需要表達其和ItI_t相關的興趣。
Motivated by this, 提出了DIN模型捕捉針對不同商品時用戶不同的興趣狀態,並用一個根據不同預估商品目標動態變換的VuV_u來表達用戶與之相關的興趣。

DIN方法基於對用戶歷史行爲數據的兩個觀察:

  • 1、多樣性,一個用戶可以對多種品類的東西感興趣;
  • 2、局部激活,只有一部分的歷史數據對目前的點擊預測有幫助,比如系統向用戶推薦泳鏡時會和用戶點擊過的泳衣產生關聯,但是跟用戶買的薯片、書籍等就關係不大。

於是,DIN設計了一個attention結構,對用戶的歷史數據和待估算的廣告之間部分匹配,從而得到一個權重值,用來進行embedding間的加權求和。

2. 相關工作

LS-PLM和FM模型可以看作是一類只有一個隱藏層的網絡,首先在稀疏的輸入採用embedding層,然後利用專門設計的transformation函數來做target fitting,以此來捕獲特徵之間的組合關係。
PNN嘗試通過在embedding層之後引入一個product乘積層來捕捉高階的特徵交互。
DeepFM利用一個因子機作爲Wide&Deep中的"Wide"模塊,從而不需要人工特徵工程。
總之整體結構都是embedding層和MLP的組合,我們的基模型採用類似的方式。

神經機器翻譯(NMT)對所有的譯文使用一個加權求和來獲得期望的釋義,並且只專注於生成下一個目標單詞的相關信息。最近,在搜索廣告的上下文信息上應用Attention機制,與NMT類似,對model text使用RNN,然後學習一個全局的隱向量來幫助把’attention’集中在每個query的關鍵詞上。

DIN設計了一個局部激活單元(Local Activation Unit)來對相關的用戶行爲做軟搜索,並使用一個加權求和的Pooling來獲得用戶對給定廣告的興趣的自適應表達。

DIN提出Adaptive regularizaion來防止過擬合,效果顯著。此外,引入dice activation function進一步加強了模型的表達效果。

二、系統詳解

4.1 特徵表示

在這裏插入圖片描述

multi-hot編碼包含了豐富的用戶興趣信息,注意不需要組合特徵。

4.2 Base模型(Embedding&MLP)

在這裏插入圖片描述

嵌入層:
輸入one-hot和multi-hot的特徵向量,轉化爲低維稠密向量。

池化層和Concat層:
不同用戶有不同的行爲編號,multi-hot後的行爲特徵向量tit_i中的非零數字各有不同,使得相應的embedding向量各有不同。由於全連接層只能處理固定長度的輸入,獲取固定長度向量的常規操作就是:
通過一個pooling層將embedding向量轉換成固定長度的向量:
       ei=pooling(ei1,ei2,...eik)(1){\bf e}_i = pooling({\bf e}_{i_1},{\bf e}_{i_2},...{\bf e}_{i_k}) \quad\qquad\qquad (1)

基礎模型通常使用sum pooling計算用戶embedding; DIN通過使用weighted sum pooling計算用戶embedding。
注:DIN中使用的是weighted-sum,其實就是加權的sum-pooling,權重經過一個activation unit計算得到。

然後把固定長度的向量表示連接起來,就得到了overall的向量表示。

**MLP: ** 使用全連接層來自動地學習特徵組合。

**Loss: ** 目標函數是負的對數似然函數:
       L=1N(x,y)S(ylogp(x)+(1y)log(1p(x))),(2)L=-\dfrac{1}{N}\sum\limits_{(x,y)\in S}(ylogp(x)+(1-y)log(1-p(x))), \qquad\quad (2)
其中,S是大小爲N的訓練集,x是網絡的輸入,y屬於{0,1}是label,p(x)是網絡softmax層後輸出的預估概率值。

4.3 DIN的結構

Base模型的固定長度向量表示,忽略了候選廣告的不同,每個用戶的向量是固定的。爲了達到要求,簡單地擴展embedding向量的維度將會嚴重增加學習的參數個數,而且容易過擬合。
DIN模型的結構如圖所示:

在這裏插入圖片描述

DIN通過一個興趣激活模塊(Activation Unit),用預估目標Candidate ADs的信息去激活用戶的歷史點擊商品,以此提取用戶與當前預估目標相關的興趣。權重高的歷史行爲表明這部分興趣和當前廣告相關,權重低的則是和廣告無關的“興趣噪聲”。我們通過將激活的商品和激活權重相乘,然後累加起來作爲當前預估目標ADs相關的興趣狀態表達。 最後我們將這相關的用戶興趣表達、用戶靜態特徵和上下文相關特徵,以及ad相關的特徵拼接起來,輸入到後續的多層DNN網絡,最後預測得到用戶對當前目標ADs的點擊概率。

加入Activation Unit之後,用戶的興趣表示計算如下:
     vU(A)=f(vA,e1,e2,..,eH)=j=1Ha(ej,vA)ej=j=1Hωjej{\bf v}_U (A) =f({\bf v}_A,e_1,e_2,..,e_H)=\sum\limits_{j=1}^{H}a(e_j, {\bf v}_A)e_j = \sum\limits_{j=1}^{H}\omega_je_j
其中,{e1,e2,…eH}是長度爲H的用戶U的用戶行爲embedding vector,vA{\bf v}_A是廣告A的embedding vector,
這樣,vU(A){\bf v}_U (A)的值隨着廣告的不同而變化(向量長度爲H)。如圖右上角所示,外積(Out Product)函數a()a(\cdot)是一個輸出爲激活權重的前饋神經網絡,把用戶行爲的embedding和廣告的embedding向量這兩部分輸入,加上它們的out product餵給一個隨後的網絡,是一種顯而易見的關聯性建模方法。

對每個興趣表示賦予不同的權值,這個權值是由用戶的興趣和待估算的廣告進行匹配計算得到的,也就是a()a(\cdot)所學習到的。這就是本文引入注意力機制的核心點。

Activation Unit實現Attention機制,對Local Activation建模;
Pooling(weighted sum)對Diversity建模(見Base Model)。

We have tried LSTM to model user historical behavior data in the sequential manner. But it shows no improvement. 嘗試對用戶歷史行爲數據使用LSTM進行時序方式的預測,並沒有得到改善。

三、訓練技術

5.1 Mini-batch Aware Regularization

過擬合是模型訓練中的很容易出現的問題。

通常的做法是加入L1、L2防止過擬合,但這種正則方式對於工業級CTR數據不適用,結合其稀疏性及上億級的參數,以L2正則化爲例,需要計算每個mini-batch下所有參數的L2-norm,參數上升至億級之後計算量太大,不可接受。

用戶數據符合長尾定律(long-tail law),也就是說很多的feature id只出現了幾次,而一小部分feature id出現很多次。這在訓練過程中增加了很多噪聲,並且加重了過擬合。直接去掉出現次數比較少的feature id會導致模型更容易過擬合,而且閾值作爲一個新的超參數,需要大量的實驗來選擇。

DIN提出了高效的Mini-batch aware正則化,只計算mini-batch中非零項的L2-norm。
     L2(W)=W22=j=1Kwj22=(x,y)Sj=1KI(xj0)njwj22,(4)L_2(W)=\|W\|_2^2=\sum\limits_{j=1}^{K}\|w_j\|_2^2=\sum\limits_{(x,y)\in S}\sum\limits_{j=1}^{K}\dfrac{I(x_j\neq 0)}{n_j}\|w_j\|_2^2, \quad\qquad\quad (4)

其中wjw_j是第j個embedding vector,指示函數I(xj0)I(x_j\neq 0)表示x是否有特徵id j, njn_j表示在所有樣本中特徵id J出現的次數。在mini-batch aware方式中,等式4可以轉換成等式5,近似爲下面的等式6:
     L2(W)j=1Km=1Bamjnjwj22.(6)L_2(W)\approx \sum\limits_{j=1}^{K}\sum\limits_{m=1}^{B}\dfrac{a_{mj}}{n_j}\|w_j\|_2^2 . \quad\qquad (6)

第m個mini-batch的梯度w.r.t 特徵j的embedding weights就是:
在這裏插入圖片描述
其中BmB_m表示第m輪mini-batch,amj=maxx,yBmI(xj0)a_mj=max_{x,y \in B_m}I(x_j\neq 0)表示在mini-batch 中至少一個實例具有特徵id jjwjw_j表示第j個embedding vector。

5.2 Data Adaptive Activation Function

DIN的論文中,我們還對激活函數做了改進,提出了黑魔法DICE激活函數
目前應用的比較廣的激活函數ReLU和PReLU的計算過程可以描述爲:
     {sif  s>0αs  if  s0.=p(s)s+(1p(s))αs\left\{ \begin{array}{lr} s \qquad if \,\, s \gt 0 \\ \alpha s \quad\,\, if \,\, s \leq 0. \end{array} \right. \quad = p(s)\cdot s + (1 - p(s))\cdot \alpha s

我們把P(s)稱爲控制函數,這個控制函數其實就是一個整流器,可以看到無論是PReLU還是ReLU的控制函數都是一個階躍函數,其變化點在s = 0處,意味着面對不同的輸入這個變化點是不變的。實際上神經元的輸出分佈是不同的, 面對不同的數據分佈採用同樣的策略可能是不合理的,因此在我們提出的Dice激活函數中我們改進了這個控制函數,讓它根據數據的分佈來調整,這裏我們選擇了統計神經元輸出的均值和方差來描述數據的分佈:
在這裏插入圖片描述
控制函數:
在這裏插入圖片描述

5.3 Metrics and Result

使用了一種“An variation of user weighted AUC” 用於度量用戶間order,通過平均每個用戶的AUC,公式如圖:
在這裏插入圖片描述
引入了RelaImpr metric 去度量模型的相對提升度。
在數據集上的實驗表明:

在這裏插入圖片描述
DIN可以自適應得到用戶興趣的不同表示,極大提升了模型的表達能力;此外,DIN引入了Dice進一步提升了模型表現。

Ref:
[1] 論文發表在這裏
[2] github官方wiki

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章