目前的主流思路:
(1)加層數(shù),加結(jié)構(gòu)復(fù)雜度:AutoRec->Deep Crossing
(2)改變特征交叉方式:NeruralCF(神經(jīng)網(wǎng)絡(luò)協(xié)同過(guò)濾)吱肌,PNN(基于積操作的神經(jīng)網(wǎng)絡(luò))
(3)組合模型:Wide&Deep及其變種DeepFM等诗鸭,兩種不同且優(yōu)勢(shì)互補(bǔ)的深度學(xué)習(xí)網(wǎng)絡(luò)的組合。
(4)FM深度升級(jí)版
(5)注意力機(jī)制
(6)序列模型
(7)強(qiáng)化學(xué)習(xí)結(jié)合
AutoRec(自編碼器):類PCA,輸入≈輸出
自編碼器能夠存儲(chǔ)所有數(shù)據(jù)向量的編碼信息夯缺,使得,但是因?yàn)橹亟ê瘮?shù)的參數(shù)比輸入向量的維度(參數(shù)個(gè)數(shù))遠(yuǎn)遠(yuǎn)地少甘耿,所以間接實(shí)現(xiàn)了數(shù)據(jù)壓縮和降維的工作踊兜。輸出向量并不完全等于輸入向量,某種程度上實(shí)現(xiàn)了泛化佳恬,甚至可以填補(bǔ)一定的缺失維度值捏境。
物品評(píng)分向量r做輸入,f 和 g 是輸出和隱藏層的激活函數(shù)
毁葱,前面是殘差平方和垫言,后面是正則
優(yōu)勢(shì):一次性輸入就可以,劣勢(shì):向量稀疏可能影響效果倾剿。
- 為什么可以預(yù)測(cè)缺失維度筷频?
在Rating Matrix中,沒有打分的部分不參與計(jì)算前痘,encode decode的過(guò)程中只讓模型去擬合已有的打分部分截驮,讓這一部分充分?jǐn)M合好,然后對(duì)于沒有數(shù)據(jù)的部分际度,訓(xùn)練好的權(quán)重會(huì)給出一個(gè)非零值葵袭,這就是模型預(yù)測(cè)的結(jié)果。最終乖菱,原來(lái)Rating Matrix中為零的部分在模型訓(xùn)練完后也變也有了數(shù)值坡锡,可以根據(jù)此來(lái)做推薦。(對(duì)于缺失值窒所,用默認(rèn)值或者平均值代替可以重建恢復(fù)(基于平方殘差和最叙睦铡))
可以認(rèn)為是借鑒了其他用戶對(duì)該商品的打分(該商品的各隱特征權(quán)重),以及該用戶對(duì)其他商品的打分(對(duì)各個(gè)隱特征的權(quán)重)
- 為什么可以壓縮/降維吵取?
假如我們通過(guò)一組數(shù)據(jù)訓(xùn)練出了我們的自編碼器禽额,然后我們拆掉自編碼器的解碼器(decoder),就可以用剩下的編碼器(encoder)來(lái)表征我們的數(shù)據(jù)了皮官。隱藏層的神經(jīng)元數(shù)目遠(yuǎn)低于輸入層[0,1,0,1]脯倒,那么就相當(dāng)于我們用更少的特征(神經(jīng)元)[0,1,0]去表征我們的輸入數(shù)據(jù),從而達(dá)到降維壓縮的功能捺氢。
- 為什么可以去噪藻丢?
上圖第一行就是加噪后的手寫體數(shù)據(jù)集,第二行則是原本的手寫體數(shù)據(jù)集摄乒。我們把加噪后的數(shù)據(jù)集當(dāng)成輸入悠反,原本的數(shù)據(jù)集當(dāng)做輸出残黑,訓(xùn)練一個(gè)自編碼器,讓它在訓(xùn)練過(guò)程中學(xué)習(xí)數(shù)據(jù)的規(guī)律斋否,從而把噪聲去掉
- 加入L1稀疏梨水,可以得到少且有用的特征項(xiàng)。
Deep Crossing模型(殘差茵臭,embedding)
離散特征:搜索詞冰木,廣告關(guān)鍵詞,落地頁(yè)(具體頁(yè)面)
連續(xù)特征:點(diǎn)擊率
(1)onehot離散特征編碼過(guò)于稀疏笼恰,使用embedding技術(shù)(word2vec)來(lái)解決稠密化+降維的問題踊沸。
(2)如何解決特征交叉自動(dòng)化的問題,Stacking層負(fù)責(zé)拼接數(shù)值型特征和離散型特征組成新的特征向量社证,Multiple Residual Units(使用殘差網(wǎng)絡(luò)Resnet)對(duì)這些新的特征向量進(jìn)行交叉組合逼龟,使得模型能抓取到更多非線性特征和組合特征的信息。
NeuralCF(深度學(xué)習(xí)+協(xié)同過(guò)濾CF矩陣分解)
傳統(tǒng)矩陣分解只是利用了內(nèi)積追葡,而NeualCF的GMF層使用了元素積(對(duì)應(yīng)維度相乘得到另一個(gè)向量)進(jìn)行特征互操作腺律。右側(cè)的MLP層則跟上面的Deep Crossing基本上一樣。
PNN
將Deep Crossing的stacking層的拼接改成Product操作進(jìn)行兩兩交互宜肉。Product層分為兩個(gè)部分匀钧,一個(gè)是線性操作層(加權(quán)融合),一個(gè)是乘積操作層(內(nèi)積谬返、外積)
外積會(huì)有平均池化的操作之斯,這可能會(huì)模糊很多信息,建議慎用遣铝。
相比簡(jiǎn)單的交給全連接層佑刷,內(nèi)積和外積操作更有針對(duì)性。
Wide&Deep(LR + DNN)
更好綜合原始特征和新的交叉特征,Wide部分負(fù)責(zé)"記憶能力"(對(duì)于相似的歷史行為能夠快速反應(yīng)),Deep部分負(fù)責(zé)"泛化能力"(對(duì)于歷史上沒有相似的行為能夠推測(cè)出來(lái)結(jié)果锭弊,發(fā)掘稀有特征能力)
缺點(diǎn):Wide部分還是需要人工特征工程。
舉個(gè)例子麦萤,邏輯回歸LR對(duì)于強(qiáng)特征反應(yīng)很快,直接調(diào)大參數(shù)權(quán)重扁眯。神經(jīng)網(wǎng)絡(luò)層數(shù)多壮莹,特征相互交叉最后反而記憶消退。
FNN(用FM的隱向量完成Embedding層初始化)
對(duì)于Embedding層初始化的問題垛孔,原先采用隨機(jī)初始化藕甩,現(xiàn)在采用FM預(yù)訓(xùn)練的方法施敢。
DeepFM(Deep取代Wide抽取低階特征)
FM替代Wide提取低階組合特征周荐,Deep提取高階組合特征,共享相同的embedding層
AFM(注意力機(jī)制)
注意力機(jī)制應(yīng)用在FM的交叉特征上
DIEN(引入基于注意力機(jī)制的GRU時(shí)間序列模型)
GRU解決了LSTM梯度消失的問題僵娃,參數(shù)又更少概作。工程上看串行效率比較低,延遲會(huì)很嚴(yán)重默怨,需要很多優(yōu)化讯榕。