《DCN V2: Improved Deep & Cross Network and Practical Lessons forWeb-scale Learning to Rank Systems》
有效的特征交叉(feature cross)对于许多 learning to rank: LTR 模型的成功至关重要。特征交叉提供了单个特征之外的额外交互信息。例如,"国家" 和 "语言" 的组合比其中单个特征更有信息量。在线性模型时代,机器学习从业者依靠手动识别这种特征交叉来增加模型的表达能力。不幸的是,这涉及到一个组合搜索空间,在数据大多是 categorical 的 web-scale 的应用中,这个搜索空间很大而且很稀疏。在这种情况下的搜索是耗时耗力的,往往需要领域的专业知识,并使模型更难以泛化。
后来, embedding 技术被广泛采用,将特征从高维稀疏向量投影到更低维的稠密向量。Factorization Machine: FM 利用 embedding 技术,通过两个 latent vector 的内积来建模 pairwise 特征交互。与那些传统的线性模型中的特征交叉相比,FM 带来了更多的泛化能力。
在过去的十年中,随着更大的算力和巨大的数据规模,工业界的 LTR 模型已经逐渐从线性模型和 FM-based 的模型迁移到深度神经网络(DNN )。这使得搜索和推荐系统的模型性能得到了全面的提升。人们普遍认为 DNN 是通用的函数近似器,可以潜在地学习各种特征交互。然而,最近的研究(《Latent cross: Making use of context in recurrent recommender systems》、《Deep & Cross Network for Ad Click Predictions》)发现:DNN 甚至对二阶特征交叉或三阶特征交叉进行近似建模都是低效的。
为了更准确地捕捉有效的特征交叉,常见的补救措施是通过更宽或更深的网络进一步提高模型容量。这自然是一把双刃剑:
我们在提高模型性能的同时也使模型的服务速度大大降低。在许多生产环境中,这些模型正在处理极高的 QPS ,因此对实时推理有非常严格的延迟要求。可能,serving 系统已经被推到了一个极限,无法承受更大的模型。
此外,更深的模型往往引入可训练性问题,使模型更难训练。
这已经揭示了设计一个能够有效地学习 predictive 特征交互的模型的关键需求,特别是在一个处理数十亿用户的实时流量的资源限制环境中。 最近的许多工作试图解决这一挑战。共同的思想是:利用那些从DNN 学到的隐式高阶交叉、以及显式的和有界的特征交叉(在线性模型中已经发现,显式的和有界的特征交叉是有效的)。隐式交叉是指通过端到端的函数来学习交互,而没有任何明确的公式来建模这种交叉。另一方面,显式交叉是通过一个具有可控交互阶次的显式公式来建模的。
在所有这些方法中,Deep & Cross Network: DCN 是有效和优雅的。然而,在大规模工业系统中部署 DCN 面临许多挑战。DCN 的 cross network 是有局限性的:
cross network 代表的多项式仅由 random cross patterns 的灵活性。
此外,cross network 和 DNN 之间的分配容量是不平衡的。当将 DCN 应用于大规模生产数据时,这种差距明显增加。绝大部分的参数将被用于学习 DNN 中的隐式交叉。
在论文 《DCN V2: Improved Deep & Cross Network and Practical Lessons forWeb-scale Learning to Rank Systems》 中,作者提出了一个新的模型 DCN-V2 ,改进了原来的DCN 模型。作者已经在整个谷歌的相当多的 learning to rank system 中成功部署了 DCN-V2 ,在离线模型准确性和在线业务指标方面都有显著的提高。
DCN-V2 首先通过 cross layer 学习输入(通常是 embedding layer )的显式特征交互,然后与深度网络相结合从而学习互补的隐式交互。DCN-V2 的核心是 cross layer ,它继承了 DCN 中 cross network 的简单结构,然而在学习显式的和有界的交叉特征方面的表达能力显著增强。论文研究了以点击为正标签的数据集,然而 DCN-V2 与标签无关,可以应用于任何 learning to rank system 。
论文贡献:
论文提出了一个新的模型 DCN-V2 来学习有效的显式特征交叉和隐式特征交叉。与现有的方法相比, DCN-V2 更具有表达能力,但仍然是高效和简单的。
观察到 DCN-V2 中所学到的矩阵的低秩性质,论文提出利用低秩技术从而在子空间中近似feature cross ,以获得更好的性能和延迟的 trade-off 。
此外,论文提出了一种基于 Mixture-of-Expert 架构的技术,以进一步将矩阵分解为多个较小的子空间。然后,这些子空间通过一个门控机制被聚合起来。
论文利用人工合成数据集进行并提供了广泛的研究,证明了传统的基于 ReLU 的神经网络学习高阶特征交叉的低效率。
通过全面的实验分析,论文证明了的 DCN-V2 模型在 Criteo 和 MovieLen-1M 基准数据集上的表现明显优于 SOTA 算法。
论文提供了一个案例研究,并分享了在一个大规模工业 ranking 系统中部署 DCN-V2 的经验,这带来了显著的离线收益和在线收益。
相关工作:最近 feature interaction learning 工作的核心思想是利用显式的和隐式的特征交叉。为了建模显式交叉,最近的工作引入了乘法运算(pairwise interaction 。我们根据他们如何结合显式部分和隐式部分来组织相关工作。
并行结构:一个工作方向是联合训练两个并行网络,其灵感来自于 wide and deep 模型,其中 wide 组件将原始特征的交叉作为输入,而 deep 组件是一个 DNN 模型。然而,为 wide 组件选择交叉特征又回到了线性模型的特征工程问题。尽管如此, wide and deep 模型已经激发了许多工作从而采用这种并行的架构并改进 wide 部分。
DeepFM 通过在 wide 组件采用 FM 模型从而自动进行 feature interaction learning 。
xDeepFM 通过生成多个 feature map 增加了 DCN 的表达能力,每个 feature map 都编码了当前 level 和输入 level 的特征之间的 pairwise 交互。此外,它还将每个 feature embedding unit ,而不是将每个元素 unit 。不幸的是,它的计算成本很高( #params 的 10 倍),使得它在工业规模的应用中不实用。
此外,DeepFM 和 xDeepFM 都要求所有的 feature embedding 具有相同的大小,这在应用于工业数据时又是一个限制,因为工业数据的词表大小( categorical features 的大小)从
AFM 通过一个注意力网络为每个特征交互分配重要性。
AutoInt 利用带残差连接的 multi-head self-attention 机制。
InterHAt 进一步采用了分层注意力。
堆叠结构:另一个工作方向是在 embedding layer 和 DNN 模型之间引入一个 interaction layer ,该 interaction layer 创建了显式的特征交叉。这个 interaction layer 在早期阶段捕捉到了特征交互,并促进了后续隐层的学习。
product-based neural network: PNN 引入了 inner product layer (IPNN)和 outer product layer (OPNN)作为 pairwise interaction layer 。OPNN 的一个缺点在于其高计算成本。
Neural FM: NFM 通过用 Hadamard 积代替内积来扩展 FM 。
DLRM 遵从 FM ,通过内积来计算特征交叉。
这些模型只能创建到二阶显式交叉。
AFN 将特征转化为对数空间,并自适应地学习任意阶的特征交互。
与 DeepFM 和 xDeepFM 类似,这些方法只接受大小相等的 embedding size 。
尽管这些年经过了许多发展,我们的综合实验表明,DCN 仍然是一个强大的基线。我们将此归因于其简单的结构,它促进了 optimization 。然而,正如所讨论的,其有限的表达能力使其无法在 web-scale 的系统中学习更有效的特征交叉。在下文中,我们提出了一个新的架构,它继承了 DCN 的简单结构,同时提高了它的表达能力。
这里描述了一个新颖的模型架构 DCN-V2 来学习显式特征交互和隐式特征交互。DCN-V2 从一个 embedding layer 开始,然后是一个包含多个 cross layer 的 cross network (用于建模显式特征交互),然后结合一个深度神经网络(用于建模隐式特征交互)。
DCN-V2 中的改进对于将 DCN 用于高度优化的生产系统至关重要。DCN-V2 极大地提高了 DCN 在 web-scale的生产数据中在建模复杂的显式的交叉项的表达能力,同时保持其优雅的公式,便于部署。DCN-V2 所建模的函数族是 DCN 所建模的函数族的严格超集。
模型整体架构如下图所示,有两种方式将 cross network 与 deep network 结合起来:堆叠式、并行式。此外,考虑到 cross layer 的低秩性质,我们建议利用 low-rank cross layer 的混合来实现模型性能和效率之间更健康的 trade-off 。

Embedding Layer:embedding layer 将 categorical (sparse) 特征和 dense 特征的组合作为输入,并输出 DCN 类似的 setting 。与 DeepFM, NFM, xDeepFM, DLRM, IPNN, FM 不同的是,DCN-V2 接受任意的 embedding size 。这对于词表规模从
Cross Network:DCN-V2 和核心在于 cross layer,它创建了显式的特征交叉。其中第 cross layer如下所示:
其中:
base layer ,它包含原始的一阶特征,通常被设置为 embedding layer 。
bias 向量。
下图展示了一个单独的 cross layer 。

对于一个 cross network ,最高的多项式阶数是 DCN-V2 退化到 DCN 。
cross layer 仅能建模有界的多项式类,而其他任何复杂的函数空间只能被近似。因此,我们接下来引入了一个 deep network 来补充数据中固有分布的建模。
DCN V1的公式为:。相比之下, DCN V2的公式为:。如果不考虑 bias项和残差项 ,那么: 即:
DCN V1中,的权重在所有输出位置 上共享; DCN V2中,的权重在所有输出位置 行独立。因此, DCN V2的模型容量更高。
DCN V2的核心:用代替 。读者感觉没什么创新点。
Deep Network:第 deep layer 的公式为:
其中:
deep layer 的的输入和输出。
bias 向量。
ReLU 。
Deep and Cross Combination:我们提出了两种结构:
Stacked Structure(如 Figure 1a):输入 cross network,然后是 deep network,最后是输出层输出
Parallel Structure (如 Figure 1b):输入 cross network 和 deep network,然后这两个网络的输出拼接起来作为最终输出
prediction 为:
其中:sigmoid 函数。
对于损失函数,我们使用 logloss(带正则化项)。注意,DCN-V2 本身是对 prediction-task 和损失函数无关的。
Cost-Effective Mixture of Low-Rank DCN:对于那些生产模型来说,模型容量往往受到有限的 serving 资源、严格的 latency 要求的限制。因此,我们寻求使 DCN-v2 更具 cost-efficient 的方法。
DCN-V2 结构简单,计算瓶颈在于 matrix-vector 乘法,这使得我们可以利用矩阵近似技术来降低成本:通过两个低秩矩阵 gap 或快速的谱衰减时,该方法是最有效的。在许多情况下,我们确实观察到所学的矩阵
下图 (a) 显示了 DCN-V2 中来自生产模型的学到的矩阵
因此,我们定义第 cross layer 的低秩版本为:
其中:
这个新的公式有两种解释:
我们在一个子空间中学习特征交叉。
这个解释启发我们采用Mixture-of-Experts: MoE 的思想。MoE-based 模型由两部分组成:experts (通常是一个小网络)和gating (输入的一个函数)。在我们的案例中,我们不是依靠一个单一的专家来学习特征交叉,而是利用多个这样的专家,每个专家在不同的子空间学习特征交互,并使用门控机制(取决于输入 mixture 的公式如下(如下图 (b) 所示):
其中:
sigmoid 或 softmax 函数。
我们将输入
这个解释激励我们利用投影空间的低维性质。我们不是立即从 refine the representation :
其中:

我们旨在有效利用固定的内存/时间预算来学习有意义的特征交叉。以下公式从上到下都代表一个严格意义上的、逐渐增大的函数族:
这一组模型有比较大的工程参考意义,它描述了从简单模型到复杂模型的升级路径,同时也具有一定的物理意义。
算法复杂度:令 embedding size,cross layers 数量, DCN 专家的数量。此外,我们假设每个专家具有相同的小维度 cross network 的时间复杂度和空间复杂度为 mixDCN(低秩 DCN) 的时间复杂度和空间复杂度为
从 bit-wise 和 feature-wise 的角度来看,对于 cross network,cross network 能够创造出直到
与 DCN 相比,DCN-V2 用更多的参数来刻画相同的多项式类,表达能力更强。此外,DCN-V2 中的特征交互具有更强的表达能力,可以从 bit-wise 和 feature-wise 两方面来看;而在DCN 中,它只是从 bit-wise 的角度来看。
"CrossNet" 或 "CN" 代表 cross network ,"Mix" 代表低秩混合版本。
大多数工作只研究了具有未知交叉模式和噪音的数据的公共数据集。很少有工作在一个干净的环境中用已知的 ground-truth 模型进行研究。因此,重要的是要了解:
在哪些情况下,传统的神经网络会变得没有效率。
在我们提出的模型 DCN-V2 中每个组件的作用。
我们用 DCN 模型中的 cross network 来表示那些特征交叉方法,并与工业推荐系统中常用的 ReLU 进行比较。为了简化实验和便于理解,我们假设每个特征
难度增加时的性能:仅考虑二阶特征交叉,令 ground-truth model 为
稀疏性 (
交叉模式的相似性(
因此,我们创建了难度不断增加的人工合成数据集:
其中: [-1, 1] 之间均匀采样的。
下表报告了 5 次运行和 model size 的平均 RMSE 。可以看到:
当交叉模式很简单时(即,DCN-V2 和 DCN 都很有效。
当模式变得更加复杂时(即,DCN-V2 仍然准确,而 DCN 则准确性下降了。
即使采用更宽更深的结构,DNN 的性能仍然很差。这表明 DNN 在建模单项式模式时效率不高。

每个组件的作用:我们还分别对 3 阶和 4 阶的同质多项式进行了消融研究。对于3 阶和 4 阶,我们从 20 个交叉项。下图展示了层深度对于平均 RMSE 的影响。
显然,2 层对 3 阶多项式取得的最佳性能得到验证(4 阶多项式也是类似的)。在其他层,性能明显下降。
DCN (红色虚线)在复杂的交叉模式建模方面的有限表达能力。

总而言之,ReLU (即,ReLU 激活函数的 DNN)在捕获显式的特征交叉(乘法关系)方面效率不高,即使有更深更大的网络。DCN 准确地捕捉到了简单的交叉模式,但在更复杂的模式中却失败了。DCN-V2 对于复杂的交叉模式仍然是准确和有效的。
数据集:
Criteo:包含 7 天内的用户日志,包含 45M 个样本和 39 个特征。我们使用前6 天的数据进行训练,并将最后一天的数据随机平均分成验证集和测试集。我们对 13 个 dense 特征执行 log 归一化(feature-2 为 26 个 categorical feature 。
MovieLen-1M:包含 740k 个样本和 7 个特征。每个训练样本包括一个 <user-features, movie-features, rating> 三元组。我们将任务形式化为一个回归问题:所有一分和两分的评分都被归一化为 0 、四分和五分被归一化为 1、三分被删除。使用和嵌入 6 个 non-multivalent categorical feature 。数据被随机分成 80% 用于训练、10% 用于验证、10% 用于测试。
baseline 方法:SOTA 的 feature interaction learning 算法,如下表所示。


实现细节:所有 baseline 和我们的方法都在 TensorFlow v1 中实现。为了公平比较,除了特征交互组件,所有模型的实现都是相同的。
embedding:除了 DNN 和 DCN 模型,所有的 baseline 都要求每个特征的 embedding size 是相同的。因此,我们将所有的模型固定为 Criteo 为 39 、Movielen-1M 为 30 )。
optimization:Adam 优化器,batch size = 512 (MovieLen batch size = 128)。权重以 He Normal 来初始化,bias 被初始化为零,梯度被截断为范数 10 。对参数采用 decay = 0.9999 的指数移动平均。
超参数调优:对于所有的 baseline ,我们对超参数进行了粗粒度(大范围)的网格搜索,然后再进行细粒度(小范围)的搜索。为了确保可重复性和减少模型方差,对于每个方法和数据集,我们报告了最佳配置的 5 次独立运行的均值和标准差。我们在下面描述了 Criteo 的详细设置。对于 MovieLens ,我们也遵循类似的过程。
对于 Criteo 的所有 baseline :
学习率调优范围:对数尺度上从
训练步数调优范围:{150k, 160k, 200k, 250k, 300k}
隐层深度调优范围:{1, 2, 3, 4} 。
隐层维度调优范围:{562, 768, 1024} 。
正则化参数调优范围:
每个模型自己的超参数:
DCN:交叉层的数量调优范围 {1, 2, 3, 4} 。
AutoInt:注意力层的数量调优范围 {2, 3, 4} ;attention embedding size 调优范围 {20, 32, 40} ;attention head 数量调优范围 {2, 3} ;残差连接调优范围 {enable, disable} 。
xDeepFM:CIN layer size 调优范围 {100, 200} ,CIN layer depth 调优范围 {2, 3, 4} ,激活函数为恒等映射,计算为 direct 或 indirect 。
DLRM:bottom MLP layer size 和数量的调优范围 {(512,256,64), (256,64)} 。
PNN:我们运行了 IPNN 、OPNN 和 PNN* ,对于后两者,kernel type 调优范围 {full matrix, vector, number} 。
对于所有的模型,参数总数上限为
DCN-V2 和 baseline 比较结果:每个模型的最佳 setting 是超参数空间中搜索出来的。如果两个 setting 的性能相当,我们就报告成本较低的那个。可以看到:
我们看到,DCN-V2 的表现一直优于 baseline (包括 DNN ),并实现了健康的 quality/cost trade-off 。
注意,在我们为 baseline 模型的最佳 setting 而进行的彻底的超参数搜索中,我们确实探索了更宽、更深的模型。然而,更大的模型也不能产生更多的质量收益,清楚地表明许多 bseline 的瓶颈是质量而不是效率。
Best Setting:
对于 DCN-V2 模型,"stacked" 和 "parallel" 结构都优于所有 baseline,而"stacked" 在 Criteo 上效果更好、 "parallel" 在Movielen-1M 上效果更好。
在实践中,我们发现:"stacked" 结构更能提高质量,而 "parallel" 结构有助于减少模型方差。
与 baseline 的比较:
对于二阶方法,DLRM 的表现不如 DeepFM ,尽管它们都来自FM。这可能是由于 DLRM 在点积层之后省略了一阶稀疏特征。
对于高阶方法,xDeepFM、AutoInt 和 DCN 在 Criteo 上的表现相似;而在 MovieLens 上,xDeepFM 在 Logloss 上表现出很高的方差。
DCN-V2 在 Criteo 上取得了最好的性能,它显式地建模三阶特征交互。DCN-Mix 有效地利用了内存,并在保持准确性的同时减少了 30% 的成本。单独的 CrossNet 在两个数据集上的表现都优于 DNN 。
与 DNN 的比较:我们调优了 DNN 模型,并使用了更大的 layer size 。令我们惊讶的是,DNN 的表现与大多数 baseline 相差无几,甚至超越了某些模型。
我们的假设是:那些来自 baseline 的显式特征交叉的模型并不是以一种富有表达能力、以及易于优化的方式建立的。前者使其性能容易被具有大容量的 DNN 所匹配,后者则容易导致可训练性问题从而使模型不稳定。因此,当与 DNN 组合时,整体性能被DNN 组件所支配。
在表达能力方面,考虑二阶方法。PNN 的模型比 DeepFM 和 DLRM 更具有表达能力,这导致它在 MovieLen-1M 上的表现更出色。这也解释了 DCN 与 DCN-V2 相比性能较差的原因。
在可训练性方面,某些模型可能天生就比较难训练,导致性能不尽如人意。
在 Criteo 上,PNN 的平均性能与 DNN 相当。这是由 PNN 的不稳定性造成的。虽然它的最好成绩比DNN 好,但它在多次试验中的高标准差推高了平均损失。
模型效率:
对于大多数模型,FLOPS 大约是参数数量的 2 倍。然而,对于 xDeepFM ,FLOPS 要高出参数数量一个量级,这使得它在工业规模的应用中难以部署。
在所有的方法中,DCN-V2 提供了最好的性能,同时保持了相对的效率。
DCN-Mix 进一步降低了成本,在模型效率和质量之间取得了更好的 trade-off 。

超参数研究:
Depth of Cross Layer:根据设计,cross network 捕获的最高阶特征交叉随着层深的增加而增加。如图 Figure 5 (a) 所示:
随着cross network 的加深,质量有了稳定的提高,表明它能够捕捉到更多有意义的交叉。
然而,当使用更多的层时,改善的速度放缓了。这表明高阶交叉的贡献比低阶交叉的贡献要小。
我们还用一个同样大小的 DNN 作为参考。当有 ≤2 层时,DNN 的表现优于交叉网络;当有更多层时,cross network 开始缩小性能差距,甚至优于 DNN 的表现。
矩阵的秩:模型是 3 个交叉层,然后是 3 个 512-size ReLU 层。如图 Figure 5 (b) 所示:
当 4 时,性能与其他 baseline 持平。
当 4增加到 64 时,LogLoss 几乎随
当 64 进一步增加到满时,LogLoss 的改善速度减慢了。
我们把 64 称为 rank 阈值。从 64 开始的明显放缓表明:刻画特征交叉的重要信号可以在前 64 个奇异值中捕获。
专家数量:我们观察到:
表现最好的setting(专家数量、gate 类型、激活函数类型)受到数据集和模型架构的影响。
每种 setting 的最佳表现模型产生了相似的结果。更多的 lower-rank experts 并没有比单个 higher-rank expert 表现更好,这可能是朴素的 gating 函数、以及采取的 optimizations 所导致。我们相信更复杂的 gating 和 optimization 会在 mixture of experts 架构下产生更好的结果。

模型可视化:DCN-V2 中的权重矩阵 block-wise 视图(由
下图展示了第一个交叉层中学到的权重矩阵 (a) 中,由于版权的原因,特征名称被省略了;深色的像素代表较大的权重。在图 (b) 中,每个 block 代表它的 Frobenius 范数。
图 (a) 展示了整个矩阵,橙色方框突出了一些值得注意的特征交叉。非对角线的 block 对应于重要的交叉,这表明 DCN-V2 的有效性。对角线的 block 对应于 self-interaction (即,
图 (b) 表现学到的一些强交互,如 Gender × UserId 、MovieId × UserId 。
图
(a)包含的特征更多,因此方块更小;图(b)包含很少的特征,因此方块显得很大。

DCN-V2 在谷歌中的产品化:我们通过 DCN-V2 同时在离线模型的准确性、以及在线关键业务指标方面都取得了显著的收益。与公共数据集相比,收益也更加明显,这可能是由于生产数据集的数据量明显更大,数据分布更复杂。
生产数据和模型:生产数据是由数以千亿计的训练样本组成的抽样用户日志。稀疏特征的词表规模从 2 到数百万不等。baseline 模型是一个全连接的多层感知机,采用 ReLU 激活函数。
与生产模型的比较:与生产模型相比,DCN-V2 产生了 0.6% 的 AUCLoss (即,1.0 - AUC)改进。我们还观察到显著的在线关键业务指标收益。
baseline为多层感知机,所以DCN-V2表现好是符合预期的。为什么不和DeepFM进行比较?
我们分享一些我们通过产品化 DCN-V2 学到的实际经验:
最好在 DNN 的输入层和隐层之间插入交叉层。
我们看到,通过堆叠或拼接 1-2 个交叉层,准确性得到了一致的提高。超过 2 个交叉层,收益开始趋于平稳。
我们观察到,堆叠交叉层和拼接交叉层的效果都不错。堆叠层(stacking layers)可以学到高阶的特征交互,而拼接层(concatenating layers)(类似于多头机制)可以捕获到互补的交互。
我们观察到,使用 rank = (input size)/4 的 low-rank DCN 始终保持了 full-rank DCN-V2 的准确性。