谷歌CTR预估模型——deep&cross(DCN)

提出动机

解决交叉特征学习问题,虽然传统的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\mathbf{x}_{l+1}=\mathbf{x}_{0} \mathbf{x}_{l}^{T} \mathbf{w}_{l}+\mathbf{b}_{l}+\mathbf{x}_{l}=f\left(\mathbf{x}_{l}, \mathbf{w}_{l}, \mathbf{b}_{l}\right)+\mathbf{x}_{l}
对于第ll层的输出xl+1x_{l+1},由原始输入x0x_{0}和上一层的输入xlx_{l}相乘得到,从而产生高阶交叉特征。这里使用了resnet的形式y=f(x)+xy = f(x)+x,使得网络结构更具有鲁棒性。

注意cross部分维度映射是由RdRd\mathbb{R}^{d} \mapsto \mathbb{R}^{d}的,所以该部分总参数为:
d×Lc×2d \times L_{c} \times 2 d是输入特征的维度,LcL_{c}是cross网络的层数。

Deep network

在这里插入图片描述
deep部分跟传统DNN相同,由若干个全连接层相连,第l+1l+1个隐藏层表达式为:
hl+1=f(Wlhl+bl)\mathbf{h}_{l+1}=f\left(W_{l} \mathbf{h}_{l}+\mathbf{b}_{l}\right)其中:WlRnl+1×nl,blRnl+1W_{l} \in \mathbb{R}^{n_{l+1} \times n_{l}}, \mathbf{b}_{l} \in \mathbb{R}^{n_{l+1}}
所以整个deep 部分参数个数为:
d×m+m+(m2+m)×(Ld1)d \times m+m+\left(m^{2}+m\right) \times\left(L_{d}-1\right)

Combination layer

最终,将cross部分和deep部分的输出结果,合并到一起,
p=σ([xL1T,hL2T]wlogits)p=\sigma\left(\left[\mathbf{x}_{L_{1}}^{T}, \mathbf{h}_{L_{2}}^{T}\right] \mathbf{w}_{\mathrm{logits}}\right)

其中:
xL1Rd,hL2Rmwlogits R(d+m)σ(x)=1/(1+exp(x))\mathbf{x}_{L_{1}} \in \mathbb{R}^{d}, \mathbf{h}_{L_{2}} \in \mathbb{R}^{m},\mathbf{w}_{\text {logits }} \in \mathbb{R}^{(d+m)},\sigma(x)=1 /(1+\exp (-x))
wlogitsw_{logits}可以看做合并向量乘上的权重

最终,损失函数由交叉熵和正则项构成:+
loss=1Ni=1Nyilog(pi)+(1yi)log(1pi)+λlwl2\operatorname{loss}=-\frac{1}{N} \sum_{i=1}^{N} y_{i} \log \left(p_{i}\right)+\left(1-y_{i}\right) \log \left(1-p_{i}\right)+\lambda \sum_{l}\left\|\mathbf{w}_{l}\right\|^{2}

参考资料

https://arxiv.org/abs/1708.05123

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