提出動機
解決交叉特徵學習問題,雖然傳統的FM模型可以學習到二階交叉特徵,對於高階交叉特徵,需要大量的參數,在deep&wide模型,wide部分需要手動進行特徵工程,deep&cross模型在wide部分實現了自動生成高階交叉特徵,並使用了resnet的形式。
網絡形式
經過公共的embedding和stacking層,左邊爲cross network,右邊爲deep network。
Embedding and stacking layer
該層對特徵進行拼接成input,對於Dense特徵直接拼接,對於sparse特徵首先進行embedding,將生成的稠密向量與dense特徵進行拼接
Cross network
交叉網絡結構如下
表達式爲xl+1=x0xlTwl+bl+xl=f(xl,wl,bl)+xl
對於第l層的輸出xl+1,由原始輸入x0和上一層的輸入xl相乘得到,從而產生高階交叉特徵。這裏使用了resnet的形式y=f(x)+x,使得網絡結構更具有魯棒性。
注意cross部分維度映射是由Rd↦Rd的,所以該部分總參數爲:
d×Lc×2 d是輸入特徵的維度,Lc是cross網絡的層數。
Deep network
deep部分跟傳統DNN相同,由若干個全連接層相連,第l+1個隱藏層表達式爲:
hl+1=f(Wlhl+bl)其中:Wl∈Rnl+1×nl,bl∈Rnl+1
所以整個deep 部分參數個數爲:
d×m+m+(m2+m)×(Ld−1)
Combination layer
最終,將cross部分和deep部分的輸出結果,合併到一起,
p=σ([xL1T,hL2T]wlogits)
其中:
xL1∈Rd,hL2∈Rm,wlogits ∈R(d+m),σ(x)=1/(1+exp(−x))
wlogits可以看做合併向量乘上的權重
最終,損失函數由交叉熵和正則項構成:+
loss=−N1i=1∑Nyilog(pi)+(1−yi)log(1−pi)+λl∑∥wl∥2
參考資料
https://arxiv.org/abs/1708.05123