一、动机

这个模型真正的把深度学习架构应用于推荐系统中的模型,2016年由微软提出,完整的解决了特征工程、稀疏向量稠密化,多层神经网络进行优化目标拟合等一系列深度学习再推荐系统的应用问题。这个模型涉及到的技术比较基础,在传统神经网络的基础上加入了enbedding、残差连接等思想,且结构比较简单。
DeepCrossing模型应用场景是微软搜索引擎Bing中的搜索广告推荐,用户在输入搜索词之后, 搜索引擎除了返回相关结果, 还返回与搜索词相关的广告,Deep Crossing的优化目标就是预测对于某一广告, 用户是否会点击,依然是点击率预测的一个问题。
对于类别型特征,我们需要进行one-hot编码处理,而数值型特征 一般需要进行归一化处理,这样算是把数据进行了一个简单清洗。

二、模型结构

DeepCrossing模型要在内部网络结构中解决下面几个问题:
1.离散类特征编码后过于稀疏,不利于直接输入神经网络训练,需要解决稀疏特征向量稠密化的问题;
2.解决特征自动交叉组合的问题
3.在输出层中达成问题设定的优化目标
DeepCrossing分别设置了不同神经网络层解决上面的问题,

2.1Embedding Layer

将稀疏的类别型特征转成稠密的Embedding向量,Embedding的维度会远小于原始的稀疏特征向量。

推荐系统 FM模型和特征工程 python实现 推荐系统的模型_深度学习


假设:我们有一个2 x 6的矩阵,然后乘上一个6 x 3的矩阵最后变成了一个2 x 3的矩阵,这个过程我们把一个12个元素的矩阵变成6个元素的矩阵,直观上,大小缩小了一半。在某种程度上,embedding层就是用来降维的,降维的原理就是矩阵乘法。在卷积网络中,可以理解为特殊全连接层操作,跟1 x 1卷积核异曲同工。

中间那个矩阵可以理解为查询表,也可以理解为映射表,也可以理解为过度表。

Embedding层的另一个作用也可以进行升维,对低维的数据进行升维时,可能把一些其他特征给放大了,或者把笼统的特征给分开了。同时,这个embedding是一直在学习在优化的,就使得整个拉近拉远的过程慢慢形成一个良好的观察点。

2.2Stacking Layer

这个层是把不同的Embedding特征和数值型特征拼接在一起,形成新的包含全部特征的特征向量,该层通常也称为连接层。具体实现为:先将所有的数值特征拼接起来,然后将所有的Embedding拼接起来,最后将数值特征和Emdedding特征拼接起来作为DNN的输入。

2.3Multipe Residual Units Layer

该层的主要结构是MLP,但DeepCrossing采用了残差网络进行的连接。通过多层残差网络对特征向量各个维度充分的交叉组合,使得模型能够抓取更多的非线性特征和组合特征信息,增加模型的表达能力。
DeepCrossing模型使用稍微修改过的残差单元,它不使用卷积内核,改成了两层神经网络,残差单元是通过两层ReLU变换再将原输入特征相加回来实现的。

2.4Scoring Layer

这个作为输出层,为了拟合优化目标存在。对于CTR预估二分类问题,Scoring往往采用逻辑回归,模型通过叠加多个残差块加深网络的深度,最后将结果转换为一个概率值输出。

三、总结

DeepCrossing的结构比较清晰和简单,没有引入特殊的模型结构,只是常规的Embedding+多层神经网络。但这个网络的出现,有革命意义。DeepCrossing模型中没有任何人工特征工程的参与,只需要简单的特征处理,原始特征经Embedding Layer输入神经网络层,自主交叉和学习。 相比于FM,FFM只具备二阶特征交叉能力的模型,DeepCrossing可以通过调整神经网络的深度进行特征之间的“深度交叉”,这也是Deep Crossing名称的由来。

参考:
1.https://github.com/datawhalechina/team-learning-rs/blob/master/DeepRecommendationModel/DeepCrossing.md