谷歌提出改进版DCN(DCNV2)用于大规模推荐系统

文章介绍了DCN-V2,一种改进的深度交叉网络,适用于大规模工业级推荐系统。相较于传统的DCN,DCN-V2在表示能力和效率上有所提升,尤其在与低秩混合结构融合时。实验表明,DCN-V2在多个基准数据集上表现出优越性能,同时在谷歌的推荐系统中也提升了线下和线上的业务指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems

Ruoxi Wang, Rakesh Shivanna, Derek Z. Cheng, Sagar Jain, Dong Lin, Lichan Hong, Ed H. Chi

Google

https://arxiv.org/pdf/2008.13535.pdf

构建推荐系统的关键之一在于学习到有效的特征交叉。

但是,稀疏大规模特征空间中识别有效特征交互非常耗时。DCN可以自动并且高效学习限定度的预测性特征交互。在大规模流量的十亿级别的训练样本中建模时,DCN在学习预测性更强的特征交互时,交叉网络暴露出了它在表示性方面的局限性。虽然一些重要研究成果涌现出来,很多生产环境中的深度学习模型依然依赖传统前向传播神经网络来学习特征交互,这种方式并不高效。

基于DCN和现有特征交互学习方法的优缺点,作者们提出一种改进的框架,DCN-V2,这种改进可以使得DCN更适用于大规模工业界场景中。通过大量超参搜索和模型调优,作者们发现DCN-V2在比较流行的基准数据集上效果优于其它STOA算法。

改进的DCN-v2表达能力更强,在特征交互学习中也比较高效,尤其是跟低秩混合结构融合时。DCN-v2比较简单,很容易作为堆叠的块,在谷歌的很多大规模学习排序系统中不仅线下准确率有显著提升,而且线上业务指标也有显著提升。

这篇文章的主要贡献如下

相关模型主要有以下几种

作者们所提模型图示如下

其中堆叠式中,cross网络跟deep部分是串行的,并行式中,cross网络跟deep部分是并行的

嵌入层简介及特点描述如下

下面是cross网络简介

作者们所提出的cross网络图示如下

深层网络的表达式如下

目标函数形式如下

权重矩阵的奇异值变化趋势以及低秩专家的组合图示如下

在子空间中学习特征交互可以借助moe来实现

复杂度分析如下

作者们所提模型跟DCN的区别如下

跟dlrm和deepfm之间的关系如下

跟xdeepfm之间的关系如下

跟autoint的区别在于

跟pnn的关系如下

DCN DCN-V2和深度神经网络在人工数据集上的效果对比如下

DCN和DCN-V2对于不同的特征交互的阶效果对比如下

层数对DCN和DCN-

### DCN v2 的结构图与可视化 DCN v2 是由 Google 提出的一种改进版Deep & Cross Network 模型,其核心目标在于增强模型对特征交叉的学习能力以及优化大规模在线学习场景中的性能[^2]。相比于原始版本的 DCNDCN v2 主要在以下几个方面进行了改进: #### 改进点概述 1. **引入残差连接 (Residual Connections)** 在原有的 Cross 层基础上加入了残差连接机制,从而缓解梯度消失问题并提高训练稳定性。 2. **支持多层 Cross 网络** 原始 DCN 中仅有一层 Cross 网络,而 DCN v2 则允许堆叠多个 Cross 层以实现更深层次的特征交互[^3]。 3. **高效的参数共享策略** 为了减少参数量和加速收敛速度,DCN v2 设计了一种新的权重初始化方法,并通过实验验证了该设计的有效性。 以下是基于上述描述构建的一个典型 DCN v2 架构图的文字说明及其可能的可视化形式: --- #### 文字描述 DCN v2 的整体架构分为三个部分: - **输入层**: 接收稀疏或稠密特征作为输入数据; - **嵌入层**: 将高维离散特征映射至低维度连续空间表示向量; - **双分支网络结构**: - 左侧为标准 DNN(Deep Neural Network),负责捕捉复杂的非线性关系; - 右侧为改进后的 CrossNet(Cross Network),专注于高效建模显式的特征组合; 最终两路输出会被拼接在一起送入全连接层完成预测任务。 --- #### 可视化示意图 虽然无法直接提供图片文件,但可以通过以下伪代码生成类似的图形展示逻辑: ```python import matplotlib.pyplot as plt from matplotlib.patches import Rectangle, ConnectionPatch fig, ax = plt.subplots(figsize=(8, 6)) # 绘制矩形框代表各模块 ax.add_patch(Rectangle((0.1, 0.7), 0.2, 0.2, edgecolor='black', facecolor='none')) ax.text(0.2, 0.8, 'Input Layer') ax.add_patch(Rectangle((0.4, 0.7), 0.2, 0.2, edgecolor='black', facecolor='lightblue')) ax.text(0.5, 0.8, 'Embedding\nLayer') ax.add_patch(Rectangle((0.7, 0.7), 0.2, 0.2, edgecolor='black', facecolor='orange')) ax.text(0.8, 0.8, 'DNN Branch') ax.add_patch(Rectangle((0.7, 0.4), 0.2, 0.2, edgecolor='black', facecolor='green')) ax.text(0.8, 0.5, 'CrossNet\nBranch') # 添加箭头连线 con1 = ConnectionPatch(xyA=(0.3, 0.7), xyB=(0.4, 0.7), coordsA="data", coordsB="data", arrowstyle="-|>", color="red") ax.add_artist(con1) con2 = ConnectionPatch(xyA=(0.6, 0.7), xyB=(0.7, 0.7), coordsA="data", coordsB="data", arrowstyle="-|>", color="blue") ax.add_artist(con2) plt.axis('off') plt.show() ``` 此脚本利用 `matplotlib` 库创建了一个简化版的 DCN v2 流程框架示意草图。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值