DIN
-
思路
從輸入特征中獲取用戶歷史行為,并篩選出對預(yù)估任務(wù)有效的特征進行權(quán)重分配,進而對當(dāng)前商品廣告與用戶歷史行為商品的局部興趣進行打分(注意力得分)。
// 方法:
在embedding與MLP之間加入注意力機制。===》不同場景,特征權(quán)重分配不一樣;篩選出有用特征,劃分好哪些是重要特征。
image.png -
特征
image.png
- 網(wǎng)絡(luò)結(jié)構(gòu)
base model
image.png
缺陷:
image.png
- 喂入模型前,history與ad無交互。
- 喂入模型后,將會丟失交互信息,不僅如此,還將無關(guān)特征帶來的冗余信息作為噪音進入模型訓(xùn)練。
Activation Unit輸出Activation Weight,輸入包括用戶行為User-Embedding和候選廣告Candidate Ad-Embedding。相當(dāng)于得到Attention分?jǐn)?shù),將candidate Ad與歷史行為的每個商品進行交互,還考慮了他們兩個的外積(在三維幾何中,向量a和向量b的叉乘結(jié)果是一個向量,更為熟知的叫法是法向量,該向量垂直于a和b向量構(gòu)成的平面)。
對于不同的candidate ad,得到的用戶行為表示向量也不同:
最后輸出標(biāo)量權(quán)重。
幾個問題
// why sum-pooling?
https://zhuanlan.zhihu.com/p/365999532
對長度不等的embedding向量進行維度統(tǒng)一。pooling目的是為了保持某種不變性(旋轉(zhuǎn)、平移、伸縮等)。
mean-pooling,即對鄰域內(nèi)特征點只求平均,max-pooling,即對鄰域內(nèi)特征點取最大。根據(jù)相關(guān)理論,特征提取的誤差主要來自兩個方面:(1)鄰域大小受限造成的估計值方差增大;(2)卷積層參數(shù)誤差造成估計均值的偏移。一般來說,mean-pooling能減小第一種誤差,更多的保留圖像的背景信息,max-pooling能減小第二種誤差,更多的保留紋理信息。Stochastic-pooling則介于兩者之間,通過對像素點按照數(shù)值大小賦予概率,再按照概率進行亞采樣,在平均意義上,與mean-pooling近似,在局部意義上,則服從max-pooling的準(zhǔn)則。
可以看出,base model的pooling策略是不考慮特征重要度差異化的,activation環(huán)節(jié)主要是解決差異化區(qū)分的問題,以此優(yōu)化pooling使模型從特征中g(shù)et到更多信息。
// 如何實現(xiàn)attention?
這個講得比較清楚:https://zhuanlan.zhihu.com/p/339754431
Paper認為:softmax只能證明用戶對哪個商品感興趣的概率最大。比如,長history歸一化后,各個權(quán)重會變得很小,尤其是差異特別小。Attention Weight如果不做歸一化處理,就能很好地保留用戶的興趣強度。
- Mini-batch Aware Regularization
模型訓(xùn)練中的問題
-
防止過擬合過程中,由于embedding參數(shù)矩陣更新導(dǎo)致的參數(shù)過度龐大。
image.png - 用戶數(shù)據(jù)符合長尾定律,出現(xiàn)次數(shù)很多的往往是一小部分特征,大部分特征比較稀疏,考慮其權(quán)重,容易過擬合。
如何解決?
a)利用特征稀疏性,小批量數(shù)據(jù)下,部分列由于全0,不用更新,減小計算。
image.png
b)正則自適應(yīng):對于高頻特征,給予小的正則化強度減小懲罰;對于低頻特征,給予大的正則化強度增大懲罰。
那正則化尺度在哪呢?
按照每個batch樣本統(tǒng)計頻率進行正則化。
// 公式
image.png
image.png
image.png
image.png
- Data Adaptive Activation Function
面臨的問題:
ICS問題
https://www.bilibili.com/video/BV1zK4y137Se?spm_id_from=333.999.0.0
https://blog.csdn.net/mao_xiao_feng/article/details/54317852
why 數(shù)據(jù)分布變了?分布變了有啥影響?
參數(shù)更新引起的Covariate Shift導(dǎo)致同分布假設(shè)被破壞。造成:
- 獨立同分布假設(shè)破壞(訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)分布一致性被破壞),影響模型準(zhǔn)確性。
- 下層輸入變化導(dǎo)致進入激活函數(shù)的飽和區(qū),導(dǎo)致梯度消失。
-
上層不斷需要適應(yīng)分布變化,影響學(xué)習(xí)速率。
每層輸入數(shù)據(jù)分布發(fā)生變化,變得不可控。那如何使分布可控呢?
兩種思路:
a) 改變數(shù)據(jù)分布,適應(yīng)激活函數(shù)。
b) 改變激活函數(shù),適應(yīng)分布變化。(Dice)
image.png
// Dice數(shù)據(jù)自適應(yīng)激活函數(shù)
image.png
p(s)控制激活函數(shù)左右移動,適應(yīng)數(shù)據(jù)分布,臨界值控制臨界點;還要使p(s)取值得到的激活函數(shù)足夠平滑。
image.png
如何優(yōu)化p(s)?
均值取代臨界值;sigmoid取代階躍函數(shù)(細節(jié)優(yōu)化:E(s)控制左右平移,var控制帶寬,方差與帶寬正相關(guān))。
-
評價系統(tǒng)
image.png
gauc距0.5的偏移度,越大越好。
- DIN實現(xiàn)
這個過程拆解的比較好,但是看看就好:
https://zhuanlan.zhihu.com/p/338050940
image.png
實際應(yīng)用建議deepctr項目。
DIEN
https://arxiv.org/pdf/1809.03672.pdf
仍然是面向阿里電商廣告提出的,算是DIN升級版,但是模型結(jié)構(gòu)比較復(fù)雜,實踐當(dāng)中沒有DIN那么經(jīng)典,但不失為一種探索思路。
- 思路
與DIN的差異在于對于興趣的建模方式不一樣,將用戶興趣的先驗知識引入建模過程。DIEN最大的特點是不但要找到用戶的interest,還要抓住用戶interest的進化過程
如何表達興趣?
image.png
以往的模型認為用戶行為即興趣,但這種思路不嚴(yán)謹(jǐn),真正的用戶興趣包含在用戶行為之中(當(dāng)然無交互的并不意味著用戶一定不感興趣,畢竟推薦系統(tǒng)本身就是個非充分激勵系統(tǒng)),二者并非等價,文章在尋找一種用戶興趣演進的一種表達。
問題:
- 行為!=興趣。
- 顯示行為難以表達用戶潛在興趣。
- 用戶潛在行為如何獲取并表達興趣?
-
用戶“下一次購買”,不同于在歷史序列中綜合推薦。
興趣?什么是興趣?如何表達?
image.png
ps:原文中用RNN來實現(xiàn)興趣表達,實際上,我感覺用HMM應(yīng)該也可以。
-
網(wǎng)絡(luò)結(jié)構(gòu)
image.png
// 行為序列層
就用戶行為序列embedding,沒啥花頭。 - 興趣抽取層
- GRU記憶性網(wǎng)絡(luò),參數(shù)少,獲取序列關(guān)系,緩解梯度消失。
- 多輸入多數(shù)出結(jié)構(gòu),提取每一個時刻的興趣狀態(tài)。
- 輔助損失函數(shù),通過二分類的方式計算興趣抽取準(zhǔn)確性,有監(jiān)督學(xué)習(xí),防止興趣狀態(tài)失真。(下一時刻真實行為正例,負采樣得到的行為作為負例,與抽取興趣h分別喂到輔助網(wǎng)絡(luò)中,計算加權(quán)l(xiāng)oss作為總的loss的調(diào)整項)
- 興趣進化層
- attention篩選與target ad相關(guān)的興趣演化路徑。
- 加權(quán)層將注意力操作嵌入GRU更新門,構(gòu)造AUGRU結(jié)構(gòu)。(DIN就是加權(quán)組合)
// GRU
https://zhuanlan.zhihu.com/p/32481747
// AUGRU為什么這么選?
-
與target不相關(guān)狀態(tài),也可能影響狀態(tài)演化,狀態(tài)保持。
image.png -
保持更新門向量各個維度重要性。
image.png
DSIN模型
這個模型,結(jié)構(gòu)復(fù)雜,實踐中的意義可能不如研究意義大,大概了解下。
https://arxiv.org/pdf/1905.06482.pdf
- 思路
用戶的行為sequences其實是由多個sessions組成,其中多個sessions是通過用戶的點擊時間來區(qū)分。采用會話建模的方式,刻畫不同session用戶興趣演化。 -
模型結(jié)構(gòu)
image.png
1)序列切分層session division layer
2)會話興趣抽取層session interest extractor layer
3)會話間興趣交互層session interest interacting layer
4)會話興趣激活層session interest acti- vating layer - 實現(xiàn)
https://github.com/shenweichen/DSIN/blob/ffe2d0b4f7d8d507cf32fa6c9d583d5b9486e17f/code/models/dsin.py
僅供學(xué)習(xí)
attention機制 :https://zhuanlan.zhihu.com/p/339754431
https://arxiv.org/pdf/1706.06978.pdf
https://zhuanlan.zhihu.com/p/51623339
https://blog.csdn.net/u010352603/article/details/80590152
https://zhuanlan.zhihu.com/p/71695849
https://www.bilibili.com/video/BV1eV41147oi?from=search&seid=11155975345295308253&spm_id_from=333.337.0.0
https://zhuanlan.zhihu.com/p/54838663
https://www.bilibili.com/video/BV1wK4y1u7zN?spm_id_from=333.999.0.0
https://zhuanlan.zhihu.com/p/48601882
https://zhuanlan.zhihu.com/p/89700141