1. 程式人生 > 實用技巧 >DIN: 阿里點選率預估之深度興趣網路

DIN: 阿里點選率預估之深度興趣網路

廣告推薦算法系列文章:

本文的知識點來源於參考文獻[1],是阿里巴巴2018年在KDD上的論文。本文可以視為Attention機制在推薦系統上的應用。對Attention機制不瞭解的同學可以看下面的文章進行學習。

背景-推薦模型

正如我們在分散式層次GPU引數伺服器架構所提到的,如今深度學習在推薦系統和廣告點選率預估上應用廣泛,普遍採用的模式是Embedding + MLP的形式。

在這種Embedding + MLP的模型下,有許許多多的特徵工程上的技巧。在阿里這個場景下,可以分成這麼幾個大類,比如使用者畫像,使用者的操作行為,上下文特徵,廣告特徵等等。如下圖所示。

在這裡插入圖片描述

而對應的模型結構則如下圖

在這裡插入圖片描述

可以看到,不同種類的特徵在形成向量後是拼接起來的。

使用者興趣多元化

上述模型結構和特徵工程已經能達到一個較好的結果了,但是要想精益求精,還是需要對業務有更加深刻的瞭解。而在阿里的這個場景下,那就是使用者購物需求的多元化。在上面的模型中,使用者的行為被壓縮到了一個特徵向量中,就相當於是把所有的興趣愛好的資訊做了平均。但這樣做是不精準的。

比如說,一個女性游泳愛好者,可能既會關注包包,又會關注游泳類產品。那麼她在瀏覽包包的時候,對游泳類產品的興趣其實是與CTR的估計相當無關的事情。

那麼如何解決這個問題呢?解決的方法就是對於一個<使用者,商品>對來說,不同的商品,要去觸發使用者不同的興趣點才合理。這樣的操作在NLP問題中其實是非常常見的,比如翻譯問題,目標語言句子上的不同位置的詞語,對應的是源語言句子上的詞語也是不同的,這種對應關係被Attention所解決。

類似的,在這篇論文中,這個問題被興趣網路解決。

深度興趣網路

針對上述問題,提出了深度興趣網路,Deep Interest Network,簡稱DIN。

DIN的核心idea很直觀,模型結構如下圖,在這個結構中,可以看到,候選廣告需要去跟使用者行為中的每一個商品去做權重的計算,然後用權重去做加權平均得到使用者針對這個候選廣告的興趣向量。權重和加權,這就是Attention。

在這裡插入圖片描述

舉一個例子,如果使用者的行為歷史中有兩類,衣服和電子產品,其中衣服佔90%,電子產品佔10%,那麼給兩個產品T恤和iPhone,那麼計算得到的使用者對T恤的興趣很可能大於使用者對iPhone的興趣。之所以說很可能而不是肯定,是因為商品還要本身的性質,比如衣服可以換的很頻繁,但iPhone不是,衣服的盈利遠遠不如iPhone的利潤大等等。所以在計算attention的時候,還會有很多特徵需要挖掘來計算得到可靠的權重。

大家注意到,這裡使用者行為歷史中的操作是平行計算權重的。其實可以通過迴圈神經網路來把時間因素考慮進來。論文中嘗試過,但是沒有提升,可能的原因是興趣本身就是共存的,時間的前後順序影響不大。

訓練技巧

模型結構本身並不複雜,但相對於阿里巴巴的業務量而言,這個模型的訓練是非常難的,因為模型中的使用者和候選廣告都是以億計的,而特徵又是極其稀疏的。

比如,當上面第一張圖中的goods_ids的特徵在6億的時候,如果沒有正則化,那麼模型在訓練一個epoch後在訓練集上的loss會迅速下降,導致在測試集上過擬合。如下圖中的紅線所示:

在這裡插入圖片描述

而如果採用傳統的L2或者L1正則化又是不可能的,因為傳統方法需要在所有非0的引數上進行計算,而對於這個問題來說,每次訓練都在數以億計的引數上去做正則化是不可行的。

論文提出了一種近似的辦法,即Mini-batch aware的正則化,這種正則化的方法只考慮了在一個mini-batch中出現了的特徵所對應的引數。因為稀疏特徵的眾多,網路中大部分的引數都分佈在embedding層,論文以embedding層為例來講解了正則化的操作。如下所示:

在這裡插入圖片描述

上圖公式中表明瞭在embedding層上只計算mini-batch上用到的特徵所對應引數的L2正則化的方法,其中I(xj≠0)是指示器來表明xj特徵是否存在,nj表示所有樣本中xj不為0的樣本數。wj代表特徵j的embedding引數。

然後這個公式可以化簡:

再近似

其中

表示的是特徵j在mini-batch Bm中至少出現過一次。

這樣,經過正則化的梯度就可以計算出來:

在啟用函式上,論文提出了一種叫做Dice的啟用函式,是PRELU的泛化版本。兩種啟用函式圖示如下:

在這裡插入圖片描述

其中,論文上的PRelu的圖畫錯了,其公式如下:

基於這個公式,大家可以自行畫出正確的圖。

而Dice的公式如下:

Dice是PRelu的泛化版本,當均值為0方差為1的時候,兩者是等價的,之所以要改成這個形式,是為了要使啟用函式適應資料分佈。

實驗

採用了三個資料集

  • Amazon dataset
  • MovieLens Dataset
  • Alibaba Dataset

前兩者是公開資料集。

不同的方法在前兩個資料集上的對比,可以看到帶來的相對提升還是很高的,達到了2%和6.8%。

在這裡插入圖片描述

正則化方法的對比,

在這裡插入圖片描述

可以看到,即便在BaseModel上,正則化方法也有效。

在這裡插入圖片描述

在阿里巴巴的資料集上,帶來了11.65%的提升,又是財富在發光。

在這裡插入圖片描述

有了attention之後,推薦結果也變得可解釋了,下圖是一個視覺化效果圖,反應了當前商品和使用者歷史行為中的商品的權重。

在這裡插入圖片描述

思考

勤思考,多提問是每個Engineer的良好品德。

  • 隨著時間的流逝,使用者操作行為越來越長,在超長序列上建模會遇到效能問題,如何解決?

答案稍後釋出在公眾號【雨石記】上,歡迎關注。

參考文獻

  • [1]. Zhou, Guorui, Xiaoqiang Zhu, Chenru Song, Ying Fan, Han Zhu, Xiao Ma, Yanghui Yan, Junqi Jin, Han Li, and Kun Gai. “Deep interest network for click-through rate prediction.” In Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pp. 1059-1068. 2018.