DCN是一个可以同时高效学习低维特征交叉和高维非线性特征的深度模型,不需要人工特征工程的同时需要的计算资源非常低。
DCN的模型结构如下图所示 可以看到DCN分成4部分。最底下是Embedding and stacking layer,中间部分是Cross network和Deep network,最上面是Combination output layer。下面分别对每个部分进行讲解

这一层是模型的输入层。我们知道输入的特征分为稠密和稀疏特征
对于稀疏特征,我们一般采用one hot encoding的方式进行编码,然后再经过一层embedding将one hot embedding转换成稠密向量。
最后,将稠密特征和经过转换的稀疏特征对应的稠密向量concat起来组成模型的最终输入,也就是图中的。
输入层实际示例图如下:

在cross network里面我们主要使用以下的公式进行一层一层的叠加,完成特征的显示高效交叉:

可视化如下图所示
w和b是我们要学习的参数,可以看到在cross network里面,输入和输出的维度是一样的。
为什么这么设计?cross network为1层的时候,我们可以得到的最高是2维的特征交叉;cross network为2层的时候,我们得到的是最高3维的特征交叉;cross network为3层的时候,我们得到的是最高4维的特征交叉;以此类推...
举个例子,假如让偏置b为0,的长度为2。那么第一层的cross layer的输出为:

第二层如下:

从上面两个公式的红色部分可以看到,X1相当于两个特征交叉,X2最多则有三个特征交叉,所以我们说,Cross Network的交叉度是多项式级别的。
因此cross network以一种参数共享的方式,通过对叠加层数的控制,可以高效地学习出低维的特征交叉组合,避免了人工特征工程。
可能有人会问,Deep Network也有特征交叉的能力,为什么要单独设计Cross Network,这个观察是对的,Deep Network确实有一定交叉能力,但存在一些效率和显式程度上的不足。Cross Network则是一种补足方式。下面来探讨一下二者在特征交叉方面的区别
总结
| 特性 | Cross Network | Deep Network |
|---|---|---|
| 交叉方式 | 显式、受控 | 隐式、黑盒 |
| 主要职责 | 专门、高效地学习特征交叉 | 学习所有复杂的非线性模式 |
| 效率 | 参数少,高效生成高阶交叉 | 参数多,学习高阶交叉相对低效 |
| 角色 | 专家(特征交叉专家) | 通才(通用函数逼近器) |
deep network部分就是传统的全连接前馈神经网络,用来学习高维非线性特征交叉组合。公式如下所示

最后,将cross network和deep network的输出concat起来,通过一个logit层,对于一个二分类问题,公式如下图所示

损失函数为

公式最右边一项为l2正则
文章参考
[深度模型] Deep & Cross Network (DCN)
[深度模型] Deep & Cross Network (DCN)
本文作者:brucewu
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!