深度交叉网络(Deep & Cross Network,DCN)是一种用于点击率预测与推荐排序的神经网络模型,由谷歌与斯坦福大学的研究者于 2017 年提出。它的核心是交叉网络:每一层都用显式公式构造有限阶的特征交叉项,阶数随层数增加而提高,从而在参数量很小的情况下自动完成原本依赖人工的特征工程。交叉网络与一个全连接深度网络并联或堆叠,分别负责显式与隐式的特征交互,在点击率预测任务上以更少的参数取得了优于普通深度网络的精度。
定义
深度交叉网络是一种把显式特征交叉与隐式特征交互结合起来的神经网络结构,主要用于点击率预测和学习排序任务。模型自下而上由输入与嵌入层、交叉网络、深度网络和组合输出层构成,其中交叉网络是这一结构的核心[1]。
所谓特征交叉,指两个或多个特征共同出现时才有的信息。例如「买了香蕉」与「买了菜谱」这两个特征单独看信息有限,两者同时出现则可能显著提高某类商品的点击概率;在线广告与推荐场景中的输入几乎都是类别特征,组合空间大且稀疏,靠人工枚举交叉项代价极高[2]。深度交叉网络的设计目标,就是在不做人工特征工程的前提下自动、高效地学到这些交叉项[3]。
它与Wide & Deep属于同一脉络:Wide & Deep 中的 Wide 侧是线性模型,难以表达交叉特征,深度交叉网络用交叉网络取代了这一部分,让显式交叉可以自动构造并学习相应权重[1]。
原理
模型的输入通常是多字段类别数据,先经独热编码再通过嵌入层映射为稠密向量,并与归一化后的稠密数值特征拼接成向量 x_0,作为交叉网络和深度网络的共同输入。深度交叉网络采用残差式的交叉层定义:第 l+1 层的输出等于 x_0 与 (W_l x_l + b_l) 的逐元素乘积再加上 x_l,即 $x_{l+1} = x_0 \odot (W_l x_l + b_l) + x_l$[4]。
由于每层都以原始输入 x_0 作锚点做逐元素乘法,l 层交叉网络能覆盖到最高 l+1 阶的多项式交叉项,且包含该阶数以内的全部交叉项,其最高阶数由层数决定,无需人工指定要交叉哪些特征[4]。交叉层的参数只有权重与偏置两组,参数量相对输入维度而言很少,因此内存开销低、易于实现;同时残差形式的结构有利于缓解梯度消失,便于堆叠出更深的网络[1]。
与交叉网络并列的深度网络是多层前馈全连接网络,负责学习不易用显式公式刻画的隐式高阶交互;两者输出拼接后经一层全连接得到预测值,损失函数常用对数损失或均方误差[5]。交叉网络与深度网络的结合可采取两种方式:把深度网络堆叠在交叉网络之后,或将两者并行放置[2]。
在改进版本中,交叉层的权重由向量扩展为矩阵,此时 x_0 视为一阶特征层,交叉层与深度神经网络的组合方式与前述一致[4]。
发展历程
2017 年,Ruoxi Wang、Bin Fu、Gang Fu 与 Mingliang Wang 在 ADKDD 会议上发表论文,提出 Deep & Cross Network,用于广告点击预测[3]。该工作指出,深度网络虽然能自动学习特征交互,但交互全部以隐式方式生成,学习某些类型交叉特征的效率不高,因此设计交叉网络在每一层显式地施加特征交叉[6]。
在此阶段,交叉层的权重为向量形式,交叉网络可复现的多项式类别仅由与输入规模同阶的参数刻画,在十亿级样本的线上系统中表达能力受限,且交叉网络与深度网络之间的容量分配不平衡,绝大部分参数落在深度网络一侧。
2020 年,Ruoxi Wang 等人在原论文基础上提出改进版本 DCN-V2,并于 2021 年在 WWW 会议发表[7]。DCN-V2 把交叉层的权重由向量改为矩阵,使模型可同时从逐元素和逐特征两个角度理解特征交互,其可表达的函数类是原版的严格超集;当权重退化为一行向量时,DCN-V2 即回到原版结构[4]。
考虑到交叉层学到的矩阵具有低秩特性,DCN-V2 用低秩分解近似特征交叉,并借助混合专家架构把矩阵进一步拆分为多个子空间,再通过门控机制聚合,以在精度与延迟之间取得更合适的平衡。该版本已在谷歌多个大规模排序系统中部署,并在离线精度和线上业务指标上取得提升,代码与教程作为TensorFlow Recommenders的一部分开源[8]。
2024 年,研究者提出 DCNv3 与 SDCNv3,引入参数数量随层数线性增长的线性交叉网络和随层数指数增长的指数交叉网络,采用自掩码操作过滤噪声并将交叉网络参数减半,还通过 Tri-BCE 多项损失为不同子网络提供监督信号[9]。该工作在 6 个点击率预测数据集上验证了其有效性、效率与可解释性[10]。
应用
深度交叉网络的主要落点是点击率预测,即在广告、电商和内容推荐场景中估计用户点击某个条目的概率,进而决定候选条目的排序[5]。在合成数据实验中,单层交叉网络即可拟合只含二阶交互的目标函数,而参数量更大的多层 ReLU 深度网络反而表现更差,说明交叉结构在学习乘法型特征交互上更有效率[11]。
在开源侧,TensorFlow Recommenders 提供了交叉层与相关模型的实现,并结合电影评分数据集给出完整示例;官方教程把 DCN、低秩 DCN 与不含交叉层的深度网络放在同一设置下比较,结果显示 DCN 略优于参数更多的 ReLU 深度网络,低秩版本在参数减少的同时保持了精度[2]。DeepCTR 等第三方库也实现了带混合专家结构的 DCN 变体[12]。
除推荐排序外,DCN-V2 与标签类型无关,可应用于任意学习排序系统,官方还给出了在一套大规模工业排序系统中落地 DCN-V2 的案例研究[4]。相关结构也被用作更复杂模型的组成模块,例如将其用作表格特征分支的骨干网络[13]。
局限
交叉网络复现的多项式类别是有界阶的,超出该阶数的复杂函数空间只能被近似,因此纯交叉结构不足以刻画数据中的全部模式,仍需深度网络补充建模[4]。原版 DCN 的表达能力尤其受限:其交叉网络对应的参数规模只与输入规模同阶,在建模任意交叉模式时灵活性不足。
参数量分配不均衡是另一问题。原版中交叉网络与深度网络的容量差距明显,在网络规模较大时尤为突出,绝大部分参数被用于在深度网络中学习隐式交叉。此外,已有研究指出点击率预测模型在高阶特征交互中往往含有较多冗余交叉与噪声,而多数模型只用最终预测计算损失,未能为显式与隐式两条路径分别提供合适的监督信号,这也会削弱监督的有效性[9]。
超参数设置同样构成实际障碍。交叉网络层数、深度网络层数与每层神经元个数缺乏针对不同数据集精确设定的一般方法,设置不当可能导致过拟合或欠拟合,使模型难以达到较优解;已有工作尝试用粒子群优化等全局搜索方法确定这些超参数。同时有研究表明,交叉网络与深度网络采用并行还是堆叠结构,与训练数据密切相关,并行结构并非普遍适用[14]。
交叉层的阶数与可解释性之间存在张力。原版交叉网络通过层数堆叠实现交互阶数的线性增长,实践中最佳交叉层数常为 2 到 3 层,性能的相当一部分来自负责隐式交互的深度网络,而高阶交互由深度网络隐式承担时又缺少可解释性[15]。
参见
-
Wide & Deep —— 深度交叉网络是它之后的工作,用交叉网络取代了其中的线性 Wide 侧。
-
点击率预测 —— 深度交叉网络最主要的目标任务。
-
深度学习 —— 深度交叉网络所依托的方法背景。
-
深度神经网络 —— 与其交叉网络并联、负责隐式特征交互的部分。
-
因子分解机 —— 同样以自动学习特征组合为目标的早期模型,常与深度交叉网络作比较。
-
TensorFlow Recommenders —— 提供深度交叉网络开实现与教程的推荐系统库。
参考资料
- Deep&Cross Network(DCN) [引用日期2026-10-14]
- Red profunda y cruzada (DCN) | TensorFlow Recommenders [引用日期2026-10-14]
- AdKDD 2017 | Deep & Cross Network for Ad Click Predictions [引用日期2026-10-14]
- acm.org 上的网页 [引用日期2026-10-14]
- 推荐系统遇上深度学习(五)--Deep&Cross Network模型理论和实践 [引用日期2026-10-14]
- semanticscholar.org 上的网页 [引用日期2026-10-14]
- arxiv.org 上的网页 [引用日期2026-10-14]
- AMiner - GLM满血模型-AI科研助手 [引用日期2026-10-14]
- sugaku.net 上的网页 [引用日期2026-10-14]
- dcnv3-towards-next-generation-deep-cross [引用日期2026-10-14]
- Keras documentation: Ranking with Deep and Cross Networks [引用日期2026-10-14]
- deepctr.models.dcnmix module¶ [引用日期2026-10-14]
- nubank_nuformer_analysis [引用日期2026-10-14]
- 深度学习模型交叉特征建模不理想?试试DCNv2[论文笔记&源码解读] [引用日期2026-10-14]
- 一、DCN V3 [2024] [引用日期2026-10-14]