提出动机
解决交叉特征学习问题,虽然传统的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