轉:https://blog.csdn.net/yujianmin1990/article/details/80712219
前言
阿里的商業廣告CTR預測,使用了最新的Attention機制,我們來看一下是怎麼用的,在相關的推薦工作中借鑑下經驗。
爲什麼用Attention
爲什麼要用attention?
1) 業務中的發現,用戶的歷史行爲數據,並不都對每一次的點擊做貢獻,而是僅僅有一部分在起作用。這就很像attention了,告知某些點上是與當前的狀態最相關的。
舉個栗子:一個愛好游泳的人,購買過泳衣,也購買過書籍,那麼這次的廣告裏面,泳鏡就更容易受到泳衣購買歷史的影響。文中提到的“local activation”的用戶特性。
2) 在應用其他的算法時,發現會將好多Embedding的特徵,直接做累加等combinear等操作,簡單粗暴有效,卻會丟失好多信息。如果能在這裏做些工作,會有更好的效果。
思考:在廣告裏面是這樣的,那麼在圖文中是不是也有這樣的特性。人的基本行爲特點是不變的,也具有這樣的特性僅部分歷史行爲對當前的點擊是貢獻最大的,而其他的可能就沒啥貢獻或者較少。實時反饋,是實時的attention,只不過偏近視,目光不長遠。
怎麼用
上個圖,比較下一般的模型與DIN模型的差別,就知道在哪裏具體使用Attention了。
attention在這裏的實際意義是:每個Ad,都有一堆歷史行爲對其產生attention的影響分,這些attention分值與歷史行爲共同對這個Ad下的用戶表示做加權。(可以將行爲結構信息保留下來,並且提供了注意焦點)將上圖中改進的地方展開,如下:
用戶在某個廣告下的Embedding表示Vu(Va)Vu(Va)是廣告的Embedding表示。
其他亮點
Evaluate Metric
GAUC: generation of AUC
單純地用AUC評估,會帶有用戶偏差,若是將用戶信息考慮進來則會更穩定更可信。
Dice Activation
一般的激活函數已經不能滿足需求了,比如PReLU,這幫子人造了個強依賴數據的激活函數,根據數據動態地調整rectified-function。
其中PReLU是:f(s)={sass>0s≤0f(s)={ss>0ass≤0。
Regularization
稀疏輸入,爲什麼會overfitting呢?這個跟數據分佈有關係,互聯網時代的數據特點,超長尾頭部重,頭重(小比例的特徵頻繁出現)容易過擬合,長尾(大比例的特徵低頻出現)則容易帶來噪聲,不好學。當增加細粒度的特徵時,也極其容易由於細粒度的樣本過於密集而帶來負面效果。怎麼辦呢?在這裏根據樣本在當前batch內出現的頻次做了正則約束。LL
思考
- 圖文推薦也可以使用Attention來專門處理推薦時的part-contribution問題,補充實時反饋的缺陷。
- 大規模的稀疏數據,需要特別小心處理長尾頭重問題,這裏使用的改進版正則和激活是值得借鑑的。
- 離線評估的GAUC更穩定可信,再上線A/B。