Deep Crossing

1. 概述

Deep Crossing[1]是微软在2016年提出的用于计算CTR问题的深度神经网络模型,Deep Crossing的网络结构对传统的FNN(Feedforward Neural Network)网络结构做了一些优化,使得其能够更适合处理CTR问题。文章距离现在已经比较久远,但是其思想在深度网络的发展过程中有着重要的指导意义。由LR模型中的特征工程,以及FM的成功经验来看,组合特征对于CTR问题有着重要作用,Deep Crossing网络围绕着特征组合,可通过网络自动进行特征组合,而无需大量的特征工程的工作。在Deep Crossing网络模型中,主要的优化点为:在Deep Crossing网络中增加Multiple Residual Units层,便于构建更深的网络。

2. 算法原理

2.1. Deep Crossing的网络结构

Deep Crossing的网络结构如下图所示:

在这里插入图片描述

从Deep Crossing的网络结构上看,整个网络由四种类型的层组成,分别为:第一种层为特征Embedding层,第二种层为Stacking层, 第三种层为Residual Unit层,第四种层为Scoring层。其中Embedding层用于将原始的稀疏特征转化为低维稠密特征;Stacking层将多个Embedding层的特征连接起来;Residual Unit层用于构建深层的网络;最后的Scoring层用于完成CTR的计算。

2.2. Deep Crossing网络的计算过程

Embedding层是由单层神经网络构成,假设第jj个输入特征XjIRnjX_j^I\in \mathbb{R}^{n_j},其中,njn_j表示的是特征XjX_j的维度,此时,Embedding层的输出为:

XjO=max(0,WjXjI+bj)X_j^O=max\left ( \mathbf{0},\mathbf{W}_jX_j^I+\mathbf{b}_j \right )

其中,Wj\mathbf{W}_j事一个mj×njm_j\times n_j的矩阵,bjRnj\mathbf{b}_j \in \mathbb{R}^{n_j}XjOX_j^O为第jj个特征的Embedding输出。当输入特征通过Embedding层后,进入到Stacking层,其输出为:

XO=[X0O,X1O,,XKO]X^O=\left [ X_0^O,X_1^O,\dots ,X_K^O \right ]

其中,KK表示的是输入特征的个数。经过Stacking层后便是Multiple Residual Unit层,其结构图如下所示:

在这里插入图片描述

Residual Unit层最初是在ResNet[2]中提出的用于构建深层CNN的方法,也称为残差网络,在Deep Crossing对其做了修改,用MLP代替了原来的卷积核。对于上图中的结构可以表示为:

XO=F(XI,{W0,W1},{b0,b1})+XIX^O=\mathcal{F}\left ( X^I,\left \{ \mathbf{W}_0,\mathbf{W}_1 \right \},\left \{ \mathbf{b}_0,\mathbf{b}_1 \right \} \right )+X^I

其中,W0,1\mathbf{W}_{0,1}b0,1\mathbf{b}_{0,1}是两层MLP的参数,F\mathcal{F}表示的是一个映射函数,用于计算Residual Unit层的输出XOX^O和输入XIX^I之间的残差XOXIX^O-X^I。在ResNet中,残差网络的优点主要有:

  1. 通过残差网络可以构建深层网络。在传统的MLP,当网络加深之后,往往存在过拟合现象。而通过残差网络构建深层网络,可以减少过拟合现象的发生。
  2. 残差网络使用了ReLU激活函数取代Sigmoid激活函数可以有效防止梯度弥散,使得网络更容易收敛。

总的来说,就是通过Residual Unit可以构建更深的网络,同时网络的训练也会更容易收敛。经过Residual Unit层后便是Scoring层,Scoring层作为输出层,就是为了拟合最终的优化目标。最终的损失函数为:

logloss=1Ni=1N(yilog(pi)+(1yi)log(1pi))logloss=-\frac{1}{N}\sum_{i=1}^{N}\left ( y_ilog\left ( p_i \right )+\left ( 1-y_i \right )log\left ( 1-p_i \right ) \right )

其中,ii表示第ii个样本,NN表示训练样本的个数,pip_i表示的是网络的预测值。

3. 总结

Deep Crossing网络的两个特点是Deep和Crossing,首先,对于Deep,得益于残差网络的优点,Deep Crossing网络通过Multiple Residual Unit层构建足够深的深层网络;其次,对于Crossing,通过多层网络,可以自动学习到特征之间的交叉关系,而无需人工的参与。

参考文献

[1] Shan Y, Hoens T R, Jiao J, et al. Deep crossing: Web-scale modeling without manually crafted combinatorial features[C]//Proceedings of the 22nd ACM SIGKDD international conference on knowledge discovery and data mining. 2016: 255-262.

[2] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.