DeepCrossing
学习教程:datawhale 3月组队学习:深度推荐模型
论文地址:https://www.kdd.org/kdd2016/papers/files/adf0975-shanA.pdf
背景
该模型是2016年微软提出的一个模型, 是一次深度学习框架在推荐系统中的完整应用, 该模型完整的解决了从特征工程、稀疏向量稠密化, 多层神经网络进行优化目标拟合等一系列深度学习在推荐系统中的应用问题, 为后面研究打下了良好的基础。
Deep Crossing模型的应用场景是微软搜索引擎Bing中的搜索广告推荐场景。用户在搜索引擎中输入搜索词之后,搜索引擎除了会返回相关结果,还会返回与搜索词相关的广告。尽可能地增加搜索广告的点击率,准确地预测广告点击率,并以此作为广告排序的指标之一,是非常重要的工作,也是Deep Crossing模型的优化目标。
从历史的角度看,Deep Crossing模型的出现是有革命意义的。Deep Crossing模型中没有任何人工特征工程的参与,原始特征经Embedding后输入神经网络层,将全部特征交叉的任务交给模型。Deep Crossing模型可以通过调整神经网络的深度进行特征之间的“深度交叉”,这也是Deep Crossing名称的由来。
结构
该模型的结构如下:
Deep Crossing结构比较简单,和最原始的Embedding+MLP的模型结果相比,差异在于之后跟的不是全连接层而是残差层。残差网络核心是解决网络退化的问题,既随着网络深度增加,网络的表现先是逐渐增加至饱和,然后迅速下降。
Embedding层:Embedding层将稀疏的类别型特征转换成稠密的Embedding向量。Embedding层由单层神经网络构成,一般形式为:
需要指出的是,Embedding的大小对模型的整体大小有着重大的影响。Figure1中的Feature#2代表了数值型特征,可以看到,数值型特征不需要经过Embedding层,直接进入了Stacking层。Embedding被用来减少输入特征的维度。
Stacking层:Stacking层的作用是将Embedding的输出特征和数值型特征拼接在一起,形成新的包含全部特征的特征向量,K为输入特征的数量。该层通常也被称为连接层。将各特征embedding拼接成一个向量后使用级联的多个残差单元来代替传统MLP。引入残差单元是DeepCrossing的主要改进点,好处是可以使用更深的网络层数,建模更高阶的特征,增强模型的表达能力。
Multiple Residual Units层:该层的主要结构是多层感知机,相比标准的以感知机为基本单元的神经网络,Deep Crossing模型采用了多层残差网络作为MLP的具体实现。在推荐模型中的应用,也是残差网络首次在图像识别领域之外的成功推广。通过多层残差网络对特征向量各个维度进行充分的交叉组合,使模型能够抓取到更多的非线性特征和组合特征的信息,进而使深度学习模型在表达能力上较传统机器学习模型大为增强。
残差层由如下图的残差单元构造而成。Deep Crossing简单的修改了残差单元,不适用卷积核。残差单元的独特之处在于两个:
(1)它是将原输入特征通过两层以ReLU为激活函数的全连接层后,生成输出向量 。
(2) 输入可以通过一个短路通路直接与输出向量进行元素加操作,生成最终的输出向量。在这样的结构下,残差单元中的两层ReLU网络其实拟合的是输出和输入之间的“残差”,这就是残差神经网络名称的由来。