Wide&Deep 網(wǎng)絡(luò)
推薦系統(tǒng)的主要挑戰(zhàn)之一厌小,是同時(shí)解決 Memorization 和 Generalization啤贩。Wide & Deep 模型的核心思想是結(jié)合線性模型的記憶能力和 DNN 模型的泛化能力,從而提升整體模型性能。
記憶能力:理解為模型直接學(xué)習(xí)并利用歷史數(shù)據(jù)中物品或者特征的“共現(xiàn)頻率”的能力。協(xié)同過(guò)濾躺同、邏輯回歸等簡(jiǎn)單模型有較強(qiáng)的記憶能力阁猜。規(guī)則式的推薦:模型直接記住歷史數(shù)據(jù)的分布特點(diǎn),并利用這些記憶進(jìn)行推薦蹋艺。
泛化能力:理解為模型傳遞特征的相關(guān)性剃袍,以及發(fā)掘洗刷甚至從未出現(xiàn)的稀有特征與最終標(biāo)簽相關(guān)性的能力。矩陣分解比協(xié)同過(guò)濾的泛化能力強(qiáng)捎谨,因?yàn)榫仃嚪纸庖肓穗[向量這樣的結(jié)構(gòu)民效。
如上圖的網(wǎng)絡(luò)結(jié)構(gòu):結(jié)合 LR 和 DNN。
Wide 部分
wide部分其實(shí)就是一個(gè)簡(jiǎn)單的線性模型 y = wx + b涛救。x = [ x1, x2, ... , xd] 是d個(gè)feature的向量畏邢,w = [w1, w2, ... , wd]是模型的參數(shù),b是bias州叠。這里的d個(gè)feature包括原始的輸入feature和經(jīng)過(guò)轉(zhuǎn)換的feature棵红。
其中一種很重要的轉(zhuǎn)換feature叫做cross-product轉(zhuǎn)換。假如x1是性別咧栗,x1=0表示男性,x1=1表示女性虱肄。x2是愛(ài)好致板,x2=0表示不喜歡吃西瓜,x2=1表示喜歡吃西瓜咏窿。那么我們就可以利用x1和x2構(gòu)造出新的feature斟或,令x3=(x1 && x2),則x3=1表示是女生并且喜歡吃西瓜集嵌,如果不是女生或者不喜歡吃西瓜萝挤,則x3=0。這樣經(jīng)過(guò)轉(zhuǎn)換的來(lái)的x3就是cross-product轉(zhuǎn)化根欧。這樣轉(zhuǎn)換的目的是為了獲取交叉特征對(duì)預(yù)測(cè)目標(biāo)的影響怜珍,給線性模型增加非線性。
Deep 部分
deep部分就是前饋神經(jīng)網(wǎng)絡(luò)模型凤粗。對(duì)于高維稀疏的分類(lèi)特征酥泛,首先會(huì)轉(zhuǎn)化成低維的稠密的向量,然后作為神經(jīng)網(wǎng)hidden layers的輸入進(jìn)行訓(xùn)練嫌拣。
參考文獻(xiàn)
DCN 模型
主要工作是針對(duì) Wide&Deep 網(wǎng)絡(luò)中的 Wide 部分做了改進(jìn)柔袁,在 Wide&Deep 網(wǎng)絡(luò)中,Wide 部分是個(gè)簡(jiǎn)單的線性模型异逐,其交叉特征任然需要人工設(shè)計(jì)捶索,而 DCN 設(shè)計(jì)了專(zhuān)門(mén)的 cross 網(wǎng)絡(luò)用于自動(dòng)學(xué)習(xí)高階交叉特征。
DCN模型結(jié)構(gòu)如上圖所示灰瞻,主要模塊為
- Embedding and Stacking Layer:輸入特征的處理腥例,包括embedding處理和concat操作燥筷;
- Cross Network:特征交叉網(wǎng)絡(luò),對(duì)特征進(jìn)行顯式的有限階的高階交叉院崇;
- Deep Network:DNN層網(wǎng)絡(luò)肆氓,對(duì)特征進(jìn)行隱式的高階交叉;
- Combination Layer:結(jié)合特征交叉層和DNN層的隱層輸出底瓣,并輸入到預(yù)測(cè)層谢揪。
這里重點(diǎn)關(guān)注 Cross network,核心創(chuàng)新之處捐凭,它顯式的使用特征交叉操作拨扶,具體交叉公式為:是一個(gè)維度為 d 的列向量。
交叉層的可視化如圖所示:
原理解析:
參考文獻(xiàn)
NFM 模型
背景:
目前 Wide&Deep茁肠、DeepCross患民、FNN等網(wǎng)絡(luò),都是將 concat 后的 embedding 向量輸入到多層網(wǎng)絡(luò)中學(xué)習(xí)特征的交叉垦梆,多層網(wǎng)絡(luò)能夠隱式的學(xué)習(xí)到任意高階的特征組合, 但是發(fā)現(xiàn)這種網(wǎng)絡(luò)結(jié)構(gòu)有個(gè)明顯的弱點(diǎn)就是, 在 low level 采用 concat 的方式處理 embedding 向量帶給特征交叉的信息太少(證據(jù)就是 NCF 論文中的一個(gè)實(shí)驗(yàn)), 而多層網(wǎng)絡(luò)的調(diào)優(yōu)存在很多臭名昭著的困難, 比如梯度消失/爆炸, 過(guò)擬合等匹颤。作者在研究已有成果的時(shí), 受 FNN 啟發(fā), 發(fā)現(xiàn)如果在進(jìn)入多層網(wǎng)絡(luò)之前能夠用 FM 進(jìn)行預(yù)訓(xùn)練, 得到一個(gè) embedding 向量, 再進(jìn)入 NN 中能夠得到更好的效果。
NFM 網(wǎng)絡(luò)結(jié)構(gòu)
NFM 與 FM 網(wǎng)絡(luò)結(jié)構(gòu)類(lèi)似托猩,只是在二階特征交叉中進(jìn)行優(yōu)化印蓖,NFM 預(yù)估的目標(biāo)為:
接下來(lái),主要闡述的設(shè)計(jì)京腥,網(wǎng)絡(luò)結(jié)構(gòu)如下:
Embedding Layer
與正常的 Embedding 層不同的是:使用原始的特征值乘以 Embedding vector赦肃,使得模型也可以處理 real valued feature。Bi-Interaction Layer
這一層其實(shí)是一個(gè) pooling 操作公浪,將多個(gè)向量轉(zhuǎn)化為一個(gè)向量他宛,形式化如下:
的輸入是整個(gè)的嵌入向量, 欠气,是特征取值厅各,,是特征對(duì)應(yīng)的嵌入向量晃琳。中間的操作表示對(duì)應(yīng)位置相乘讯检。所以原始的嵌入向量任意兩個(gè)都進(jìn)行組合,對(duì)應(yīng)位置相乘結(jié)果得到一個(gè)新向量卫旱;然后把這些新向量相加人灼,就得到了Bi-Interaction的輸出。這個(gè)輸出只有一個(gè)向量,維度仍然是K顾翼,可以理解為就是FM的二階輸出投放。Hidden Layer
DNN 學(xué)習(xí)高階組合特征。Prediction Layer
最后一層隱藏層輸出适贸,輸出層最后預(yù)測(cè)結(jié)果公式如下:
總結(jié)整個(gè)網(wǎng)絡(luò)灸芳,公式如下:
參考文獻(xiàn)
FNN 模型
FNN簡(jiǎn)單概括:FM+MLP烙样,如果再用一句稍顯復(fù)雜的話概括FNN那就是:FNN是一個(gè)兩階段訓(xùn)練的模型冯遂,階段一先訓(xùn)練一個(gè)FM模型得到每個(gè)field的embedding向量,階段二谒获,基于階段一的embedding向量初始化MLP的embedding層蛤肌,然后訓(xùn)練一個(gè)MLP(DNN)。
模型結(jié)構(gòu)圖如下:
重點(diǎn)關(guān)注下 Dense Real Layer 層批狱,定義如下:
是一個(gè)全局的偏置標(biāo)量钩骇,是特征域音婶,是第 i 個(gè)特征域在FM中的參數(shù)向量寄雀,定義如下:
權(quán)重都是通過(guò) FM 預(yù)訓(xùn)練好的偏置項(xiàng)和分別初始化巷燥,也就是 Embedding 層的參數(shù)矩陣。則可以表示為爪膊,為one-hot編碼权悟。
簡(jiǎn)單理解如下,利用王喆《深度學(xué)習(xí)推薦系統(tǒng)》圖表示為:
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):每個(gè)特征的嵌入向量是預(yù)先采用FM模型訓(xùn)練的惊完,因此在學(xué)習(xí)DNN模型時(shí)僵芹,訓(xùn)練開(kāi)銷(xiāo)降低,模型能夠更快達(dá)到收斂小槐。
缺點(diǎn):
- Embedding 的參數(shù)受 FM 的影響,不一定準(zhǔn)確荷辕。
- 預(yù)訓(xùn)練階段增加了計(jì)算復(fù)雜度凿跳,訓(xùn)練效率低。
- FNN 只能學(xué)習(xí)到高階的組合特征疮方;模型中沒(méi)有對(duì)低階特征建模控嗜。
參考文獻(xiàn)
DeepFM 網(wǎng)絡(luò)
Wide & Deep推薦模型的升級(jí)版。不同點(diǎn)如下:
- wide模型部分由LR替換為FM骡显。FM模型具有自動(dòng)學(xué)習(xí)交叉特征的能力疆栏,避免了原始Wide & Deep模型中淺層部分人工特征工程的工作。
- 共享原始輸入特征惫谤。DeepFM模型的原始特征將作為FM和Deep模型部分的共同輸入壁顶,保證模型特征的準(zhǔn)確與一致。
模型輸入溜歪,這是一個(gè) d 維向量若专,其中即為第 i 個(gè)field的特征表示,如果是類(lèi)別蝴猪,則為one-hot編碼后的向量调衰,連續(xù)值則為它本身膊爪。然后對(duì)其進(jìn)行 Embedding,連續(xù)值離散化后可進(jìn)行 Embedding嚎莉。
接著 FM 層即為embedding后結(jié)果的內(nèi)積和一次項(xiàng)的和米酬,最后一層sigmoid后再輸出結(jié)果。Embedding內(nèi)積與FM模型等價(jià)趋箩!
由于進(jìn)行了one-hot編碼赃额,所以對(duì)應(yīng)的只有一個(gè)值為1,其余的都為0阁簸,則:
若兩個(gè) field 做內(nèi)積爬早,假設(shè)非0的那一列為c和d則:
參考文獻(xiàn)
xDeepFM 模型
參考文獻(xiàn)
DeepFFM 模型
2. DeepCrossing 網(wǎng)絡(luò)
2016年,微軟提出Deep Crossing模型启妹,旨在解決特征工程中特征組合的難題筛严,降低人力特征組合的時(shí)間開(kāi)銷(xiāo),通過(guò)模型自動(dòng)學(xué)習(xí)特征的組合方式饶米,也能達(dá)到不錯(cuò)的效果桨啃,且在各種任務(wù)中表現(xiàn)出較好的穩(wěn)定性。
利用殘差網(wǎng)絡(luò)進(jìn)行特征處理檬输。
3. PNN 網(wǎng)絡(luò)
作者認(rèn)為在embedding輸入到MLP之后學(xué)習(xí)的交叉特征表達(dá)并不充分照瘾,提出了一種product layer的思想,既基于乘法的運(yùn)算來(lái)體現(xiàn)體征交叉的DNN網(wǎng)絡(luò)結(jié)構(gòu)丧慈。在 CTR 預(yù)估中析命,認(rèn)為特征關(guān)系屬于“且”關(guān)系,而非“加”關(guān)系逃默。
Product Layer 層
product layer 可以分成兩個(gè)部分鹃愤,一部分是線性部分 lz,一部分是非線性部分 lp完域。二者的形式如下:
其中 z 是線性信號(hào)向量软吐,因此直接用 embedding 層得到,然后通過(guò)矩陣的點(diǎn)乘(相乘求和)即可吟税。
對(duì)于 p 而言凹耙,有兩種方式:一種是 IPNN,另一種是 OPNN肠仪;
IPNN 的示意圖如下所示:內(nèi)積
OPNN 的示意圖如下所示:矩陣乘
參考文獻(xiàn):
4. DIN 網(wǎng)絡(luò)結(jié)構(gòu)
4.1 Base 版本
??Base 版本的模型:一般的思路為肖抱,先通過(guò) one-hot、multi-hot 得到高維離散特征藤韵,然后通過(guò) Embedding 層將高維離散特征轉(zhuǎn)換為固定長(zhǎng)度的連續(xù)特征虐沥,然后通過(guò)多個(gè)全連接層,經(jīng)過(guò) sigmoid 函數(shù)轉(zhuǎn)化為 0-1 值,代表點(diǎn)擊的概率欲险。
??上圖中镐依, user feature groups
代表著用戶(hù)的歷史購(gòu)買(mǎi)記錄,存在著多條記錄天试。mutil-hot 在 Embedding 之后會(huì)得到多個(gè)向量信息槐壳, 融合層中進(jìn)行 element-wise +
操作,其實(shí)就是 sum-pooling
喜每,統(tǒng)一為固定長(zhǎng)度的連續(xù)特征务唐。
4.2 DIN 網(wǎng)絡(luò)
Base 模型在進(jìn)行融合的時(shí)候:對(duì)用戶(hù)的歷史行為同等對(duì)待,存在問(wèn)題带兜。
為什么引入注意力機(jī)制枫笛?
難道僅僅是通過(guò)觀察歷史數(shù)據(jù)拍腦袋決定的么?當(dāng)然不是刚照,如果不用 Local activation 的話刑巧,將會(huì)出現(xiàn)下面的情況:假設(shè)用戶(hù)的興趣的 Embedding 是 ,候選廣告的 Embedding 是 无畔,用戶(hù)興趣和候選的廣告的相關(guān)性可以寫(xiě)作 啊楚。如果沒(méi)有 Local activation 機(jī)制的話,那么同一個(gè)用戶(hù)對(duì)于不同的廣告浑彰,Vu 都是相同的恭理。舉例來(lái)說(shuō),如果有兩個(gè)廣告 A 和 B郭变,用戶(hù)興趣和 A颜价,B 的相似性都很高,那么在 Va 和 Vb 連線上的廣告都會(huì)有很高的相似性诉濒。這樣的限制使得模型非常難學(xué)習(xí)到有效的用戶(hù)和廣告的 embedidng 表示拍嵌。
引入Activation Unit
之后,用戶(hù)的興趣表示計(jì)算如下:
加入了注意力機(jī)制循诉,從過(guò)去的加和變成了的加權(quán)和。重點(diǎn)在于 采用什么比較好撇他,傳統(tǒng)的 Attention 機(jī)制茄猫,通常是點(diǎn)積或者 MLP。上圖右上角的 activation unit:首先是把 u 和 v 以及 u v的 element wise 差值向量合并起來(lái)作為輸入困肩,然后喂給全連接層划纽,最后得出權(quán)重。