AutoRec
要點:
- 輸出層的節點數與輸入層相等,訓練這個網絡以期望得到近似恒等函數,網絡結構類似于word2vec
評價:這個模型2015年由澳大利亞國立大學提出, 是個單隱層的神經網絡推薦模型,網絡結構簡單,非常適合深度學習推薦系統的入門模型,但由于比較簡單, 表達能力不足,并且往往共現矩陣非常的稀疏, 更加加大了模型的預測難度, 并沒有真正的被應用。這個東西是將深度學習思想應用于推薦系統的初步嘗試, 拉開了使用深度學習思想解決推薦問題的序幕。
DeepCrossing
要點:
- 類別型特征經過embedding處理,數值型特征直接進入stacking層,進行連接,這部分為經典深度學習架構
-
Multiple Residual Units為多層殘差網絡
image.png
class Residual_block(nn.Module):
def __init__(self, hidden_unit, dim_stack):
super(Residual_block, self).__init__()
# 兩個線性層 注意維度, 輸出的時候和輸入的那個維度一致, 這樣才能保證后面的相加
self.linear1 = nn.Linear(dim_stack, hidden_unit)
self.linear2 = nn.Linear(hidden_unit, dim_stack)
self.relu = nn.ReLU()
def forward(self, x):
orig_x = x.clone()
x = self.relu(self.linear1(x))
x = self.linear2(x)
outputs = self.relu(x + orig_x) # 殘差鏈接
return outputs
評價:微軟于2016年在KDD上提出的模型,它算是第一個企業以正式論文的形式分享深度學習推薦系統的技術細節的模型。由于手工設計特征(特征工程)花費巨大精力,因此文章利用全連接隱層進行特征交叉(但針對性不強)。以現在的角度看待這個模型是非常簡單的,也就是Embedding+MLP的結構,但對當時影響是非常巨大。
NeuralCF
要點:
- GMF為元素積,MF和MLP的embedding向量是單獨學習的, 并不是共享的, 作者在論文里面也給出了原因, 就是這樣會更加的靈活,可以根據模型的復雜程度確定不同的隱向量的維度
評價:新加坡國立大學2017年提出,動機就是看著MF的內積操作比較簡單, 表達能力不強, 作者就用一個“多層的神經網絡+輸出層”替換了矩陣分解里面的內積操作, 這樣做一是讓用戶向量和物品向量做更充分的交叉, 得到更多有價值的特征組合信息。 二是引入更多的非線性特征, 讓模型的表達能力更強。局限是只使用了用戶和物品的ID特征,沒有加入更多其他特征。
PNN
要點:
-
z部分為向量拼接,W權重矩陣為N×M,N為Feature長度,M為embedding長度,W[i,j]與相應的z[i,j]對應相乘并加和,有D1個W即可重復D1次,形成D1個輸出,即L1層節點數(實際上就是z → D1的全連接嘛)
111.png
111.png -
p部分分為內積(IPNN)和外積模式(OPNN),與z部分類似,所不同的是W權重矩陣為N×N,z[i,j]改為p[i,j],內積模式為N個embedding兩兩內積(N×N個數),外積模式為N個embedding兩兩外積(N個N×N矩陣)再疊加到一起(N×N個數,等價于所有embedding求和后,與自身進行外積,圖111.jpg)
image.png
image.png
111.jpg - 數值型特征不經過Product Layer,而是直接進入L1層的全連接
評價:PNN在2016年由上海交大提出,模型在輸入、Embedding層, 多層神經網絡及最后的輸出層與DeepCrossing沒有區別, 唯一的就是Stacking層換成了Product層。 DeepCrossing把所有特征進行了交叉, 沒有針對性, 所以PNN這里就弄了個Product層, 專門進行特征之間的交叉的, 并且還提出了兩種特征交叉的方式。
Wide & Deep
要點:
-
deep部分數值型特征直接進入隱層,類別類特征要先進行embedding
image.png - wide部分使用User Installed App和Impression App(曝光的App)的交叉,實際等價于兩類特征元素兩兩相乘(外積)。公式
即所謂的“交叉積變換”,當第i個特征屬于第k個組合特征時,
的值為1,否則為0。假如特征組合這個特征域長度為n,當長度為r和長度為s的特征域兩兩交叉時,n=r×s;當長度為r、長度為s、長度為t的特征域三三交叉時,n=r×s×t,以此類推。現假設該特征組合域第m維的特征組合為i_j_k,若
均為1,則,
也為1,
(其他
均為0,
,不論
取0或1,均不影響
),但若
其中之一為0,則由于
為1,則必有一個值為0,進而
。
image.png
image.png - 帶L1正則化項的FTRL作為wide部分的優化方法(產生稀疏性),而使用AdaGrad作為deep部分的優化方法
評價:谷歌于2016年提出,Wide部分的主要作用是讓模型具有較強的記憶能力,Deep部分的主要作用是讓模型具有泛化能力,開創了組合模型的構造方法,對深度學習推薦模型的后續發展產生重大影響。
DCN(Deep & Cross)
要點:
- 類似wide & deep,但wide部分使用多層交叉層(Cross layer)對輸入向量進行特征交叉,每個交叉層均保留了輸入向量和初始化值
,因此輸出輸入之間的變化不會特別明顯。
111.png
111.png
評價:2017年由斯坦福大學和谷歌的研究人員提出,由多層交叉層組成的Cross網絡在Wide&Deep模型中Wide的基礎上進行特征的自動化交叉,避免了更多基于業務理解的人工特征組合。
FNN
要點:
- 基本等同于DeepCrossing,但embedding部分用事先訓練好的FM模型進行初始化,加快收斂速度
- l1和l2層使用tanh激活函數,輸出層使用sigmoid激活函數
評價:2016年由倫敦大學學院提出,引入DNN對特征進行更高階組合,減少特征工程,能在一定程度上增強FM的學習能力,這種嘗試為后續深度推薦模型的發展提供了新的思路。缺點是,兩階段訓練模式,在應用過程中不方便,且模型能力受限于FM表征能力的上限。和DeepCrossing一樣,沒有專門的特征交叉,針對性不強。
DeepFM
要點:
- Wide部分與Deep部分共享了輸入特征,參數并未增加
- 數值型特征無需進行embedding
評價:2017年由哈工大和華為諾亞提出,用FM替換了原來的Wide部分,加強了淺層網絡部分特征組合的能力(彌補了DeepCrossing和FNN的不足),動機類似于DCN
NFM
要點:
-
Bi-Interaction Pooling(特征交叉池化層),在該層將embedding的數據進行交叉(兩兩元素積,再求和,這一步可以參考FM的方法化簡;該層不涉及任何學習參數,只是線性的對特征進行交叉),然后送入DNN進一步學習。
111.jpg
111.jpg - 與PNN模型的結構非常相似;與deepFM的區別是,deepFM的FM部分直接送到輸入層,沒有進一步學習
評價:2017年新加坡國立大學提出,將FM和DNN結合起來,FM最多只能學習二階,NFM的思想是在FM學習的二階特征的基礎上加入DNN使其學習更高階的特征,一方面FM學好二階特征之后DNN學習更高階特征會更加容易更好學,另一方面FM學習了低階特征然后DNN繼續學習高階特征,又是一次低階特征和高階特征組合的模型。
AFM
要點:
- 這個模型之中并沒有DNN模塊,但是保存了NFM的二階交叉特征池化層
-
需要注意的是Attention的加入,并不是單單給某一個二維交叉特征一個權重,這樣子的話對于未在訓練數據中出現的交叉特征就無法進行權重賦予。所以在上圖中也可以看到Attention是一個Net的形式給出。也就是用了一個MLP將注意力分數進行參數化,該注意力網絡的結構是一個簡單的單全連接層加softmax輸出層的結構
image.png - 防止過擬合常用的方法是Dropout或者L2 L1正則化。AFM的做法是:在Pair-wise Interaction Layer的輸出使用Dropout;在Attention Network中使用L2正則化
評價:2017年由浙江大學和新加坡國立大學研究員提出的一個模型(和NFM是同一個作者),AFM模型其實就是從前面講解過的NFM模型的進化升級版, 該模型和NFM模型結構上非常相似, 算是NFM模型的一個延伸,在NFM中, 不同特征域的特征embedding向量經過特征交叉池化層的交叉,將各個交叉特征向量進行“加和”, 然后后面跟了一個DNN網絡,但是NFM中的加和池化,它相當于“一視同仁”地對待所有交叉特征, 沒有考慮不同特征對結果的影響程度,作者認為這可能會影響最后的預測效果, 因為不是所有的交互特征都能夠對最后的預測起作用。 沒有用的交互特征可能會產生噪聲。或者說加大對預測結果重要的特征,抑制噪聲特征。
DIN
要點:
- 與Base相比,加入了attention機制,attention機制在數學形式上只是將過去的平均操作或加和操作換成了加權和或加權平均操作
- 商鋪id只跟用戶歷史行為中的商鋪id序列發生作用,商品id亦然
評價:DIN模型是阿里媽媽團隊2018年提出的CTR預估模型,雖然是幾年前提出的,但是現在應用仍比較廣泛
DIEN
要點:
- 與DIN相比,使用GRU引入了歷史行為序列信息,GRU解決了RNN梯度消失問題,與LSTM相比參數更少收斂更快
- 行為序列層作用為embedding;興趣抽取層作用為模擬用戶遷移;興趣進化層在抽取層的基礎上加入attention,模擬與廣告相關的興趣進化,后兩者是關鍵
評價:2019年阿里媽媽提出的DIN演化版本