Deep Crossing

Posted zhiyong_will

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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层是由单层神经网络构成,假设第 j j j个输入特征 X j I ∈ R n j X_j^I\\in \\mathbbR^n_j XjIRnj,其中, n j n_j nj表示的是特征 X j X_j Xj的维度,此时,Embedding层的输出为:

X j O = m a x ( 0 , W j X j I + b j ) X_j^O=max\\left ( \\mathbf0,\\mathbfW_jX_j^I+\\mathbfb_j \\right ) XjO=max(0,WjXjI+bj)

其中, W j \\mathbfW_j Wj事一个 m j × n j m_j\\times n_j mj×nj的矩阵, b j ∈ R n j \\mathbfb_j \\in \\mathbbR^n_j bjRnj X j O X_j^O XjO为第 j j j个特征的Embedding输出。当输入特征通过Embedding层后,进入到Stacking层,其输出为:

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

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

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

X O = F ( X I , W 0 , W 1 , b 0 , b 1 ) + X I X^O=\\mathcalF\\left ( X^I,\\left \\ \\mathbfW_0,\\mathbfW_1 \\right \\,\\left \\ \\mathbfb_0,\\mathbfb_1 \\right \\ \\right )+X^I XO=F(XI,W0,W1,b0,b1)+XI

其中, W 0 , 1 \\mathbfW_0,1 W0,1 b 0 , 1 \\mathbfb_0,1 b0,1是两层MLP的参数, F \\mathcalF F表示的是一个映射函数,用于计算Residual Unit层的输出 X O X^O XO和输入 X I X^I XI之间的残差 X O − X I X^O-X^I XOXI。在ResNet中,残差网络的优点主要有:

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

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

l o g l o s s = − 1 N ∑ i = 1 N ( y i l o g ( p i ) + ( 1 − y i ) l o g ( 1 − p i ) ) logloss=-\\frac1N\\sum_i=1^N\\left ( y_ilog\\left ( p_i \\right )+\\left ( 1-y_i \\right )log\\left ( 1-p_i \\right ) \\right ) logloss=N1i=1N(yilog(pi)+(1yi)log(1pi))

其中, i i i表示第 i i i个样本, N N N表示训练样本的个数, p i p_i pi表示的是网络的预测值。

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.

以上是关于Deep Crossing的主要内容,如果未能解决你的问题,请参考以下文章

RA-Deep Crossing

推荐系统系列:Deep Crossing理论与实践

传统RNN

Graph Anomaly Detection with Deep Learning——节点检测

Graph Anomaly Detection with Deep Learning——节点检测

Deep Learning基础--理解LSTM网络