编辑
2025-10-31
搜广推
00
请注意,本文编写于 39 天前,最后修改于 38 天前,其中某些信息可能已经过时。

目录

一. 概述
二. Embedding and stacking layer
三. Cross Network
四. Deep Network
五. Combination Output Layer

一. 概述

DCN是一个可以同时高效学习低维特征交叉和高维非线性特征的深度模型,不需要人工特征工程的同时需要的计算资源非常低。

DCN的模型结构如下图所示 可以看到DCN分成4部分。最底下是Embedding and stacking layer,中间部分是Cross networkDeep network,最上面是Combination output layer。下面分别对每个部分进行讲解

image.png

二. Embedding and stacking layer

这一层是模型的输入层。我们知道输入的特征分为稠密和稀疏特征

对于稀疏特征,我们一般采用one hot encoding的方式进行编码,然后再经过一层embedding将one hot embedding转换成稠密向量。

最后,将稠密特征和经过转换的稀疏特征对应的稠密向量concat起来组成模型的最终输入,也就是图中的x0x_0

输入层实际示例图如下: image.png

三. Cross Network

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

可视化如下图所示

image.pngw和b是我们要学习的参数,可以看到在cross network里面,输入和输出的维度是一样的。

为什么这么设计?cross network为1层的时候,我们可以得到的最高是2维的特征交叉;cross network为2层的时候,我们得到的是最高3维的特征交叉;cross network为3层的时候,我们得到的是最高4维的特征交叉;以此类推...

举个例子,假如让偏置b为0,x0x_0的长度为2。那么第一层的cross layer的输出为:

image.png

第二层如下:

image.png

从上面两个公式的红色部分可以看到,X1相当于两个特征交叉,X2最多则有三个特征交叉,所以我们说,Cross Network的交叉度是多项式级别的。

因此cross network以一种参数共享的方式,通过对叠加层数的控制,可以高效地学习出低维的特征交叉组合,避免了人工特征工程。

可能有人会问,Deep Network也有特征交叉的能力,为什么要单独设计Cross Network,这个观察是对的,Deep Network确实有一定交叉能力,但存在一些效率和显式程度上的不足。Cross Network则是一种补足方式。下面来探讨一下二者在特征交叉方面的区别

  1. 交叉的“显式” vs “隐式”
  • Cross Network(显式交叉):
    • Cross Network的设计非常直接,它的核心公式是: xl+1=x0xlTwl+bl+xlx_{l+1} = x_0 x_l^T w_l + b_l + x_l
    • 这个公式意味着,每一层都在显式地计算输入特征x0x_0和当前层特征xlx_l的外积,通过层数累加,可完成更多特征的直接交叉,这是一种有意识的、受控的、高效的交叉方式。
    • 它可以被认为是一种参数化的、向量形式的FM(Factorization Machines)泛化,能够自动学习特定交叉特征的重要性。
    • 优势:对于某些特别重要的、有明确物理意义的特征组合(例如“用户年龄”和“保险产品类型”),Cross Network可以非常高效且直接地将其建模出来。
  • Deep Network(隐式交叉):
    • Deep Network通过多层感知机和激活函数(如ReLU)来学习非线性关系。
    • 它的交叉是隐式的、黑盒的。我们不知道它具体在哪些层、以何种方式组合了哪些特征。交叉是在神经元的多层非线性变换中“涌现”出来的。
    • 劣势:为了学到同样重要的高阶特征交叉,Deep Network可能需要更宽或更深的网络,以及更多的数据和计算资源。它可能无法像Cross Network那样“精准”且“高效”地捕获某些特定交叉。
  1. 参数效率和模型容量
  • Cross Network 的参数非常少,主要就是每层的向量wlw_lblb_l。它的设计目的是用最少的参数专门负责“特征交叉”这件事。Cross Network可以在LL层内,高效地生成输入特征最高L+1L+1阶的交叉特征
  • Deep Network 的参数更多(全连接层),它负责的是学习更普适、更复杂的非线性模式,其中既包含了特征交叉,也包含了其他复杂的变换。一个经典的LL层DNN,其隐式特征交叉的阶数同样为L+1L+1阶,但要学习到同样程度的高阶交叉,DNN通常需要更深的网络或更多的参数,学习起来更“费力”。

总结

特性Cross NetworkDeep Network
交叉方式显式、受控隐式、黑盒
主要职责专门、高效地学习特征交叉学习所有复杂的非线性模式
效率参数少,高效生成高阶交叉参数多,学习高阶交叉相对低效
角色专家(特征交叉专家)通才(通用函数逼近器)

四. Deep Network

deep network部分就是传统的全连接前馈神经网络,用来学习高维非线性特征交叉组合。公式如下所示

image.png

五. Combination Output Layer

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

image.png

损失函数为

image.png

公式最右边一项为l2正则

文章参考

[深度模型] Deep & Cross Network (DCN)
[深度模型] Deep & Cross Network (DCN)

本文作者:brucewu

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!