論文鏈接:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
1、問題闡述
在推薦系統的CTR預估中,學習用戶行為背后復雜的特征交互關系非常重要,例如人們通常在吃飯的時間點下載外賣app比較多,這說明時間和item類別之間是有一定聯系的,如果我們在吃飯的時間推薦餓了么,肯定比在其它時間段要更加符合用戶的需求。(當然影響用戶點擊行為的因素非常多,這里只是簡單舉了一個例子,并不是說所有的用戶在吃飯的時間都會想點擊外賣app,只是一種統計傾向而已)類似,還有很多其它的特征組合關系,有些特征組合關系是我們拍腦門可以想出來的,上面的時間和item類別,年齡和item類別,性別和item類別。。。但是也有那么一些是我們想不出來的(想不出來意味著不大符合我們平時的認知),例如傳統的“啤酒和尿布”關系是隱藏在數據里的。(詳細介紹可以參見這篇博文)不大容易被我們人為設計出來作為組合特征。這就需要用到機器學習啦,我們當然希望機器可以幫我們自動學到很多特征。畢竟當原始特征很多的時候,人為設計特征是一件費時也有可能不討好的事情。
2、FM模型
FM是分解機模型,它將原始特征做embedding后,對兩兩特征進行組合,得到更高級的特征,模型如下:
其中Field i表示某個特征,共有m個特征,對每個特征進行embedding,之后做兩兩內積得到FM層,除此之外,FM層還包括單個原始特征。這樣看來FM層是包含了兩兩組合以及單個特征,FM層之后是sigmoid層。
3、DeepFM模型
針對FM模型僅僅可以提取到低級特征組合(最多兩層),結合DNN的優勢,可以提取到更加高級的特征,這樣就不需要人為設計特征了。讓我們先看看它的架構吧。
上面是DNN的架構,FM的架構上面已經介紹了哈,DNN的輸入和FM的輸入是一樣的,而且DNN的embedding是上面FM的embedding,只不過DNN之后并不是只有2個特征相連,而是所有特征相連去學習更高級的特征組合。也不是特征之間做內積的形式去組合。(感覺FM其實也可以去學習高級特征組合,但是有一點就是比如要學習三個特征組合的形式,按照FM的思路,是需要把所有的三個特征組合表示出來,等等吧,這樣會有很多參數,而DNN這種方式網絡可以通過權重學習,得到三個,四個甚至更多的特征組合,這也是DNN的優勢所在吧)
最后的模型預測為:
4、模型比較
FNN模型是用FM模型預先訓練好的embedding做初始輸入,之后接dnn,這樣做的缺點之一就是embedding受FM模型的影響比較大,而且這樣只是提取了高級特征。另外因為需要預先訓練FM模型,所以會增加訓練復雜度。
PNN模型是在embedding層和隱藏層之間使用了內積(或者外積,或者2者混合)提取了組合特征,之后和原始的embedding層concat組成隱藏層,之后dnn提取高級特征。而且因為內積的輸出和后面隱藏層的所有單元都連接,所以參數會很多。deepFM的FM部分的內積后面只接了一個單元。
谷歌的wide&deep模型,wide&deep模型的wide部分的輸入特征是需要人為設計的,例如在app推薦的任務中,可能需要設計一些組合特征。deepFM模型直接把原始特征作為輸入,用deep模型和FM自動提取特征,不需要做特征工程。
一個主要的擴展就是將谷歌的wide&deep模型的wide部分用FM代替,后面實驗會說明這樣效果沒有deepFM好。論文中的解釋是deepFM模型特征的embedding是共享的,這樣學到的embedding會更好一些。也就是說它做擴展實驗的時候并沒有設成共享的?我個人覺得還有一個原因就是wide部分的交叉特征如果是用FM的話,一般交叉特征出現的頻率很低,學到的交叉特征的embedding并不好。
5、實驗
數據集:Criteo數據集 ?4500萬用戶點擊記錄
? ? ? ? ? ? ? ? 公司的數據集 ? 10億用戶點擊記錄
評價方式:AUC 和logloss
結果:
6、總結
總體來講,個人感覺最大的優勢就是不需要人為設計特征,可以自動捕獲到高級和低級特征組合,也不需要提前預訓練。