廣告行業中那些趣事系列12:推薦系統中融合注意力機制的DIN模型

本篇一共5432個字


摘要:本文主要介紹阿里的深度興趣網絡DIN模型。爲了解決推薦領域中用戶歷史行爲包含大量用戶興趣信息,但只有一小部分用戶興趣信息會最終影響用戶點擊行爲的問題,阿里引入Attention機制提升相關商品的權重同時降低非相關商品的權重,最終實現對用戶歷史行爲進行加權的目的。同時講了DIN模型中其他具有借鑑價值的工程實踐,包括自適應正則Regularization、自適應激活函數Dice和評價指標使用GAUC替代AUC。

本文按照如下思維導圖進行講解:

 

01 爲啥要學習DIN模型

 

1.1 DIN模型介紹以及在阿里的作用

DIN全稱是深度興趣網絡模型(Deep Interest Network),是阿里媽媽精準定向檢索及基礎算法團隊在2017年6月針對電子商務領域提出的CTR預估模型,主要是充分利用和挖掘用戶歷史行爲數據提升CTR預估指標。阿里推薦系統整體框架如下圖所示:

圖1 阿里推薦系統整體框架

 

整體流程可以分爲以下幾個步驟:

  • 獲取用戶歷史行爲數據,比如逛了什麼店鋪,購買了什麼商品等等;

  • 使用Matching模型產生候選的商品,一般是從海量的商品中選擇用戶可能感興趣的部分商品,類似初篩的操作;

  • 使用Ranking模型對候選的商品進行精排的操作,得到候選商品可能點擊的概率,並根據概率大小逆序排序生成最終的用戶推薦列表;

  • 記錄用戶對於當前推薦商品的行爲,點擊標誌爲1,未點擊則標誌爲0,反向用於模型訓練和預測,系統自己生產和消費用戶行爲數據,形成閉環。

 

DIN模型在整個框架中負責生成用戶推薦商品列表,也就是進行商品推薦。

 

1.2 DIN模型推薦效果顯著提升

對於阿里這樣大廠來說,推薦系統的好壞直接關乎真金白銀,所以阿里推出的DIN模型推薦效果非常優秀。下面分別對比LR、Wide&Deep、DeepFM和

BaseModel(阿里上一版本的深度網絡推薦系統)在公開數據集、離線數據以及線上效果對比。

 

1.2.1 公開數據集對比效果

分別對比模型在公開數據集MovieLens和Amazon(Electro)中的效果如下圖所示:

圖2 對比模型在公開數據集上的效果

 

在公開數據集下DIN模型表現最好,因爲使用了注意力機制,可以自適應的得到用戶興趣的不同表示,所以極大提升了模型的表達能力。

 

1.2.2 對比阿里巴巴離線實驗

 

圖3 對比模型在阿里巴巴離線數據上的效果

 

DIN模型相比於BaseModel在AUC方面提升了1.89%。

 

1.2.3 對比線上實驗A/B test

線上A/B test實驗中,DIN模型的CTR指標比BaseModel模型提升了10%,RPM提升了3.8%。

 

綜合來看,DIN模型在公開數據集、阿里巴巴離線數據和線上實驗A/B test中推薦效果都有顯著的提升。

 

1.3 應用到我們的場景

之前說過我們團隊很重要的一個任務就是做廣告推薦,就是爲廣告主圈選合適的人羣進行廣告投放,最終達到良好的廣告轉化效果。從大的範圍來說,阿里推薦的商品本身就是廣告的一種,所以我們的應用場景是一致的。通過公開數據集、阿里巴巴離線數據和線上實驗A/B test效果也可以看出,DIN模型在推薦效果上有顯著的提升,所以有必要學習並應用到我們實際項目中來。

 

02 深度學習中的CTR模型

2.1 深度學習中的CTR模型常規操作

隨着深度學習已經應用到人工智能的方方面面,自然在CTR預估領域也有廣泛的應用,比如常見的Wide&Deep、DeepFM等算法。通常情況下深度學習中的CTR模型分成以下流程:

  • 通過embedding層將高維稀疏特徵轉換成固定長度的embedding向量;

  • 通過多個全連接層學習特徵之間的非線性關係;

  • 通過sigmoid函數輸出概率值。

 

總結下來是這樣一個流程:Sparse Features -> Embedding Vector -> MLPs -> Sigmoid-> Output。

 

常規方法的優點:相比於傳統的機器學習算法比如LR等,通過神經網絡可以擬合高階的非線性關係,同時大大減少了繁瑣的人工特徵工程的工作量。

 

2.2 阿里基礎版本深度推薦網絡BaseModel

下圖是DIN模型之前阿里的深度推薦網絡結構圖,後文統稱爲BaseModel。

圖4  BaseModel網絡結構圖

 

從上圖可以看出,BaseModel模型基本上是深度學習中CTR模型的常規操作:首先將用戶和商品這些高維稀疏特徵經過embedding層轉換成embedding向量。這裏需要注意的是用戶行爲特徵會經過一個sum pooling得到一個固定長度的向量。將用戶向量、用戶行爲向量、候選廣告向量和上下文向量進行拼接操作;然後將拼接的embedding向量經過兩層全連接層學習特徵之間的非線性關係;最後通過Softmax函數輸出點擊概率。

 

模型中用到的特徵主要分成以下四部分:用戶特徵、用戶行爲特徵、廣告特徵和上下文特徵,具體如下圖所示:

圖5 特徵列表

 

One-hot特徵比較常見,比較特殊的是用戶行爲特徵這種multi-hot多值離散特徵。通過下圖說明one-hot和multi-hot的區別:

圖6 one-hot和multi-hot的區別

 

比如周幾和性別都是one-hot類型,這種輸入都是高維稀疏矢量,並且只有一位爲1,其他都是0。用戶行爲特徵是multi-hot類型,輸入也是高維稀疏矢量,區別是可能多位爲1,比如用戶瀏覽了三種商品,那麼這三種商品對應的位置都是1,其他則爲0。

 

這裏需要重點注意的是用戶行爲特徵的處理流程。因爲不同用戶購買的商品數量是不同的,所以是multi-hot類型。通過引入sum pooling層將multi-hot向量轉化成成固定長度的embedding向量。這種方式的好處是不管用戶購買的商品差異有多大(這裏的差異表現在購買商品的列表上),我們都會得到一個固定長度的embedding向量。但是也存在很大的缺點,這也是後面DIN模型需要重點解決的問題。

 

03 主角登場深度興趣網絡DIN

 

3.1 BaseModel存在的問題

上面講到BaseModel對於用戶行爲通過sum pooling層將multi-hot向量轉化成固定長度的embedding,這種操作存在一個明顯的缺點:對於候選的商品來說,用戶歷史行爲中購買的商品是同等重要的。通過下面一個例子進行詳細說明:

圖7 用戶購買行爲列表

 

上表中是兩位用戶購買商品的歷史行爲和候選商品表。年輕媽媽購買過羊毛衫、手提袋、耳環、童裝、運動裝等等,而游泳愛好者則購買過浴服、旅遊手冊、踏水板、馬鈴薯、冰激凌和堅果等等。當給游泳愛好者推薦護目鏡(goggle)時,BaseModel認爲當前用戶購買過的浴服、旅遊手冊、踏水板、馬鈴薯、冰激凌和堅果等是一樣重要的。但是明眼人一下就能看出來其中的不合理之處:一個可能的共識是當需要給游泳愛好者推薦護目鏡時列表中那些和游泳愛好相關的商品肯定比那些和游泳不相關的商品的重要性要高。而DIN模型的最終目的就是自動提升相關商品的重要性,降低非相關商品的重要性。所以DIN模型的實質就是解決推薦領域中用戶歷史行爲中包含大量的用戶興趣信息,但是隻有一小部分用戶興趣信息會最終影響用戶點擊行爲的問題。

 

3.2 引入Attention機制的DIN模型

爲了自動提升用戶歷史行爲中相關商品的重要性,阿里提出了DIN模型,模型主要思想是:將NLP中的Attention機制引入推薦系統,從而實現通過Attention機制對用戶歷史行爲加權的目的。DIN模型網絡結構如下圖所示:

圖8 DIN模型網絡結構

 

對比DIN模型和BaseModel網絡結構,可以發現整體大同小異,區別在於如何獲取用戶歷史行爲embedding向量信息。BaseModel直接對多個商品向量信息進行等權的sum pooling操作。這樣雖然能得到固定長度的歷史行爲embedding向量,但是會帶來信息的丟失。因爲是等權操作,所以不同商品的embedding向量權重是一樣的。而DIN模型將候選商品分別和用戶歷史行爲中購買的商品進行局部激活操作(local activation),其本質就是weighted-sum pooling操作,讓模型更加關注有用的信息。

 

DIN模型主要通過ActivationUnit神經網絡來計算用戶行爲的embedding向量和候選商品的emebdding向量的Attention權重。Activation Unit網絡結構如下圖所示:

圖9 ActivationUnit網絡結構圖

 

Activation Unit網絡輸入包含兩部分,分別是用戶歷史行爲中某個購買的商品embedding向量和候選商品的embedding向量,輸出是用戶歷史行爲中購買的這個商品對候選商品的重要性,也就是權重Activation Weight。其中需要注意的是不僅僅使用兩者的embedding向量,還會將兩者的向量經過外積計算得到的向量一起進行拼接,論文中指出這種方法有利於模型學習兩者之間的相關性。

 

這裏需要注意的是阿里引入的Attention機制並不是原始NLP任務中採用的Attention。原始的NLP頂層通過Softmax使得各權重之和爲1。DIN模型中拋棄了頂層的Softmax,放寬了對於權重之和爲1的限制。這麼做的原因是將權重之和也作爲有意義的參考價值,對於候選商品來說用戶歷史行爲權重之和越大代表相關程度越高。而如果加入Softmax則權重和均爲1,那麼就失去了這個參考價值。

 

下面從計算公式的角度分析Attention機制對於計算用戶興趣embedding的變化。加入Activation Unit後,用戶的興趣計算公式如下所示:

圖10 加入Activation Unit之後用戶興趣計算公式

 

其中V_u是用戶的embedding向量,V_a代表候選商品的embedding向量,V_i是用戶歷史行爲中某一次購買商品的embedding向量。加入Attention機制之前權重w_i都是1,也就是說列表中的商品權重都是一樣的。但是加入Attention機制之後權重w_i變成了g(V_i,V_a),這個g(V_i,V_a)就是Activation Unit單元計算得到的Activation Weight。

 

通過一個簡單的方式理解加入Attention機制前後對於候選推薦商品A來說用戶各個歷史行爲的重要性。假如用戶歷史購買過五件商品,加入Attention機制之前,每件商品的權重都是一樣的,假設都是0.2。現在加入Attention機制之後,可能五件商品的權重變成了0.6、0.3、0.1、0.1、0.1,其中0.6和0.3代表和商品A有關的商品,其他代表和商品A無關的商品。通過這種Attention機制很好的實現了自動給用戶歷史行爲中和候選推薦商品相關的行爲提升權重,給不相關的行爲降低權重的目的。

 

3.3 DIN效果可視化圖

圖11 DIN模型效果可視化圖

 

上圖是DIN模型局部激活的效果展示圖。可以看出當我們的候選商品是一件衣服時,用戶歷史行爲中和衣服相關的商品具有更高的權重,非衣服的權重則較低。

 

04 其他有價值的工程實踐

Attention機制的引入是DIN模型最核心的價值,但是該模型的價值不僅於此。DIN模型中還包含很多阿里工程師的優秀工程實踐。

 

4.1 自適應正則Regularization

CTR預估模型中輸入一般是高維稀疏特徵,比如論文中列出商品id特徵爲6億。如果不添加任何正則的方法,模型在一個epoch後效果會如下圖所示快速下降:

圖12 不添加正則化模型效果迅速下降

 

針對這個問題通常做法是使用L1、L2或者Dropout等方法防止過擬合。但這種方式對於工業級CTR模型並不適用。以L2正則化爲例,當有上億參數時計算每個mini-batch下所有參數的L2正則化,計算量太大。

 

通過分析發現用戶數據符合長尾定律long-tail law,也就是說小部分特徵出現多次,而大部分特徵僅出現幾次。這種長尾現象會給模型訓練增加很多噪聲,並且加重了過擬合的風險。

 

解決這個問題最簡單的方法是捨棄出現次數較少的特徵,但是缺點是人爲的丟失了一些信息,導致模型更容易過擬合。同時需要設置閾值來確定捨棄的次數,這個新的超參數需要通過實驗不斷修正,並且可能發生變化。

 

針對這個問題阿里媽媽的工程師提出了自適應正則的方法,核心是根據特徵出現的頻率自適應的調整正則化的強度:對於出現頻率較高的特徵給與較小的正則化強度,同樣的對於出現頻率較低的給與較大的正則化強度。計算公式如下所示:

圖13 自適應正則化計算公式

 

4.2 自適應激活函數Dice

要說Dice自適應激活函數(Data Dependent Activation Function),必須從Relu函數說起。下圖是從Relu、PRelu到Dice自適應激活函數:

圖14 從Relu到Dice激活函數圖

 

PRelu是Relu的改良版,其中的a_i參數是可以學習的。當a_i爲0時PRelu退化爲Relu函數;當a_i是一個固定的很小的值時,PRelu退化爲LRelu。PRelu相當於是輸出x在0點的階躍整流器。由於Relu在x小於0時梯度爲0,可能導致網絡停止更新,所以PRelu對整流器的左半部分進行了優化,使得x小於0時輸出不爲0。雖然PRelu可以提升準確率,但是也增加了模型過擬合的風險。

 

因爲PRelu函數總是將0作爲控制轉折點,實際項目中輸入層是不同分佈的,也就是分割點不一定爲0,所以阿里媽媽的工程師將PRelu做了平滑進行自適應的調整,使得拐點依賴於數據的分佈而不再是固定的0。Dice激活函數的計算公式如下:

圖15 Dice激活函數公式

 

這裏可以把Dice看成是PRelu的一種推廣,主要思想是根據輸入數據分佈來自適應調修正點,使得修正點不再是默認的0值,而是數據均值。除此之外,Dice還有一個好處是可以平滑過渡兩個狀態。也可以看出,當E(s)=0 and var[s]=0時,Dice退化爲PRelu函數。

 

4.3 評價指標使用GAUC替代AUC

AUC是對於全體樣本排序後計算的一個值,反應了模型對於整體樣本的排序能力。但是用戶推薦是個性化的場景,不同用戶之間的商品排序不適合放在一起比較。我們最終的目的是對於每個用戶來說想要的結果排在前面。這裏通過下面一個例子進行說明:

 

假如現在有兩個用戶甲和乙,一共有5個樣本,其中+表示正樣本,-則表示負樣本。因爲同樣的樣本對於甲和乙可能是不同的label,所以應該進一步分成甲+、甲-、乙+和乙-。現在有兩個模型A和B,對這5個樣本的預測得分從小到大排序如下表所示:

圖16 用戶得分表

 

從以上模型預測結果來看,對於甲用戶來說,模型A和模型B對甲的正樣本打分都比負樣本高,因爲甲+都在甲-前面。同理用戶乙也是如此。因此對於用戶甲和用戶乙來說兩個模型的效果是一樣好的。

但是如果分別計算兩個模型的AUC,那麼模型A的AUC值爲0.883,模型B的AUC值爲0.667。這時候我們發現AUC在當前場景下不準了,針對這種情況阿里媽媽團隊提出了Group AUC作爲評價指標。GAUC會先計算各個用戶自己的AUC,然後加權平均,GAUC公式如下所示:

圖17 GAUC計算公式

 

實際計算時我們還可以將權重設置爲每個用戶瀏覽或者點擊的次數,並且會過濾掉單個用戶全是正樣本或者全是負樣本的情況,進一步消除用戶偏出對模型的影響。最終實驗也證明了GAUC的確是一個更加合理的評價指標。

 

總結

本文主要介紹阿里的深度興趣網絡DIN模型。首先講了下爲啥要學習DIN模型,作爲阿里最新(2018年時)的推薦系統模型,相比於上一代模型BaseModel推薦效果有顯著提升,同樣適用於我們團隊廣告推薦的場景;然後講了下深度學習中的CTR模型常規操作和阿里基礎版本深度推薦網絡;接着重點講了下本文的主角深度興趣網絡DIN模型,爲了解決推薦領域中用戶歷史行爲包含大量用戶興趣信息,但只有一小部分用戶興趣信息會最終影響用戶點擊行爲的問題,阿里引入Attention機制提升相關商品的權重同時降低非相關商品的權重,最終實現對用戶歷史行爲進行加權的目的;最後講了DIN模型中其他具有借鑑價值的工程實踐,包括自適應正則Regularization、自適應激活函數Dice和評價指標使用GAUC替代AUC。

 

參考資料

[1] DeepInterest Network for Click-Through Rate Prediction

最新最全的文章請關注我的微信公衆號:數據拾光者。

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