AutoRec
要點(diǎn):
- 輸出層的節(jié)點(diǎn)數(shù)與輸入層相等角撞,訓(xùn)練這個網(wǎng)絡(luò)以期望得到近似恒等函數(shù),網(wǎng)絡(luò)結(jié)構(gòu)類似于word2vec
評價(jià):這個模型2015年由澳大利亞國立大學(xué)提出再沧, 是個單隱層的神經(jīng)網(wǎng)絡(luò)推薦模型提鸟,網(wǎng)絡(luò)結(jié)構(gòu)簡單帕翻,非常適合深度學(xué)習(xí)推薦系統(tǒng)的入門模型,但由于比較簡單晕拆, 表達(dá)能力不足藐翎,并且往往共現(xiàn)矩陣非常的稀疏, 更加加大了模型的預(yù)測難度潦匈, 并沒有真正的被應(yīng)用阱高。這個東西是將深度學(xué)習(xí)思想應(yīng)用于推薦系統(tǒng)的初步嘗試, 拉開了使用深度學(xué)習(xí)思想解決推薦問題的序幕茬缩。
DeepCrossing
要點(diǎn):
- 類別型特征經(jīng)過embedding處理赤惊,數(shù)值型特征直接進(jìn)入stacking層,進(jìn)行連接凰锡,這部分為經(jīng)典深度學(xué)習(xí)架構(gòu)
-
Multiple Residual Units為多層殘差網(wǎng)絡(luò)
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
評價(jià):微軟于2016年在KDD上提出的模型掂为,它算是第一個企業(yè)以正式論文的形式分享深度學(xué)習(xí)推薦系統(tǒng)的技術(shù)細(xì)節(jié)的模型裕膀。由于手工設(shè)計(jì)特征(特征工程)花費(fèi)巨大精力,因此文章利用全連接隱層進(jìn)行特征交叉(但針對性不強(qiáng))勇哗。以現(xiàn)在的角度看待這個模型是非常簡單的昼扛,也就是Embedding+MLP的結(jié)構(gòu),但對當(dāng)時影響是非常巨大欲诺。
NeuralCF
要點(diǎn):
- GMF為元素積抄谐,MF和MLP的embedding向量是單獨(dú)學(xué)習(xí)的, 并不是共享的扰法, 作者在論文里面也給出了原因蛹含, 就是這樣會更加的靈活,可以根據(jù)模型的復(fù)雜程度確定不同的隱向量的維度
評價(jià):新加坡國立大學(xué)2017年提出塞颁,動機(jī)就是看著MF的內(nèi)積操作比較簡單浦箱, 表達(dá)能力不強(qiáng)吸耿, 作者就用一個“多層的神經(jīng)網(wǎng)絡(luò)+輸出層”替換了矩陣分解里面的內(nèi)積操作, 這樣做一是讓用戶向量和物品向量做更充分的交叉酷窥, 得到更多有價(jià)值的特征組合信息咽安。 二是引入更多的非線性特征, 讓模型的表達(dá)能力更強(qiáng)竖幔。局限是只使用了用戶和物品的ID特征板乙,沒有加入更多其他特征。
PNN
要點(diǎn):
-
z部分為向量拼接拳氢,W權(quán)重矩陣為N×M募逞,N為Feature長度,M為embedding長度馋评,W[i,j]與相應(yīng)的z[i,j]對應(yīng)相乘并加和放接,有D1個W即可重復(fù)D1次,形成D1個輸出留特,即L1層節(jié)點(diǎn)數(shù)(實(shí)際上就是z → D1的全連接嘛)
-
p部分分為內(nèi)積(IPNN)和外積模式(OPNN)纠脾,與z部分類似,所不同的是W權(quán)重矩陣為N×N蜕青,z[i,j]改為p[i,j]苟蹈,內(nèi)積模式為N個embedding兩兩內(nèi)積(N×N個數(shù)),外積模式為N個embedding兩兩外積(N個N×N矩陣)再疊加到一起(N×N個數(shù)右核,等價(jià)于所有embedding求和后慧脱,與自身進(jìn)行外積,圖111.jpg)
- 數(shù)值型特征不經(jīng)過Product Layer贺喝,而是直接進(jìn)入L1層的全連接
評價(jià):PNN在2016年由上海交大提出菱鸥,模型在輸入、Embedding層躏鱼, 多層神經(jīng)網(wǎng)絡(luò)及最后的輸出層與DeepCrossing沒有區(qū)別氮采, 唯一的就是Stacking層換成了Product層。 DeepCrossing把所有特征進(jìn)行了交叉染苛, 沒有針對性鹊漠, 所以PNN這里就弄了個Product層, 專門進(jìn)行特征之間的交叉的茶行, 并且還提出了兩種特征交叉的方式贸呢。
Wide & Deep
要點(diǎn):
-
deep部分?jǐn)?shù)值型特征直接進(jìn)入隱層,類別類特征要先進(jìn)行embedding
- wide部分使用User Installed App和Impression App(曝光的App)的交叉拢军,實(shí)際等價(jià)于兩類特征元素兩兩相乘(外積)。公式即所謂的“交叉積變換”怔鳖,當(dāng)?shù)趇個特征屬于第k個組合特征時茉唉,的值為1,否則為0。假如特征組合這個特征域長度為n度陆,當(dāng)長度為r和長度為s的特征域兩兩交叉時艾凯,n=r×s;當(dāng)長度為r懂傀、長度為s趾诗、長度為t的特征域三三交叉時,n=r×s×t蹬蚁,以此類推∈牙幔現(xiàn)假設(shè)該特征組合域第m維的特征組合為i_j_k,若均為1犀斋,則,也為1贝乎,(其他均為0,叽粹,不論取0或1览效,均不影響),但若其中之一為0虫几,則由于為1锤灿,則必有一個值為0,進(jìn)而辆脸。
- 帶L1正則化項(xiàng)的FTRL作為wide部分的優(yōu)化方法(產(chǎn)生稀疏性)但校,而使用AdaGrad作為deep部分的優(yōu)化方法
評價(jià):谷歌于2016年提出,Wide部分的主要作用是讓模型具有較強(qiáng)的記憶能力每强,Deep部分的主要作用是讓模型具有泛化能力始腾,開創(chuàng)了組合模型的構(gòu)造方法,對深度學(xué)習(xí)推薦模型的后續(xù)發(fā)展產(chǎn)生重大影響空执。
DCN(Deep & Cross)
要點(diǎn):
- 類似wide & deep浪箭,但wide部分使用多層交叉層(Cross layer)對輸入向量進(jìn)行特征交叉,每個交叉層均保留了輸入向量和初始化值辨绊,因此輸出輸入之間的變化不會特別明顯奶栖。
評價(jià):2017年由斯坦福大學(xué)和谷歌的研究人員提出,由多層交叉層組成的Cross網(wǎng)絡(luò)在Wide&Deep模型中Wide的基礎(chǔ)上進(jìn)行特征的自動化交叉门坷,避免了更多基于業(yè)務(wù)理解的人工特征組合宣鄙。
FNN
要點(diǎn):
- 基本等同于DeepCrossing,但embedding部分用事先訓(xùn)練好的FM模型進(jìn)行初始化默蚌,加快收斂速度
- l1和l2層使用tanh激活函數(shù)冻晤,輸出層使用sigmoid激活函數(shù)
評價(jià):2016年由倫敦大學(xué)學(xué)院提出,引入DNN對特征進(jìn)行更高階組合绸吸,減少特征工程鼻弧,能在一定程度上增強(qiáng)FM的學(xué)習(xí)能力设江,這種嘗試為后續(xù)深度推薦模型的發(fā)展提供了新的思路。缺點(diǎn)是攘轩,兩階段訓(xùn)練模式叉存,在應(yīng)用過程中不方便,且模型能力受限于FM表征能力的上限度帮。和DeepCrossing一樣歼捏,沒有專門的特征交叉,針對性不強(qiáng)笨篷。
DeepFM
要點(diǎn):
- Wide部分與Deep部分共享了輸入特征瞳秽,參數(shù)并未增加
- 數(shù)值型特征無需進(jìn)行embedding
評價(jià):2017年由哈工大和華為諾亞提出,用FM替換了原來的Wide部分冕屯,加強(qiáng)了淺層網(wǎng)絡(luò)部分特征組合的能力(彌補(bǔ)了DeepCrossing和FNN的不足)寂诱,動機(jī)類似于DCN
NFM
要點(diǎn):
-
Bi-Interaction Pooling(特征交叉池化層),在該層將embedding的數(shù)據(jù)進(jìn)行交叉(兩兩元素積安聘,再求和痰洒,這一步可以參考FM的方法化簡;該層不涉及任何學(xué)習(xí)參數(shù)浴韭,只是線性的對特征進(jìn)行交叉)丘喻,然后送入DNN進(jìn)一步學(xué)習(xí)。
- 與PNN模型的結(jié)構(gòu)非常相似念颈;與deepFM的區(qū)別是泉粉,deepFM的FM部分直接送到輸入層,沒有進(jìn)一步學(xué)習(xí)
評價(jià):2017年新加坡國立大學(xué)提出榴芳,將FM和DNN結(jié)合起來嗡靡,F(xiàn)M最多只能學(xué)習(xí)二階,NFM的思想是在FM學(xué)習(xí)的二階特征的基礎(chǔ)上加入DNN使其學(xué)習(xí)更高階的特征窟感,一方面FM學(xué)好二階特征之后DNN學(xué)習(xí)更高階特征會更加容易更好學(xué)讨彼,另一方面FM學(xué)習(xí)了低階特征然后DNN繼續(xù)學(xué)習(xí)高階特征,又是一次低階特征和高階特征組合的模型柿祈。
AFM
要點(diǎn):
- 這個模型之中并沒有DNN模塊哈误,但是保存了NFM的二階交叉特征池化層
-
需要注意的是Attention的加入,并不是單單給某一個二維交叉特征一個權(quán)重躏嚎,這樣子的話對于未在訓(xùn)練數(shù)據(jù)中出現(xiàn)的交叉特征就無法進(jìn)行權(quán)重賦予蜜自。所以在上圖中也可以看到Attention是一個Net的形式給出。也就是用了一個MLP將注意力分?jǐn)?shù)進(jìn)行參數(shù)化卢佣,該注意力網(wǎng)絡(luò)的結(jié)構(gòu)是一個簡單的單全連接層加softmax輸出層的結(jié)構(gòu)
- 防止過擬合常用的方法是Dropout或者L2 L1正則化重荠。AFM的做法是:在Pair-wise Interaction Layer的輸出使用Dropout;在Attention Network中使用L2正則化
評價(jià):2017年由浙江大學(xué)和新加坡國立大學(xué)研究員提出的一個模型(和NFM是同一個作者)虚茶,AFM模型其實(shí)就是從前面講解過的NFM模型的進(jìn)化升級版戈鲁, 該模型和NFM模型結(jié)構(gòu)上非常相似尾膊, 算是NFM模型的一個延伸,在NFM中荞彼, 不同特征域的特征embedding向量經(jīng)過特征交叉池化層的交叉,將各個交叉特征向量進(jìn)行“加和”, 然后后面跟了一個DNN網(wǎng)絡(luò)待笑,但是NFM中的加和池化鸣皂,它相當(dāng)于“一視同仁”地對待所有交叉特征, 沒有考慮不同特征對結(jié)果的影響程度暮蹂,作者認(rèn)為這可能會影響最后的預(yù)測效果寞缝, 因?yàn)椴皇撬械慕换ヌ卣鞫寄軌驅(qū)ψ詈蟮念A(yù)測起作用。 沒有用的交互特征可能會產(chǎn)生噪聲仰泻【B剑或者說加大對預(yù)測結(jié)果重要的特征,抑制噪聲特征集侯。
DIN
要點(diǎn):
- 與Base相比被啼,加入了attention機(jī)制,attention機(jī)制在數(shù)學(xué)形式上只是將過去的平均操作或加和操作換成了加權(quán)和或加權(quán)平均操作
- 商鋪id只跟用戶歷史行為中的商鋪id序列發(fā)生作用棠枉,商品id亦然
評價(jià):DIN模型是阿里媽媽團(tuán)隊(duì)2018年提出的CTR預(yù)估模型浓体,雖然是幾年前提出的,但是現(xiàn)在應(yīng)用仍比較廣泛
DIEN
要點(diǎn):
- 與DIN相比辈讶,使用GRU引入了歷史行為序列信息命浴,GRU解決了RNN梯度消失問題,與LSTM相比參數(shù)更少收斂更快
- 行為序列層作用為embedding贱除;興趣抽取層作用為模擬用戶遷移生闲;興趣進(jìn)化層在抽取層的基礎(chǔ)上加入attention,模擬與廣告相關(guān)的興趣進(jìn)化月幌,后兩者是關(guān)鍵
評價(jià):2019年阿里媽媽提出的DIN演化版本