xDeepFM:名副其實的 ”Deep” Factorization Machine
自動構造輸入向量的“高階”特徵組合;可惜工業界實際效果一般比不過Wide&Deep和DeepFM;時間複雜度高是痛點;容易過擬合(可對特徵做離散化,加dropout來解決)
基本框架依然基於標準的Embedding&MLP,其中Linear、Plain DNN分別類似Wide和Deep部分, CIN 部分是創新。
輸入有m個field, embedding維度爲D,CIN的第k層使用上一層的個D維向量,和輸入的m個D維向量,Element-wise相乘,得到*m個D維向量(下圖a),用一個*m的矩陣來“卷積”,得到一個D維結果向量(下圖b,一個Feature map),個這樣的矩陣,得到個D維向量,作爲第k層的輸出(下圖b中的所有Feature map);每一層把個D維向量進行sum-pooling得到個數值,所有層的數值們contact起來,得到一個向量(上圖c最上面的一排黃色圓圈),和Linear和PlainDNN的結果再contact成一個向量,進行LR;
Compressed Interaction Network(CIN)就是這麼來的,即把每層Compress成一個數;
1. 每層通過sum pooling對vector的元素加和輸出,這麼做的意義或合理性?可以設想,如果CIN只有1層, 只有m個vector,即, 且加和的權重矩陣恆等於1,即W=1,那麼sum pooling的輸出結果,就是一系列的兩兩向量內積之和,即標準的FM(不考慮一階與偏置)
2. 除了第1層,中間層的這種基於vector高階組合有什麼物理意義?回顧FM,雖然是二階的,但可以擴展到多階,例如考慮三階FM,是對三個嵌入向量作Hadamard乘再對得到的vector作sum,CIN基於vector-wise的高階組合再作sum pooling與之是類似的,這也是模型名字 “eXtreme Deep Factorization Machine (xDeepFM) ”的由來。