DeepFM
和Wide & Deep的模型類似,DeepFM模型同樣由淺層模型和深層模型聯合訓練得到。不同點主要有以下兩點:
- wide模型部分由LR替換為FM。FM模型具有自動學習交叉特征的能力,避免了原始Wide & Deep模型中淺層部分人工特征工程的工作。
- 共享原始輸入特征。DeepFM模型的原始特征將作為FM和Deep模型部分的共同輸入,保證模型特征的准確與一致。
文中通過大量實驗證明,DeepFM模型的AUC和Logloss都優於目前的最好效果。效率上,DeepFM和目前最優的效果的深度模型相當。
主要做法:
- FM Component + Deep Component。FM提取低階組合特征,Deep提取高階組合特征。但是和Wide&Deep不同的是,DeepFM是端到端的訓練,不需要人工特征工程。
- 共享feature embedding。FM和Deep共享輸入和
feature embedding
不但使得訓練更快,而且使得訓練更加准確。相比之下,Wide&Deep中,input vector非常大,里面包含了大量的人工設計的pairwise組合特征,增加了他的計算復雜度。
為了同時利用low-order和high-order特征,DeepFM包含FM和DNN兩部分,結果可表示為:
FM 部分
FM通過隱向量latent vector做內積來表示組合特征,從理論上解決了低階和高階組合特征提取的問題。但是實際應用中受限於計算復雜度,一般也就只考慮到2階交叉特征。
后面又進行了改進,提出了FFM,增加了Field的概念。
FM部分的輸出由兩部分組成:一個 Addition Unit,多個 內積單元。
這里的d是輸入one-hot之后的維度,我們一般稱之為 `feature_size`。對應的是one-hot之前的特征維度,我們稱之為 `field_size`。
Addition Unit 反映的是1階的特征。內積單元反映的是2階的組合特征對於預測結果的影響。
Deep Component
Deep Component架構圖:
Deep Component是用來學習高階組合特征的。網絡里面黑色的線是全連接層,參數需要神經網絡去學習。
由於CTR或推薦系統的數據one-hot之后特別稀疏,如果直接放入到DNN中,參數非常多,我們沒有這么多的數據去訓練這樣一個網絡。所以增加了一個Embedding層,用於降低緯度。
這里繼續補充下Embedding層,兩個特點:
1. 盡管輸入的長度不同,但是映射后長度都是相同的.`embedding_size(k)`
2. embedding層的參數其實是全連接的Weights,是通過神經網絡自己學習到的。
Embedding層的架構圖:
embedding layer表示為:
其中 ei 是第 i個 filed 的 embedding,m 是 filed 數量; a(0) 傳遞給deep part,前饋過程如下:
其中 l是層深度,最外層是激活函數, a b w分別是第l層的輸出,權重和偏置。
然后得到dense real-value 特征矢量,最后被送到sigmoid函數做CTR預測:
其中 |H| 是隱藏層層數 值得注意的是:FM模塊和Deep模塊是共享feature embedding的(也就是V)。
好處:
1. 模型可以從最原始的特征中,同時學習低階和高階組合特征 ;
2. 不再需要人工特征工程。Wide&Deep中低階組合特征就是同過特征工程得到的。
DeepFM優勢/優點:
- 不需要預訓練FM得到隱向量
- 不需要人工特征工程
- 能同時學習低階和高階的組合特征
- FM模塊和Deep模塊共享Feature Embedding部分,可以更快更精確地訓練