Wide&Deep和DeepFM

《Wide & Deep Learning for Recommender Systems》:Google,2016年提出,應用商店做排序;

《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》:華爲,2017年提出,應用商店做排序;

 

很好的博客

LR: 優勢是速度快,便於加特徵,可解釋;

FM: 二階特徵交叉;

Deep: 高階特徵交叉;

 

常識:

交叉特徵(記憶性):AND(安裝應用=微信,曝光應用=支付寶);等於給模型引入了非線性;

泛化一些的特徵(泛化性):AND(安裝應用類型=即時聊天,曝光應用=支付工具)

給所有item進行排序,耗時太大(要求是10ms以內的延遲);所以要用召回(ML+人工策略),得到百級數目的候選集,再進行打分;<user, context, 待評分的item>----->分數

 

Wide&Deep:

wide側:用特徵工程做的交叉特徵,仍然起作用;主要負責記憶功能,記住樣本中出現過的特徵交叉;

deep側:有泛化功能,學習特徵的embedding,泛化到那些未曾出現過的特徵交叉。

x是wide側特徵,\phi (x)是wide側的低階交叉特徵,a(l)是deep側輸出結果;

記憶:傾向於給用戶推他已經點擊過的東西;

泛化:傾向於給用戶推的東西更多樣性;

谷歌應用商店:#開頭的是數字;User Installed App是多個App(Multi-hot),Impression App是當前要預測的曝光App,這兩者的交叉特徵送到wide側;

wide部分用帶L1正則化的FTRL優化,deep部分用AdaGrad優化,兩個部分聯合訓練。

做了特徵選擇:太稀疏,即出現次數太少的特徵,被刪去了;

連續特徵的歸一化,用的是CDF,即P(X<=x),然後均勻分桶;

每個時間窗口的訓練數據來了,不是從頭開始訓練的,而是複用上一個模型的Embedding和wide部分的w(deep部分的w是隨機初始化的?);上線之前,要在老數據上校驗模型正確性;

 

DeepFM:

比Wide&Deep的優點:wide側用的FM二階特徵交叉,比之前手工特徵工程要高效;FM向量和Deep向量是複用的,聯合訓練;

交叉特徵的例子:<吃飯時間,外賣類App>;<男性,十幾歲,RPG遊戲>

紅線是權重爲1;FM層第一個元素"+"是所有1特徵的一階線性加權和,後面的"X"是所有1特徵的二階交叉加權和(用向量點乘實現,實際是矩陣分解);

細節:

1)兩種網絡,激活函數Relu效果好於tanh。(最後面都是用Sigmoid得到p,交叉熵損失函數)
2)DeepFM每個隱層的unit在200到400之間效果最佳,相比wide&deep的unit數量要少一些。
3)兩種網絡,3層網絡效果最佳。
4)在總的神經單元數量固定的情況下,constant結構效果最佳(constant表示每個隱層的unit數量相同);而wide&deep採用的是塔式結構,越往上unit數量越少。
5)embedding維度:DeepFM的embedding維度爲10,wide&deep的是32維,兩個都不大。

6) 兩者都號稱輸入的Embedding沒有經過預訓練。

7) DeepFM使用了0.5的dropout.

實踐中AUC漲幅:Wide&Deep比LR高2.7個百分點,DeepFM比Wide&Deep高0.6個百分點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章