Deep&Cross

8/2/2021 Deep&Cross

# Deep&Cross相比Wide&Deep作了哪些改进?Deep&Cross模型的Cross网络是怎么操作的?

Deep&Cross的主要思路是使用 Cross网络替代原来的Wide部分,从而增加特征之间的交互力度。模型结构如下,

DCN模型以一个嵌入和堆叠层(embedding and stacking layer)开始,接着并列连一个cross network和一个deep network,接着通过一个combination layer将两个network的输出进行组合。

位于模型结构图左侧的Cross网络使用多层交叉层对输入向量进行特征交叉。假设第层交叉层的输出向量为,那么第层的输出向量如下:

在每一层的都保留了输入向量,且增加了一个n维的权重向量,在Wide&Deep模型中Wide部分的基础上进行特征的自动化交叉,避免了更多基于业务理解的人工特征组合。

# 请说明一下Deep&Cross Network中的交叉网络部分的结构。

交叉网络的核心思想是以有效的方式应用显式特征交叉。交叉网络由交叉层组成,每个层具有以下公式:

其中:

  • 是列向量(column vectors),分别表示来自第层和第()层cross layers的输出;
  • 是第层layer的weight和bias参数。

在完成一个特征交叉f后,每个cross layer会将它的输入加回去,对应的mapping function ,刚好等于残差 ,这里借鉴了残差网络的思想。

Cross Layer 设计的巧妙之处全部体现在上面的计算公式中:

  1. 每层的神经元个数都相同,都等于输入的维度 d,也即每层的输入输出维度都是相等的;

  2. 受残差网络(Residual Network)结构启发,每层的函数拟合的的残差,残差网络有很多优点,其中一点是处理梯度消失的问题,使网络可以“更深”。

我们看一个具体的例子:

假设 Cross 有 2 层,令X_{ 0 }=\begin{bmatrix} x_{ 0,1 } & \\ x_{ 0,2 }\end{bmatrix},那么为便于讨论令各层,则

当cross layer叠加层时,交叉最高阶可以达到阶,并且包含了所有的交叉组合,这是DCN的精妙之处。

复杂度分析:假设表示cross layers的数目,表示输入的维度。那么,在该cross network中涉及的参数数目为:

一个cross network的时间和空间复杂度对于输入维度是线性关系。因而,比起它的deep部分,一个cross network引入的复杂度微不足道,DCN的整体复杂度与传统的DNN在同一水平线上。

# DCN主要有哪些优点?

  • 提出一种新型的交叉网络结构,可以用来提取交叉组合特征,并不需要人为设计的特征工程;
  • 这种网络结构足够简单同时也很有效,可以获得随网络层数增加而增加的多项式阶(polynomial degree)交叉特征;
  • 十分节约内存(依赖于正确地实现),并且易于使用;
  • 实验结果表明,DCN相比于其他模型有更出色的效果,与DNN模型相比,较少的参数却取得了较好的效果。