DeepFM學(xué)習(xí)筆記
引子
DeepFM是經(jīng)過(guò)工業(yè)界驗(yàn)證的比較認(rèn)可的用于解決CTR(廣告點(diǎn)擊)預(yù)測(cè)的深度學(xué)習(xí)模型之一。
什么是廣告預(yù)測(cè)問(wèn)題?以淘寶網(wǎng)舉例,在淘寶主頁(yè)以及我們搜索結(jié)果頁(yè)面中,都有作為廣告出現(xiàn)的商品推薦窗,如果這個(gè)窗口推薦的物品正好用戶(hù)感興趣,那么用戶(hù)就會(huì)點(diǎn)進(jìn)去看看啦,這樣這個(gè)商品的商家就要付錢(qián)給淘寶網(wǎng)站,因?yàn)檫@個(gè)點(diǎn)擊進(jìn)來(lái)的用戶(hù)是通過(guò)淘寶推薦來(lái)的,這樣淘寶就可以通過(guò)推薦廣告賺錢(qián)啦。問(wèn)題就是,淘寶要怎么在大量的商品中選出幾個(gè)放到有限的展示窗口中呢?當(dāng)然是最可能被點(diǎn)擊的那些商品廣告啦,怎么預(yù)測(cè)商品被點(diǎn)擊的可能性?本文提到的Deep FM就是解決這個(gè)預(yù)測(cè)問(wèn)題的方案之一。
概述
將CTR預(yù)測(cè)問(wèn)題轉(zhuǎn)化成一個(gè)有監(jiān)督機(jī)器學(xué)習(xí)問(wèn)題,首先要把訓(xùn)練樣本(用戶(hù)的點(diǎn)擊、沒(méi)有點(diǎn)擊行為)劃分為“特征”和“標(biāo)注”。
特征包括用戶(hù)的注冊(cè)信息,比如年齡,性別等,以及用戶(hù)的購(gòu)買(mǎi)行為,比如買(mǎi)了一堆GPU的可能是個(gè)技術(shù)宅or 游戲宅等等;以及商品本身的特征信息,比如商品的介紹,分類(lèi)、價(jià)格等等。
標(biāo)注就是0、1分別代表當(dāng)前的用戶(hù)沒(méi)有點(diǎn)擊或者有點(diǎn)擊這個(gè)商品的廣告。
這個(gè)CTR問(wèn)題有個(gè)特性,相比于圖像識(shí)別問(wèn)題或者語(yǔ)音識(shí)別問(wèn)題,CTR的特征往往是高維而且稀疏的,比如我們把男、女這個(gè)類(lèi)別特征通過(guò)1-hot 編碼成為01 和 10 兩個(gè)向量,這樣一個(gè)特征就變成了2維,同樣的道理,其他的類(lèi)類(lèi)別特征如果通過(guò)1-hot編碼也會(huì)大大增加特征的維度。對(duì)于連續(xù)的特征,我們可能會(huì)通過(guò)分桶,也把它們轉(zhuǎn)化成了高維的特征。
在很多情況下,我們用這些特征判斷用戶(hù)的點(diǎn)擊行為可能需要綜合多個(gè)特征來(lái)進(jìn)行,比如年齡在18-30歲的女生比較關(guān)注顏色比較時(shí)髦的唇膏商品,這個(gè)判斷就用了年齡和性別兩個(gè)特征來(lái)綜合決策最終的label。那么有很多前人提出了多種多樣的模型來(lái)解決這個(gè)特征交叉的問(wèn)題。比如FM(Factorization Machines)就提出了先學(xué)一個(gè)特征的embedding(就是用一個(gè)低維的向量來(lái)表示高維稀疏的特征向量),然后通過(guò)不同特征組的embedding的乘積來(lái)實(shí)現(xiàn)這個(gè)“特征交叉“的操作。可惜的是,由于排列組合的數(shù)量幾乎是指數(shù)上升的,考慮到模型的復(fù)雜度,實(shí)際應(yīng)用中往往只能學(xué)習(xí)低階的特征交叉,也就是FM只能學(xué)習(xí)到利用了2~3個(gè)特征的判別用戶(hù)點(diǎn)擊行為的模式。當(dāng)我們需要判斷一個(gè)用了用戶(hù)年齡、性別、職業(yè)、收入、月度購(gòu)買(mǎi)量等等比較多的特征的用戶(hù)行為模式的時(shí)候怎么辦呢?有人提出可以用DNN(深度神經(jīng)網(wǎng)絡(luò))來(lái)解決這個(gè)問(wèn)題,用深層的神經(jīng)網(wǎng)絡(luò)來(lái)模擬高維的用戶(hù)特征融合模式。但是問(wèn)題是,我們?nèi)绻瑫r(shí)需要判斷高維和低維的特征模式,這個(gè)時(shí)候怎么辦呢?本文介紹的Deep FM就派上用場(chǎng)了。
方法

如圖一所示,整個(gè)Deep FM的架構(gòu)分為左右兩個(gè)層次,左邊是FM,右邊是Deep。。哈哈估計(jì)名字就是這么來(lái)的。樣本的特征由下至上輸入,最下一層是上面提到過(guò)的高維稀疏特征。

由于輸入的高維稀疏特征向量是由更低維的特征向量(比如用戶(hù)性別的1-hot編碼向量,用戶(hù)年齡的分桶離散化的向量等)組合而成的,在第一層分別將這些向量編碼成同樣長(zhǎng)度的embedding,這樣更方便表示每個(gè)低維向量組的信息,方便后續(xù)計(jì)算。入圖2所示。
在Deep FM的架構(gòu)的左邊FM中,這一層經(jīng)過(guò)embedding編碼的特征向量經(jīng)過(guò)了FM的乘積層獲得了低維的特征交叉組合,然后通過(guò)一個(gè)輸出層輸出。

圖中y代表FM層輸出,<w,x>代表權(quán)重w和原始feature層向量x的內(nèi)積,Vi表示原始特征向量x中第i個(gè)低維特征向量的embedding表示。

圖3代表Deep FM架構(gòu)中的DNN部分。由于和FM共用了第一層特征的embedding向量層,這樣在反向傳播算法的訓(xùn)練過(guò)程中,這個(gè)淺層特征embedding可以受到高維特征交叉和低維特征交叉的影響學(xué)的更好些(論文原話(huà))。
這個(gè)DNN的層數(shù)根據(jù)原始論文中的實(shí)驗(yàn)大概取3~5層,更多的層數(shù)會(huì)導(dǎo)致過(guò)擬合。
總結(jié)
這個(gè)Deep FM模型有幾個(gè)特點(diǎn):
1. 它不需要預(yù)訓(xùn)練,可以直接端到端的訓(xùn)練
2. 它結(jié)合了深層和淺層的特征交叉信息
3. 通過(guò)共享embedding它省去了特征工程的工作,更方便使用。
Deep FM的工作據(jù)說(shuō)擊敗了當(dāng)時(shí)的state of the art,但是目前又有很多新的paper出現(xiàn),比如阿里的DIN等,我們下次再說(shuō)~
參考文獻(xiàn):
1. DeepFM:A Factorization-Machine based Neural Network for CTR Prediction