MSRA2018的xDeepFM(CIN)

xDeepFM:名副其實的 ”Deep” Factorization Machine

自動構造輸入向量的“高階”特徵組合;可惜工業界實際效果一般比不過Wide&Deep和DeepFM;時間複雜度高是痛點;容易過擬合(可對特徵做離散化,加dropout來解決)

基本框架依然基於標準的Embedding&MLP,其中Linear、Plain DNN分別類似Wide和Deep部分, CIN 部分是創新。

 

輸入有m個field, embedding維度爲D,CIN的第k層使用上一層的H_{k-1}個D維向量,和輸入的m個D維向量,Element-wise相乘,得到H_{k-1}*m個D維向量(下圖a),用一個H_{k-1}*m的矩陣來“卷積”,得到一個D維結果向量(下圖b,一個Feature map),H_{k}個這樣的矩陣,得到H_{k}個D維向量,作爲第k層的輸出(下圖b中的所有Feature map);每一層把H_{k}個D維向量進行sum-pooling得到H_{k}個數值,所有層的數值們contact起來,得到一個向量(上圖c最上面的一排黃色圓圈),和Linear和PlainDNN的結果再contact成一個向量,進行LR;

Compressed Interaction Network(CIN)就是這麼來的,即把每層Compress成一個數;

1. 每層通過sum pooling對vector的元素加和輸出,這麼做的意義或合理性?可以設想,如果CIN只有1層, 只有m個vector,即H_{1}=m, 且加和的權重矩陣恆等於1,即W=1,那麼sum pooling的輸出結果,就是一系列的兩兩向量內積之和,即標準的FM(不考慮一階與偏置)

2. 除了第1層,中間層的這種基於vector高階組合有什麼物理意義?回顧FM,雖然是二階的,但可以擴展到多階,例如考慮三階FM,是對三個嵌入向量作Hadamard乘再對得到的vector作sum,CIN基於vector-wise的高階組合再作sum pooling與之是類似的,這也是模型名字 “eXtreme Deep Factorization Machine (xDeepFM) ”的由來。

 

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