一、BarsCTR [2021]

《BarsCTR: Open Benchmarking for Click-Through Rate Prediction》

  1. 与其他数据类型(如图像和文本)相比,CTR 预测问题通常涉及大规模和高度稀疏的数据,并包括许多不同 fieldcategorical feature (例如,在 Google Playapp 推荐中,有数十亿的样本和数百万的特征)。因此,在 CTR 预测中大幅提高准确性是一个巨大的挑战。

    CTR 预测的重要性和独特的挑战已经吸引了学术界和工业界的大量研究关注。CTR 预测模型已经从简单的logistic regression: LRfactorization machine: FM 和决策树,发展到deep neural network: DNN 。值得注意的是,许多深度模型已经被提出,并在工业的 CTR 预测问题上显示出显著的性能提升,如 Wide&DeepDeepFMDCNxDeepFMFiBiNETDIN,等等。

    尽管这些研究取得了成功,但仍然缺乏标准化的 benchmark 和统一的 CTR 预测任务的评估协议。因此,即使采用了一些常见的数据集(如 CriteoAvazu),现有的研究往往会进行他们自己的数据集拆分(例如,使用未知的 train-test 拆分,或使用未知的随机数种子)、以及预处理步骤(关于如何处理数值特征,以及如何过滤低频的categorical feature )。这导致了这些研究中的实验结果不可复现,甚至不一致,因为他们的非标准化的数据预处理使得任何两篇不同的论文的结果都没有可比性。每项工作都声称在他们自己的 data partition 上取得了显著改进的最佳结果,然而没有人知道:如果采用相同的评估协议进行公平的比较会是什么结果。由于缺乏公开的 benchmarking 结果作为参考,读者可能会怀疑论文中的 baseline 模型是否实现正确、是否经过了严格的超参数调优,但是这些研究都没有报告细节、也没有公开他们 baseline 实现的源代码。在某些 case 中,一些流行模型的官方或第三方源代码是可用的(如 DeepCTR ),但我们发现关于超参数设置、数据加载、以及 early stopping 的训练细节通常是缺失的,这使得我们很难重用代码来复现已有结果。 这种不可复现性和不一致性问题在很大程度上限制了该领域研究的实用价值和潜在影响。

    此外,由于文献中缺乏可重复使用和可比较的benchmarking 结果,研究人员在发表新的论文时,需要重新实现所有的 baseline ,并在自己的 data partition 上重新评估。这是一项繁琐而冗余的工作,严重地增加了研究人员开发新模型的负担。

    ImageNet benchmarkCV 领域、以及 GLUE benchmarkNLP 领域的成功启发,在论文 《BarsCTR: Open Benchmarking for Click-Through Rate Prediction》 中,作者建议对 CTR 预测进行 open benchmarking 。论文不仅规范了 CTR 预测的 open benchmarking pipeline,而且还对不同的模型进行了严格的比较,以便进行可复现的研究。为此,论文用统一的 setup12000 多个 GPU hours 内进行了 7000 多个实验,在两个广泛使用的数据集(包括 CriteoAvazu )的多个数据集 setting 上重新评估了 24 个现有模型。论文的实验显示了有些令人惊讶的结果:经过充分的超参数搜索和模型调优,许多模型的差异比预期的要小,有时甚至与文献中的报道不一致。

    一项类似的研究(《Are wereally making much progress? A worrying analysis of recent neural recommendation approaches》)也对推荐系统的多篇代表性论文进行了重新评估,提出了结果的可复现性问题以及对用于比较的 baseline 缺乏足够优化的担忧。与这项工作相比,作者更进一步,建立了一个 CTR 预测的open benchmark ,记做 BarsCTR 。目前, BarsCTR 已成为 BARS benchmark project 的主要 benchmarking 任务之一。 BARS benchmark project 旨在为推荐系统研究建立一个标准化的open benchmarking pipeline ,并通过开放最全面的benchmarking 结果以及有据可查的复现步骤,从而推动该领域的可复现研究。作者相信,这样的 benchmarking 研究对多个不同的读者群体都有好处:

    • 研究人员:该 benchmark 不仅可以帮助研究人员分析现有模型的优势和瓶颈,还可以让他们方便地衡量新模型的有效性。此外,论文的benchmark 还展示了一些良好的实践,为未来的研究提供公平的比较。

    • 从业人员: benchmark 代码和结果可以帮助工业的从业者评估新研究模型在他们自己问题中的适用性,并允许他们在自己的数据集上以较少的努力尝试新模型。

    • 比赛选手:利用论文的源代码和超参数,比赛选手可以在相关比赛中轻松实现高性能的 baselineensemble

    • 初学者:对于这个领域的初学者,特别是学生,论文的 benchmarking codehttps://openbenchmark.github.io/ctr-prediction/)和详细的复现步骤可以作为学习 CTR 预测的模型实现和模型调优技巧的指导手册。将论文的项目用于教育目的也是很有价值的。

    总而言之,论文的主要贡献如下:

    • 就作者所知,论文的工作为 CTR 预测的 open benchmarking 迈出了第一步。

    • 论文在网站上公开了所有的 benchmarking code 、评估协议、超参数设置和实验结果,以促进 CTR 预测的可复现性研究。

    • 论文的工作揭示了现有研究中的不可复现性(non-reproducibility)和不一致性(inconsistency)问题,并呼吁在未来的 CTR 预测研究中保持模型评估的开放性和严谨性。

  2. 相关工作:

    • CTR Prediction:在过去的十年中,CTR 预测模型被广泛研究,并经历了从线性模型、到FM、再到基于深度学习的模型的几代演变。这些工作被总结为以下几类:

      • Feature interaction learning:虽然简单的线性模型(如 LRFTRL )由于简单和高效而被广泛使用,但它们很难捕捉到非线性特征。《Practical Lessons from Predicting Clicks on Ads at Facebook》提出了 GBDT+LR 的方法,应用 Gradient Boosting Decision Tree: GBDT 来抽取有意义的 feature conjunction

      • FMFM 是一个有效的模型,通过特征向量的内积来捕获 pairwise feature interaction 。由于它的成功,人们从不同方面提出了许多后续模型,如 field awarenessFFM, FwFM)、特征交互的重要性(AFM, IFM)、基于外积的交互(HFM)、鲁棒性(RFM)、可解释性(SEFM)。然而,这些模型在实践中无法捕获高阶特征交互。

      • DNN:最近,深度学习已经成为推荐系统中的一种流行技术,产生了大量用于 CTR 预测的深度模型,包括 YoutubeDNN, Wide&Deep, PNN, DeepFM, DistillCTR 等等。其中一些模型旨在显式地捕获不同阶次的特征交互(如,DCN, xDeepFM),另一些模型探索使用卷积网络(如 CCPM, FGCNN )、递归网络(DSIN, DIEN)、或注意力网络(AutoInt, FiBiNET )来学习隐式的特征交互。

      • Behaviour sequence modeling:用户的历史行为对预测下一个item 的点击概率有很大影响。为了更好地捕获这种历史行为(如 item 购买序列),最近的一些研究提出了通过注意力机制、LSTMGRU 、以及 memory networkCTR 预测建立用户兴趣模型。典型的例子包括 DIN, DIEN, DSIN, HPMN, DSTN

      • Multi-task learning:在许多推荐系统中,用户可能会有点击以外的各种行为,如浏览、收藏、添加到购物车、以及购买。为了提高CTR 预测的性能,最好能利用其他类型的用户反馈来丰富 CTR 预测的监督信号。为了实现这一目标,一些工作提出了 multi-task learning 模型(如,ESMM, MMoE, PLE )来学习不同用户行为之间的 task relationship

      • Multi-modal learning:如何利用 item 丰富的多模态信息(如文本、图像和视频)来增强 CTR 预测模型是一个重要的研究问题,需要更多的探索。一些先驱性的工作证明了将多模态内容特征纳入 CTR 预测的有效性。

    • Benchmarking and Reproducibilityopen benchmarking 对促进研究进展很有价值。例如,ImageNetGLUE 是两个著名的 benchmark ,分别对计算机视觉和自然语言处理的进展做出了很大贡献。在推荐系统中,一些数据集(如 CriteoAvazu)被广泛使用。然而,仍然缺乏标准化的评估协议,这导致了现有研究的不一致性和不可复现性问题。

      值得注意的是,同时进行的一项工作(《Are We Evaluating Rigorously? Benchmarking Recommendation for Reproducible Evaluation and Fair Comparison》)也报告了一些经典推荐模型的benchmarking 结果。然而,他们的工作未能提供详细的配置和超参数设置,以实现可复现性。在这项工作中,我们通过建立第一个用于 CTR 预测的 open benchmark 、以及发布 20 多个模型的benchmarking结果,向可复现性研究迈出了重要一步。更重要的是,我们提供了所有的中间工件artifact (如复现步骤、运行日志),以确保我们结果的可复现性。

1.1 CTR Prediction

  1. Overview:一般而言,一个 CTR 预测模型由以下关键部分组成:

    • Feature EmbeddingCTR 预测的输入样本一般包含三组特征,即 user profile, item profile, context information ,每组特征都包含一些 feature field 。每个 field 的特征可以是categorical 的、numeric 的、或 multi-valued 的(例如,一个item 的多个 tag )。

      由于大多数特征是非常稀疏的,在one-hot encodingmulti-hot encoding 后会导致高维的特征空间,所以通常会应用 feature embedding 来将这些特征映射成低维的稠密向量。有三种类型的 feature embedding 过程:

      • Categorical:对于一个 categorical feature field i ,给定一个 one-hot feature vector xi ,我们将其嵌入为:ei=Vixi 。其中,ViRd×nembedding matrixn 为词表规模,dembedding 维度。

      • Numeric:对于数值特征字段 j ,有多种 feature embedding 的选择:

        • 可以通过对数值特征进行分桶从而转换为离散特征,通过手动设计(例如,将 13~19 岁归为青少年)、或通过在数值特征上训练决策树(如,GBDT )。

        • 给定一个归一化的标量值 xj,我们将其 embedding 设为 ej=vjxj ,其中 vjRdfield j 内所有特征的 shared embedding vector

        • 与其将每个值进行分桶、或为每个数值 field 分配一个向量,例如应用 AutoDis 这种 numeric feature embedding 方法,动态地将数值特征分桶,并从meta embedding matrix 计算 embedding

      • Multi-valued:对于一个 multi-valued field h ,每个特征可以表示为一个序列。我们得到它的 embedding 为:eh=Vh[xh1,xh2,,xhk]Rd×k ,其中 xhi 为序列元素的 one-hot encoded vectork 为序列长度。然后,embedding eh 可以进一步聚合为 𝑑 维向量,例如通过均值池化和 sum 池化。

        一个进一步的潜在改进是应用序列模型(如 DIN 中的 target attention 、以及 DIEN 中的 GRU )来聚合 multi-valued 行为序列特征。

    • Feature Interaction:对于 CTR 预测任务,特征之间的交互(又称 feature conjunction )是提高分类性能的核心。在factorization machine: FM 中,内积被证明是一种简单而有效的方法来捕获 pairwise feature interaction

      FM 成功以来,大量的研究致力于以不同的方式捕捉特征之间的交互。典型的例子包括:PNN 中的内积层和外积层、NFM 中的Bi-interactionDCN 中的 cross networkxDeepFM 中的 compressed interactionFGCNN 中的卷积、HFM 中的循环卷积、FiBiNET 中的双线性交互、AutoInt 的自注意力、FiGNN 的图神经网络、InterHAt 的分层注意力。

      此外,目前的大部分工作都在研究如何同时将显式特征交互和隐式特征交互(通过普通的全连接网络,即 MLP )结合起来。

    • 损失函数:二元交叉熵损失目前广泛应用于 CTR 预测任务中,它的定义为:

      L=1ND(ylogy^+(1y)log(1y^))

      其中:D 为包含 N 个样本的训练集,yground-truthy^ 为预估的点击概率。

      我们定义:y^=σ(ϕ(x)) ,其中 x 为给定的输入特征,σ()sigmoid 函数,ϕ()model function

  2. 代表性的模型:

    • 浅层模型:

      • Logistic Regression: LRLRCTR 预测的一个简单的 baseline 模型。

      • Factorization Machine: FMFM 将特征嵌入到稠密的向量中,并建模 pairwise 特征交互为相应 embedding vector 的内积。值得注意的是,FM 是特征数量的线性时间复杂度。

      • Field-aware factorization machine: FFMFFMFM 的一个扩展,针对特征交互时考虑了 field 信息。 它是 Kaggle 关于 CTR 预测的几个竞赛中的获胜模型。

      • HOFM:由于 FM 只能捕获到二阶的特征交互,HOFM 旨在将 FM 扩展到高阶 factorization machine 。然而,它导致指数级的特征组合、消耗巨大的内存、并且需要很长的运行时间。

      • FwFMFwFM 通过考虑特征交互的 field-wise 权重扩展了 FM 。与 FFM 相比,它的性能相当,但使用的模型参数少得多。

      • LorentzFMLorentzFM 将特征嵌入双曲空间,并通过洛伦兹距离(Lorentz distance)的三角形不等式建模特征交互。

    • 深层模型:与浅层模型相比,深层模型在捕获复杂的高阶特征交互方面更加强大,通常会产生更好的性能。然而,效率已经成为深层模型在实践中 scale 的主要瓶颈。

      • DNNDNN《Deep Neural Networks for YouTube Recommendations》 报告的一个直接的深层模型,它在拼接 feature embedding 后应用一个全连接网络(称为 DNN )进行 CTR 预测。

      • CCPMCCPM 报告了使用卷积方法进行 CTR 预测的首次尝试,其中 feature embedding 通过卷积网络进行分层聚合。

      • Wide&DeepWide&Deep 结合了 wide network (或浅层网络)和 deep network ,从而同时实现了两者的优势。

      • IPNNIPNNproduct-based network,它将 feature embedding 的内积(或外积)作为 DNN 的输入。由于 pairwise 外积需要巨大的内存,我们选择内积版本,即 IPNN

      • DeepCross:受残差网络的启发,《Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Feature》提出了 deep crossing 来在 DNN 层间增加残差连接。

      • NFM:与 PNN 类似,NFM 提出了一个 Bi-interaction 层,将 pairwise 特征交互池化为一个向量,然后将其馈入 DNN 进行 CTR 预测。

      • AFMAFM 通过注意力网络学习特征交互的权重,而不是像 FM 那样平等对待所有的特征交互。与 FwFM 不同的是,AFM 根据输入的数据样本动态地调整权重。

      • DeepFMDeepFMWide&Deep 的一个扩展,它用FM 代替LR ,显式地建模二阶的特征交互。

      • DCNDCN 提出了一个 cross network ,以显式的方式执行高阶的特征交互。此外,遵从 Wide&Deep,它还集成了一个 DNN 网络。

      • xDeepFMDCN 所建模的高阶特征交互是 bit-wise 的,但 xDeepFM 提出 compressed interaction network: CINvector-wise 的方式捕获高阶特征交互。

      • HFM+HFM 提出了 holographic representation ,并通过循环卷积计算压缩外积来建模 pairwise 特征交互。HFM+ 进一步将 DNN 网络与HFM相结合。

      • FGCNNFGCNN 应用卷积网络和 recombination layer 来生成额外的组合特征,以丰富现有的 feature representation

      • AutoInt+AutoInt 利用自注意力网络来学习高阶的特征交互。AutoInt+AutoInt 与一个 DNN 网络整合在一起。

      • FiGNNFiGNN 利用图神经网络的消息传递机制来学习高阶的特征交互。

      • ONN(也叫 NFFM):ONN 是一个建立在 FFM 上的模型。它将 FFM 的交互输出馈入 DNN 网络。

      • FiBiNETFiBiNET 利用 squeeze-excitation network 来捕获重要的特征,并提出 bilinear interaction 来加强特征交互。

      • AFN+AFN 应用对数转换层(logarithmic transformation layer)来学习自适应阶次的特征交互。AFN+ 进一步将 AFNDNN 网络整合在一起。

      • InterHAtInterHAt 采用分层注意力网络,以有效的方式建模高阶特征交互。

1.2 实验

1.2.1 可复现性要求

  1. 我们强调了以下五个关键要求,以确保可复现的研究。然而,目前许多研究未能满足所有这些可复现性要求,如下表所示。请注意,我们用 ✓ , - , × 分别表示每个要求是否完全、部分、或未满足。它还表示artifacts 是否完全可用、部分可用或不可用从而复现每个 step 。例如,- 表示 FiBiNET 只有非官方的模型源代码。

    • 数据预处理:大多数工作将训练集、验证集和测试集随机拆分,但其他人往往由于缺乏脚本、或使用的随机数种子而无法复现相同的数据拆分。更有甚者,一些预处理的细节(例如,如何处理数值特征、用什么阈值来过滤低频的 categorical feature )可能缺失或不完整。在这种情况下,研究人员不得不进行他们自己的数据拆分和预处理,从而导致无法比较的结果。值得注意的是,AutoInAFNInterHAt 的作者在分享数据处理代码或预处理数据方面做了一个很好的起点。

    • 模型源代码:本着开源的精神,一些研究在 GitHub 上发布了他们的模型源代码。一些流行的模型也有非官方的实现,可以从第三方库中获得(例如 DeepCTR )。但在很多情况下,我们发现源代码还不能用于可复现性研究,因为它可能缺少训练代码(如加载数据、early stopping 等)、或者错过了给定数据集上的一些关键超参数。

    • 模型超参数:大多数研究在论文中指定了他们自己模型的详细超参数。但如果不能获得作者预处理的原始数据集,其他人在新的数据集拆分上使用相同的超参数是不合适的。它可能只能达到次优的性能,需要重新调参。这种做法会导致现有论文中出现不一致的结果。

    • baseline 源代码:许多研究报告了他们自己模型的细节,但没有说明他们如何应用 baseline 模型。我们注意到,现有的研究很少开放 baseline 模型的源代码,也没有说明哪种实现被用于比较。模型的性能在很大程度上取决于其代码实现的质量。糟糕的实现可能会引入bias ,并使模型的比较变得不公平。然而,这一方面往往被现有的研究所忽视,使得他们的性能改进难以复现。

    • baseline 超参数:最好能详尽地调优 baseline 模型的超参数以公平地比较模型的性能。然而,由于缺乏 open benchmarking ,这一点还没有得到保证。大多数现有的研究,由于其未知的数据预处理和 baseline 实现,通常报告同一 baseline 模型的不一致的结果。

    为了实现研究的可复现性和比较的公平性,在这项工作中,我们旨在建立一个标准化的 benchmarking pipeline ,并为 CTR 预测提供最全面的 open benchmarking 结果。

1.2.2 评估协议

  1. 数据集:CriteoAvazu 。我们之所以选择它们,是因为它们都是从生产中的真实点击日志中收集或采样的,而且都有数千万的样本,使得 benchmarking 结果对行业从业者有意义。下表总结了数据统计信息。我们还在 BarsCTR 网站上提供了更多数据集的 benchmarking 结果。

  2. 数据集拆分:遵循大多数现有的研究,分别将 CriteoAvazu 随机拆分为 8:1:1 从而作为训练集、验证集和测试集。为了使其完全可复现,并易于与现有工作进行比较,我们重用 AutoInt 提供的代码,并控制随机种子(即 seed=2018 )进行拆分。我们将这两个数据拆分分别记做 Criteo_x4Avazu_x4

  3. 数据预处理:我们主要遵循与 AutoInt 相同的步骤对特征进行预处理。此外,我们做了一些修改,并修复了 AutoInt 中的一个缺陷,以改善 benchmark 结果。

    • Criteo:我们创建了两个不同的评估设置,分别表示为 Criteo_x4_001Criteo_x4_002

      • Criteo_x4_001

        • 对于数值特征,我们没有像 AutoInt 那样对数值进行归一化处理,而是按照 Criteo 竞赛的获胜方案,将每个数值特征按照如下方式离散化从而获得更好的性能:

          f(x)={log2(x), if x>21,else
        • 对于数值特征:我们用默认的 "OOV" token 取代低频特征( min_count=10 )。

        此外,我们还将 feature embedding 的维度固定为 16

      • Criteo_x4_002:与 Criteo_x4_001 不同之处在于,我们为 categorical feature 设置了 min_count=2 ,而 feature embedding 维度在调优之后等于 40

    • Avazu:我们也创建了两个评估设置,即 Avazu_x4_001Avazu_x4_002

      • Avazu_x4_001

        • 我们删除了在每个数据样本中具有 unique 值的 id 字段,这对于 CTR 预测来说应该是无用的。但它在 AutoInt 中被保留了下来,导致了一个缺陷。

        • 此外,我们将 timestamp 字段转化为三个新字段:hour, weekday, is_weekend

        • 对于所有的 categorical feature ,我们用默认的 "OOV" token 代替低频特征( min_count=2 )。

        • 我们进一步将 feature embedding 的维度固定为 16 ,正如 AutoInt

      • Avazu_x4_002 :与 Avazu_x4_001 的不同之处在于,我们为 categorical feature 设置了 min_count=1 ,而 feature embedding 维度在调优之后等于 40

    我们强调,对于 Avazu_x4 ,我们设置了一个小的 min_count 阈值,因为它确实导致了比 AutoInt 中的原始设置(min_count=10 )更好的性能。然而,我们注意到,在我们的 benchmark 中,不同模型之间的相对比较是公平的,因为所有的模型都处于相同的 embedding size 。我们的 benchmark 力求在进行模型比较时提高 baseline 的水平。

  4. 评估指标:AUC, logloss

  5. Benchmarking toolkit :虽然有许多开源项目用于 CTR 预测,但它们大多以临时的方式实现一些模型,缺乏完整的 workflow 来进行 benchmarking 。具体而言,DeepCTR 提供了一个很好的软件包,对许多 CTR 预测模型进行统一实现。尽管如此,我们的 benchmarking 需要一个完整的 workflow (而不仅仅是 CTR 预测模型)。

    在这项工作中,我们建立了开源的 FuxiCTR toolkithttps://github.com/xue-pai/FuxiCTR) ,用于对 CTR 预测模型进行 benchmarking ,提供了关于可配置、可调优和可复现的惊人特性。FuxiCTR 的代码由以下部分组成:

    • 数据预处理部分从 CSV 文件中读取原始数据,转换所有数值特征、categorical feature 、以及序列特征,并将转换后的数据输出到 HDF5 文件。

    • Pytorch 以统一的方式实现了数十个模型。

    • 训练部分的实现是为了读取 batch 数据、计算前向传播和后向传播、并在必要时进行学习率衰减和 early stopping

    • seedinglogging 工具也是专门为可复现性设计的,为每个 benchmarking 实验记录详细的运行日志(包括使用的超参数)。

    • 超参数调优部分提供了一个可配置的界面,允许对用户指定的超参数进行网格搜索。

    我们将所有这些部分整合为一个完整的 benchmarking 框架,使研究人员能够轻松地复用我们的代码,建立新的模型,或增加新的数据集。FuxiCTR 的目标是为 CTR 预测的可复现性研究提供一个易于使用的软件包。

  6. 训练细节和超参数的调优:

    • 在训练过程中,我们默认应用 Reduce-LR-on-Plateau scheduler ,当给定指标停止改善时,将学习率降低 10 倍。

    • 为了避免过拟合,当验证集上的指标在连续 23epoch 中停止改善时,就会采用 early stopping 。默认的学习率是103

    • batch size 最初被设置为 10000 ,如果 GPU 出现 OOM 错误,则使用 [5000, 2000, 1000] 逐渐减少。 我们发现,对于在数百万样本上训练的 CTR 预测模型,使用大的 batch size 通常会使模型运行得更快,并达到更好的结果。

    • 考虑到大量的特征, feature embedding 通常占据了大部分的模型参数。为了公平起见,我们在两个独立的设置中分别将 embedding 固定为 1640

    • 我们还发现,正则化权重对模型性能有很大影响。因此,我们在 0 ~ 1 的范围内仔细调优它,以 10 倍的搜索比例。

    • model size (如层数、隐层单元数)与数据高度相关,因此我们详尽地调优了这些超参数。

    • 我们还仔细调优了其他一些超参数(例如,是否使用 batch normalization ),从而达到每个模型的最佳结果。

    • 为了避免指数组合空间,我们通常先调优重要的超参数,然后再逐组调优其他参数。平均而言,我们对每个模型进行了 73 次实验以获得最佳结果。所有的实验都是在一个共享的 GPU 集群上(P100 GPU )进行的,每个 GPU16GB 内存。

  7. 可复现性:为了实现可重复性,我们保留了每个数据集拆分的 md5sum 值。我们为每个实验明确设置随机数种子,并将数据设置和模型超参数记录到配置文件中。此外,我们选择在 Pytorch 中实现模型,因为它比 Tensorflow 有更好的能力来避免在 GPU 设备上运行模型时的非确定性。

1.2.3 结果分析

  1. 我们报告了 24 个模型的 benchmarking 结果,如下表所示。

    • "Best Reported" 列显示了我们从现有研究中选出的关于 CriteoAvazu 数据集的最佳结果。

    • 我们报告了我们在四个数据集(Criteo _x4_001, Criteo_x4_002, Avazu_x4_001, Avazu_x4_002setting 上的 benchmarking 结果(logloss, AUC )。

    • 对于模型的效率,我们也报告了 Criteo_x4_002Avazu_x4_002 的训练时间,即每个 epoch 的时间和 epoch 的数量。

    • 此外,"#Params" 表示每个模型中使用的参数数量,"#Runs" 记录了我们用网格搜索进行模型调优的实验次数。请注意,"#Runs" 的数值通常取决于模型中要调优的超参数的数量。大量的运行(平均 ~73 次)揭示了在我们的 benchmarking 中,模型已经得到了很好的调优。

    • 此外,我们先在 Criteo_x4_002Avazu_x4_002 上运行实验,所以我们在 Criteo_x4_001Avazu_x4_001 上进行了较少数量的实验来调优模型。

    结论:

    • 现有研究报告中的最佳结果显示出一定的不一致性。如:InterHAt 在两个数据集上的表现都比 LR 差;DeepCrossAvazu 上的表现也比 LR 差。

      这主要是由于即使在相同的数据集上,通常也会采用不同的数据拆分或预处理步骤。这表明标准化的数据拆分和预处理是必要的,以使各模型之间的结果可以直接比较。

    • 在我们的数据集 setting 上进行模型调优后,我们大多获得了比最佳报告结果更好的性能。

    • 我们的 benchmarking 遵循相同的评估协议,使结果具有可比性。

      然而,经过详尽的重新调优,我们发现 SOTA 模型之间的差异变得很小。例如: IPNN, DeepFM, DCN, xDeepFM, ONNCriteo 上都达到了相同水平的准确性( ∼0.814 AUC ),而 DNN, DeepFM, DCN, xDeepFMAvazu 上达到了可比的性能。

      此外,一些最新的模型(如 InterHAt, AFN+, LorentzFM )获得的结果甚至比先前的一些 SOTA 模型还要差。

    • 我们还在 Figure 1 中对我们的 benchmarking 结果和其他论文报告的结果进行了明确的比较。对于每个数据集,我们绘制了8∼9 篇现有论文的 AUC 结果。我们可以看到,由于未知的数据拆分和预处理,不同论文的结果差异很大。

      一些最新的模型只获得了微弱的改进,有时甚至导致性能下降。值得注意的是,我们的 benchmarking 提出了迄今为止所有模型的最佳结果。

    • 内存消耗和模型效率是工业 CTR 预测任务的另两个重要方面。如下表所示,由于使用了卷积网络(如 CCPM, FGCNN, HFM+ )、field-wise 交互(如 FFM, ONN )、图神经网络(如 FiGNN )等,一些模型运行非常缓慢(每个 epoch 数小时)。还有一些模型有更多的参数,如 FFM, ONN, FGCNN 等。这些缺点可能会阻碍它们在工业中的实际应用。

      整体而言,IPNN, DCN 的效果好、训练时间短,取得了良好的 tradeoff 。这两个模型都进行了显式的特征交叉,一个是堆叠式、一个是并行式。

  2. 模型重新调优:为了进一步证明重新调优 baseline 模型的必要性,在下表中,我们展示了四个代表性模型在三种 setting 下的结果:

    • Reported setting:表示相应论文所报告的结果。

    • Rerun setting:表示我们根据原始论文中给出的超参数,在我们的数据拆分上重新进行实验的情况。

    • Retuned setting:表示广泛的超参数调优后取得的结果。

    可以看到:

    • 即使在相同的数据集上,直接复用原来的超参数来重新进行实验,也会在新的数据 setting 中带来很大的性能 gap (即我们 case 中的 Criteo_x4_002Avazu_x4_002 )。

    • 在模型重新调优后,我们比原来的超参数取得了相当大的改进。这表明,在新的数据拆分上测试一个模型时,有必要重新调优超参数(即使是同一数据集)。

      然而,我们不难发现,有些研究为了公平比较,选择遵循论文中使用的 baseline 超参数,但他们在不同的数据拆分上进行实验。因此,希望有一个 common benchmark 来缓解这个问题。

1.2.4 性能调优的关键因素

  1. 在我们的 benchmarking 工作中,我们也确定了一些对性能调优至关重要的关键因素:

    • 数据预处理:数据往往决定了一个模型的上限。然而,现有的工作很少在数据预处理期间对 categorical featuremin_counts 阈值进行调优。在我们的工作中,我们为低频特征过滤设置了一个适当的阈值,这产生了更好的性能。

    • batch size:我们观察到,大的 batch size 通常会带来更快的训练和更好的性能。例如,如果 GPU 没有引发 OOM 错误,我们将其设置为 10000

    • embedding size:虽然现有的工作在实验中通常将其设置为 1016 ,但我们也通过在 GPU 内存限制范围内使用更大的 embedding size (如 40 )来实验其他 setting

    • 正则化权重和 dropout :正则化权重和 dropout 是减少模型过拟合的两个关键技术。它们对 CTR 预测模型的性能有很大影响。我们在一定范围内详尽地搜索最佳值。

    • batch normalization:在某些情况下,在 DNN 模型的隐层之间添加 batch normalization 可以进一步提升预测性能。

  2. 局限性和未来方向:

    • 更多数据集:CriteoAvazu 这两个数据集都是匿名的,缺乏明确的 user fielditem field 的信息。我们计划从工业规模的应用中扩展更多的数据集,使其成为一个更全面的用于 CTR 预测的 open benchmark

    • 数据拆分:为了与大多数现有的研究保持一致,我们将数据集随机拆分。然而在生产中,如果 train - test 分布有很大的不同,就有必要在预测后进行 CTR 校准。我们计划通过按时间顺序拆分数据来评估模型,并在必要时也进行 CTR 校准。

    • 效率基准:在这个版本中,我们主要通过其训练时间来评估这些模型的效率。在将来考虑测试它们的推理时间。由于实时应用中的 CTR 预测有严格的延迟限制。

    • 超参数自动调优:如何为一个给定的模型快速找到最佳的超参数仍然是一个开放的研究问题。当数据随时间演变时,模型的超参数也需要重新调优以适应新的数据分布。我们非常期待探索一些先进的 AutoML 技术从而以进一步促进未来的超参数调优过程。