一、摘要
这篇论文是Google 对 Wide & Deep(想了解这个模型可以点击这里)工作的一个后续研究,文中提出 Deep & Cross Network,将Wide部分替换为由特殊网络结构实现的Cross,自动构造有限高阶的交叉特征,并学习对应权重,告别了繁琐的人工叉乘。
二、介绍
Deep & Cross的网络结构如下图所示
如上图所示,一个DCN模型从嵌入和堆积层开始,接着是一个交叉网络和一个与之平行的深度网络,之后是最后的组合层,它结合了两个网络的输出。
1、嵌入和堆叠层
在网络规模推荐系统中,如CTR预测,输入主要是分类特征,如“country=usa”。这些特征通常是编码为独热向量如“[ 0,1,0 ]”;然而,这往往导致过度的高维特征空间大的词汇。
为了减少维数,采用嵌入过程将这些二进制特征转换成实数值的稠密向量(通常称为嵌入向量):
总结一下:
- 对sparse特征进行embedding,对于multi-hot的sparse特征,embedding之后再做一个简单的average pooling;
- 对dense特征归一化,然后和embedding特征拼接,作为随后Cross层与Deep层的共同输入,即:
2、交叉网络cross network
交叉网络的核心思想是以有效的方式应用显式特征交叉。交叉网络由交叉层组成,每个层具有以下公式
其中,xl,xl+1分别是 l 层和 l+1 层输出的列向量。
一个交叉层的可视化如下图所示
Cross Layer 设计的巧妙之处全部体现在上面的计算公式中,有一些明显的细节:
- 每层的神经元个数都相同,都等于输入x0的维度d ,也即每层的输入输出维度都是相等的;
- 受残差网络(Residual Network)结构启发,每层的函数f 拟合的是x_l+1-x_l的残差,残差网络有很多优点,其中一点是处理梯度消失的问题,使网络可以“更深”.
在对cross network的优势分析中,这篇文章解释得非常好
我选取了部分内容附于此
3、深度网络
深度网络就是一个全连接的前馈神经网络,每个深度层具有如下公式:
其中,h_l,h_l+1分别是第l层,l+1层隐函数,Wl是l层参数,f是激活函数。
复杂度分析。简单起见,我们假设所有的深层都是一样大小的。Ld 表示层的深度,m 表示深层尺寸。在深度网络中,参数量为:
4、融合层
链接层将两个并行网络的输出连接起来,经过一层全链接层得到输出
如果采用的是对数损失函数,那么损失函数形式如下:
三、总结
1、论文提出一种新型的交叉网络结构 DCN,其中 Cross 可以显示、自动地构造有限高阶的特征叉乘,从而在一定程度上告别人工特征叉乘,说一定程度是因为文中出于模型复杂度的考虑,仍是仅对sparse特征对应的embedding作自动叉乘,但这仍是一个有益的创新
2、 Cross部分的复杂度与输入维度呈线性关系,相比DNN非常节约内存。实验结果显示了DCN的有效性,DCN用更少的参数取得比DNN更好的效果
3、本文最重要的其实就是cross的思想,因此论文后面的一些性能比较我没有再去列举。
DCN代码实现:https://www.jianshu.com/p/77719fc252fa
参考:
https://blog.csdn.net/roguesir/article/details/79763204
https://zhuanlan.zhihu.com/p/55234968
https://blog.csdn.net/qq_18293213/article/details/89737543