1. 程式人生 > >DeepFM模型 學習筆記

DeepFM模型 學習筆記

作者:jliang

https://blog.csdn.net/jliang3

 

 

1.重點歸納

1)CTR預估重點在於學習組合特徵,包括二階、三階甚至更高階,階數越高越難學習。Google的論文研究結論:高階和低階的組合特徵都非常重要,同時學習到這兩種組合特徵的效能比只考慮其中一種效能要好。

2)模型演進歷史

(1)線性模型:LR、FTRL

無法提取高階的組合特徵,依賴人工的組合特徵,表達能力有限。

(2)FM模型:通過隱向量latent vector做內積來表達組合特徵,從理論上解決了低階和高階組合特定的提取問題。受限於計算複雜度,一般只考慮到2階交叉特徵。

(3)FFM模型:FM的升級版模型,通過引入field的概念,FFM把相同性質的特徵歸於同一個field。

(4)FNN:用FM模型來對Embedding層進行初始化的全連線神經網路(先預先訓練好FM,得到隱向量,然後作為DNN的輸入訓練模型)。只能學習到高階的組合特徵,沒有對低階特徵建模。

(5)PNN:為了捕獲高階組合特徵,在embedding layer 和first hidden layer之間增加一個product layer(內積/外積層)來學習特徵之間的互動關係。沒有對於1階和2階特徵進行建模。

(6)Wide&Deep:混合了一個線性模型(LR, Wide part)和Deep模型(DNN, Deep part),這兩部分模型需要不同的輸入。wide part輸入依賴人工特徵工程。

(7)DeepFM:結合了廣度和深度模型的優點,聯合訓練FM模型和DNN模型,同時學習低階特徵組合和高階特徵組合。

3)DeepFM優勢

  • 相對Wide&Deep不需要手工構建wide部門特徵
  • 相對於FNN把FM的隱向量引數直接作為網路的引數學習,不需要預訓練
  • DeepFM將embedding層結果輸入到FM和MLP,兩者輸出疊加,達到捕捉低階和高階特徵交叉的目的

2.CTR預估

1) CTR資料特點

  • 維度非常高
  • 資料非常稀疏
  • 特徵按照Field分組

2)CTR預估重點在於學習組合特徵,包括二階、三階甚至更高階,階數越高越難學習。Google的論文研究結論:高階和低階的組合特徵都非常重要,同時學習到這兩種組合特徵的效能比只考慮其中一種效能要好。

3)模型演進歷史

(1)線性模型

  • LR、FTRL等模型
  • 缺點:無法提取高階的組合特徵,依賴人工的組合特徵,表達能力有限

(2)FM模型

  • 通過隱向量latent vector做內積來表達組合特徵,從理論上解決了低階和高階組合特定的提取問題
  • 受限於計算複雜度,一般只考慮到2階交叉特徵

(3)FFM模型:FM的升級版模型,通過引入field的概念,FFM把相同性質的特徵歸於同一個field。

(4)深度學習

  • FNN
    • 用FM模型來對Embedding層進行初始化的全連線神經網路(先預先訓練好FM,得到隱向量,然後作為DNN的輸入訓練模型)
    • 缺點
      • 受限於FM預訓練的效果
      • 只能學習到高階的組合特徵,沒有對低階特徵建模。
  • PNN
    • 為了捕獲高階組合特徵,在embedding layer 和first hidden layer之間增加一個product layer(內積/外積層)來學習特徵之間的互動關係。
    • 缺點
      • 內積外積計算複雜度高,採用近似計算的方法外積沒有內積穩定
      • 和FNN一樣,只能學習到高階的特徵組合,沒有對於1階和2階特徵進行建模
  • Wide&Deep
    • 混合了一個線性模型(LR, Wide part)和Deep模型(DNN, Deep part),這兩部分模型需要不同的輸入。
    • 很大程度滿足了模型同時學習低階特徵和高階特徵的需求
    • Wide part需要領域知識進行特徵工程,wide part輸入依賴人工特徵工程
  • 這些模型偏向於提取低階或者高階的組合特徵,不能同時提取這兩種型別的特徵。

3.DeepFM

1)DeepFM模型

(1)DeepFM結合了廣度和深度模型的優點,聯合訓練FM模型和DNN模型,同時學習低階特徵組合和高階特徵組合。

(2)DeepFM模型的Deep component和FM component從Embedding層共享資料輸入。

         Embedding層的隱式向量在(殘差反向傳播)訓練時可以同時接受到Deep component和FM component的資訊,使Embedding層的資訊表達更加準確而最終提升推薦效果。

(3)相對Wide&Deep的優勢

  • DeepFM同時對低階特徵組合和高階特徵組合建模,從而能夠學習到各階特徵之間的組合關係
  • DeepFM是一個端到端的模型,不需要任何人工特徵工程

(4)兩面性

  • 有些特徵不適合進行特徵交叉,如position bias就不適合進行特徵交叉,應該將其直接放到最後一個隱層才更有意義
  • 在使用DeepFM時,要注意結合業務場景,將特殊的特徵排除在FM的作用域之外

2)數學原理

(1)模型概覽

 

(2)數學原理

  1. 對於給定特徵i, wi用於表示一階特徵的重要性,這部分只直接輸入到FM
  2. 特徵i的隱向量vi用於衡量和其他特徵的相互影響
  3. 在FM部分,vi用於表示二階特徵
  4. 在神經網路部分vi用於構建高階特徵
  5. 對於當前模型,和wide&deep一樣,所有的引數共同參與訓練
  6. 不需要預訓練,可以直接將稀疏資料輸入模型

(3)embedding layer(上圖中的dense embeddings)

  • 原始輸入的資料是很多歌欄位的高維稀疏資料,因此引入embedding layer將輸入向量壓縮到低維稠密向量
  • 輸入資料的每個欄位(field)的特徵(每個欄位onehot後都是包含多個特徵)經過embedding之後都變成k維,所以embedding後的特徵數=count(field)*k
  • FM得到的隱變數V作為潛入層網路的權重,FM模型作為整個模型的一部分與其他深度學習模型一起參與整體的學習
  • FM部分與深度學習部分共享embedding的好處
    • 從原始資料中同時學習了低維與高維特徵
    • 不再需要特徵工程

(4)Field和Feature

  • 每個Field是一個原始特徵,Field經過onehot編碼後產生多個特徵,輸出的每個特徵就是feature
  • 同一個Field中所有Feature中只有一個為1,其它為0
  • 不同的Field經過onehot後的Feature數不一樣,但經過embedding後都是一樣長

(5)DeepFM優勢

  • 相對Wide&Deep不需要手工構建wide部門特徵
  • 相對於FNN把FM的隱向量引數直接作為網路的引數學習,不需要預訓練
  • DeepFM將embedding層結果輸入到FM和MLP,兩者輸出疊加,達到捕捉低階和高階特徵交叉的目的

(6)DNN的一些推薦設定

  • 對於hidden layer使用三層200-200-200的結構設計
  • 使用relu函式作為啟用函式
  • 增加dropout

(7)評估模型時用到了一個新的指標“Gini Normalization”