AED
Ensemble Knowledge Distillation for CTR Prediction (opens new window)
0. 摘要
近年来,基于深度学习的模型在点击率(CTR)预测中得到了广泛研究,并在许多工业应用中提升了预测准确性。然而,当前的研究主要集中在构建复杂的网络架构以更好地捕捉复杂的特征交互和动态用户行为。模型复杂度的增加可能会减缓在线推理速度,并阻碍其在实时应用中的采用。相反,我们的工作目标是一种基于知识蒸馏(KD)的新模型训练策略。KD 是一种教师 - 学生学习框架,将教师模型学到的知识传递给学生模型。KD 策略不仅允许我们将学生模型简化为普通的 DNN 模型,还能在准确性上显著超越最先进的教师模型。这些优势促使我们进一步探索使用强大的教师模型集成来进行更准确的学生模型训练。我们还提出了一些新技术来促进集成 CTR 预测,包括教师门控和通过蒸馏损失进行早停。我们针对 12 个现有模型和三个工业数据集进行了全面的实验。离线和在线 A/B 测试结果均显示了基于 KD 的训练策略的有效性。
1. 引言
在诸如推荐系统、在线广告和网络搜索等应用中,点击率(CTR)是业务评估的关键因素,它衡量了用户点击(或与)推荐项目的概率。CTR 预测极为重要,因为对于拥有大量用户基础的应用,即使预测准确性的微小提升也可能带来整体收入的显著增长。例如,谷歌和微软的研究表明,AUC 或 logloss 的 1‰绝对提升在工业级 CTR 预测问题中被认为是具有实际意义的。随着深度学习近年来的成功,许多深度模型被提出并逐渐在工业中采用,例如谷歌的 Wide&Deep、华为的 DeepFM、谷歌的 DCN 和微软的 xDeepFM。这些模型在实践中展现了显著的性能提升。当前 CTR 预测的研究有两个趋势:首先,深度模型的网络架构变得越来越复杂,例如通过使用卷积网络、循环网络、注意力机制和图神经网络来更好地捕捉复杂的特征交互和动态用户行为;其次,遵循流行的 wide&deep 学习框架,许多深度模型采用两个不同子模型的集成形式来改进 CTR 预测。典型的例子包括 DeepFM、DCN、xDeepFM、AutoInt+ 等。尽管这些复杂的模型架构和集成提高了预测准确性,但它们可能会减缓模型推理速度,甚至阻碍在实时应用中的采用。如何利用强大的模型集成来实现最佳准确性,同时保持在线推理的模型复杂度,是本工作的主要课题。
与上述主要关注模型设计的研究工作不同,本文提出了一种基于知识蒸馏(KD)的模型训练策略。KD 是一种教师 - 学生学习框架,通过从教师模型中蒸馏的知识来指导学生模型的训练。随后,学生模型有望比直接训练时获得更好的准确性。尽管 KD 传统上用于模型压缩,我们并未有意限制学生模型的隐藏层和隐藏单元数量。我们展示了该训练策略不仅允许将学生模型简化为没有复杂架构的普通 DNN 模型,还能在准确性上显著超越最先进的教师模型(例如 DeepFM、DCN 和 xDeepFM)。此外,KD 的使用允许灵活地开发不同架构的教师和学生模型,而仅需学生模型用于在线服务。
这些优势促使我们进一步探索将单个模型集成作为教师,这可能会产生更准确的学生模型。我们的目标是提供一种基于 KD 的训练策略,该策略广泛适用于许多模型的集成 CTR 预测。为此,我们比较了不同的 KD 方案(软标签 vs 提示回归)和训练方案(预训练 vs 联合训练)在 CTR 预测中的应用。尽管 KD 是一项已有技术,我们做了以下扩展:1)我们提出了一个教师门控网络,支持样本级教师选择,以自适应地从多个教师中学习;2)我们提出了将蒸馏损失作为早停信号的新颖使用,这不仅减轻了过拟合,还增强了模型训练中验证数据的利用率。
我们在三个工业级数据集上全面评估了 KD 策略:两个开放基准(即 Criteo 和 Avazu)和华为应用商店的生产数据集。实验结果表明,经过 KD 训练后,学生模型不仅在准确性上优于自身,还能超越教师模型。我们的集成蒸馏实现了迄今为止最大的离线改进(在 Avazu 上相对于 DeepFM 和 DCN 的 AUC 提升超过 1%)。在线 A/B 测试显示,基于 KD 的模型在 CTR 上平均提升了 6.5%,在 eCPM(相对于收入)上提升了 8.2%。
总结来说,本工作的主要贡献如下:
- 我们的工作对 KD 在 CTR 预测任务中的有效性进行了全面评估,为 KD 的潜在工业应用提供了指南。
- 我们的工作首次尝试将 KD 应用于集成 CTR 预测。我们还提出了新颖的扩展以提高学生模型的准确性。
- 我们进行了离线评估和在线 A/B 测试。结果证实了基于 KD 的训练策略的有效性。
接下来的章节安排如下:第 2 节介绍了背景知识,第 3 节详细描述了我们的方法,第 4 节报告了实验结果,第 5 节回顾了相关工作,最后第 6 节总结了全文。
2. 背景
在本节中,我们简要介绍 CTR 预测和知识蒸馏的背景。
2.1 CTR 预测
CTR 预测的目标是预测用户点击候选项目的概率。形式上,我们将其定义为
最后,每个模型都通过最小化二元交叉熵损失进行训练:
我们注意到,当前的模型为了捕捉有效的高阶特征交互而变得越来越复杂。例如,xDeepFM 由于使用了外积和卷积,运行速度比 DeepFM 慢约 2 倍。尽管这些模型使用了两种子模型的集成来提升预测准确性,但直接集成更多模型通常过于复杂,无法应用于实时 CTR 预测问题。我们的工作提出了一种基于 KD 的训练策略,以实现强大集成模型的生产使用。
2.2 知识蒸馏
知识蒸馏(KD)是一种教师 - 学生学习框架。KD 的核心思想是通过不仅从真实标签中学习,还通过教师模型提供的指导(例如模仿教师模型的输出)来训练学生模型。KD 的早期目标是模型压缩,其中训练一个参数较少的紧凑模型以匹配大模型的准确性。KD 的成功导致了在图像分类和机器翻译中的多种应用。我们的工作首次尝试将 KD 应用于集成 CTR 预测。我们的目标不仅限于压缩模型大小,还旨在从不同的教师模型或其集成中训练一个统一的模型,以实现更准确的 CTR 预测。
3. 集成 CTR 预测
在本节中,我们描述了用于集成 CTR 预测的知识蒸馏的细节。
3.1 概述
图 1 展示了知识蒸馏的框架,它由一个教师模型和一个学生模型组成。设
其中
KD 框架允许灵活选择任何教师和学生模型架构。更重要的是,由于仅需学生模型用于在线推理,我们的基于 KD 的训练策略不会干扰模型服务的过程。在本工作中,我们有意使用普通的 DNN 网络作为学生模型,以展示 KD 的有效性。我们旨在表明,即使是一个简单的 DNN 模型,在“好”教师的指导下也能学得很好。
3.2 从单个教师蒸馏
为了实现从教师模型到学生模型的知识传递,已经提出了许多不同的 KD 方法。在本文中,我们关注两种最常见的方法:软标签和提示回归。
3.2.1 软标签
在这种方法中,学生不仅匹配真实标签(即硬标签),还匹配教师模型的概率输出(即软标签)。与硬标签相比,软标签传达了样本之间的细微差异,因此可以帮助学生模型比直接从硬标签中学习更好地泛化。
如图 1 所示,“通过软标签的 KD”方法具有以下蒸馏损失,用于惩罚教师模型和学生模型之间的差异:
其中
3.2.2 提示回归
虽然软标签为学生模型的输出提供了直接指导,但提示回归旨在指导学生模型学习表示。如图 1 所示,提示向量
其中
3.3 从多个教师蒸馏
模型集成是一种提高预测准确性的强大技术,并已成为赢得各种推荐竞赛(如 Kaggle、Netflix)的主要解决方案。然而,直接应用模型集成通常是不切实际的,因为训练和推理的模型复杂度都很高。为了实现这一点,我们将 KD 框架从单个教师扩展到多个教师。
一种直接的方法是平均各个教师模型以形成一个更强大的集成教师,从而将问题简化为从单个教师中学习。然而,由于实践中使用的模型架构和训练方案不同,并非所有教师都能在每个样本上提供同等重要的知识。一个无效的教师甚至可能误导学生的学习。为了从多个教师中获取有效的知识,我们提出了一个自适应集成蒸馏框架,如图 2 所示,以动态调整它们的贡献。形式上,我们有以下自适应蒸馏损失:
其中
教师门控网络
我们不是将
其中
3.4 训练
3.4.1 训练方案
在本工作中,我们研究了 KD 的预训练方案和联合训练方案。预训练方案分为两个阶段训练教师模型和学生模型。对于联合训练方案,教师模型和学生模型同时训练,而蒸馏损失的梯度反向传播是单向的,因此学生模型从教师模型中学习,而不是相反。联合训练方案比两阶段的预训练方案更快,但需要更多的 GPU 内存。我们还在第 4.2 节中通过实验比较了预训练和联合训练方案的性能。对于集成蒸馏的情况,我们主要关注预训练方案,因为联合训练方案需要将多个教师模型加载到 GPU 内存中。我们选择了三个最先进的模型(即 DeepFM、DCN、xDeepFM)作为教师模型,并通过最小化公式 6 中的损失来训练每个模型。在根据公式 7 训练学生模型时,教师模型可以为学生模型提供更好的指导。教师门控网络与学生模型一起训练,以实现样本级教师选择。
3.4.2 通过蒸馏损失进行早停
早停是一种常见的减少过拟合的做法。在训练教师模型时,我们使用留出的验证集来监控指标(如 AUC)以实现早停。在训练学生模型时,我们提出使用教师模型的蒸馏损失作为早停信号。这是因为教师模型已经通过在验证集上的早停减少了过拟合,而学生模型在模仿教师模型时可以继承这种能力。这消除了保留验证集的需要,并通过使用验证集(通常是最新的数据)来丰富训练数据,帮助学生模型更好地泛化。
4. 实验
在本节中,我们报告了实验结果,以评估基于 KD 的训练策略在 CTR 预测中的有效性。
4.1 实验设置
4.1.1 数据集
我们在实验中使用三个真实世界的数据集:Criteo、Avazu 和我们的生产数据集。表 1 总结了这些数据集的统计信息。
- Criteo:该数据集包含一周内的广告点击日志。它由 26 个类别特征字段和 13 个数值特征字段组成。根据谷歌的 DCN 工作,我们随机将最后两天的数据拆分为验证集和测试集,其余数据用于训练。
- Avazu:该数据集包含 10 天的点击日志。它有 22 个类别特征字段,如 app id、app category、device id 等。根据最近的 AutoInt 工作,我们将数据随机拆分为 8:1:1 的比例,分别用于训练、验证和测试。
- Production:我们从华为应用商店的用户点击日志中收集了该数据集,包含 8 天的数据。它有 29 个类别特征字段,如 app id、category、tags、city、recent clicks 等。根据我们的生产实践,我们按顺序拆分数据,前 7 天用于训练,最后一天均等拆分为验证集和测试集。
对于两个开放数据集,我们按照 [24] 中的工作对数据进行预处理。首先,我们将出现次数少于某个阈值的特征替换为默认的“
4.1.2 基线模型
为了比较性能,我们选择了总共 12 个代表性模型,包括 LR、FM、FFM、DNN、Wide&Deep、DeepFM、DCN、xDeepFM、PIN、FiBiNet、AutoInt+ 和 FGCNN。尽管我们无法列举所有现有模型,但与之前的研究相比,我们进行了相对全面的比较。为了测试统计显著性,在第 4.5 节中,我们通过更改随机种子重复实验 5 次,并进行双尾配对 t 检验。
4.1.3 实现细节
所有模型均在 PyTorch 中实现。我们使用 Adam 进行优化,并将批量大小设置为 2000。学习率设置为 0.001。类别特征的嵌入维度分别设置为 20、40 和 40,分别对应于 Criteo、Avazu 和 Production 数据集。我们使用网格搜索来调整其他超参数。具体来说,我们在特征嵌入上应用
4.2 不同 KD 方案的性能
在本节中,我们旨在研究哪种 KD 方案在 CTR 预测中表现最佳。在这里,我们将候选 KD 方案定义为 KD 方法(软标签 vs 提示回归)和训练方法(预训练 vs 联合训练)的组合。为了仅研究 KD 方案的效果,在本实验中,我们将学生 DNN 模型的大小固定为
表 2 显示了不同 KD 方案的结果。特别是,第一行表示仅学生模型的性能,即直接训练 DNN。我们可以从结果中得出以下观察:1)所有通过不同 KD 方案训练的学生模型的性能均显著优于仅学生模型的 DNN。2)“软标签 + 预训练”的 KD 方案在所有候选 KD 方案中表现最佳。然而,这些方案之间的差异较小,使得选择适当的 KD 方案具有灵活性。在实践中,联合训练方案需要将教师模型和学生模型都加载到 GPU 内存中,这阻碍了其可扩展性,尤其是在有多个教师模型可用的情况下。因此,我们在接下来的实验中主要关注“软标签 + 预训练”方案。
4.3 不同教师和学生模型的性能
在本实验中,我们旨在评估应用不同教师模型和学生模型时可以达到的性能。特别是,我们选择了五个教师模型,包括 DNN、DeepFM、DCN、xDeepFM 和 3T(DeepFM、DCN 和 xDeepFM 的集成)。我们首先调整每个教师模型以获得其最佳性能,并在表 3 中的“w/o KD”行报告教师模型的结果。3T 的结果是三个模型的平均值。然后,我们探索不同的学生模型(即 DNN、DeepFM、DCN、xDeepFM),并在总共 20 个设置(5 个教师模型和 4 个学生模型)中进行 KD 实验。我们固定教师模型并调整学生模型。
实验结果如表 3 中的第 2~5 行所示。我们观察到:1)所有通过 KD 训练的学生模型的性能甚至优于仅使用教师模型的性能。最后一行显示了相对于教师模型性能的最大改进(以‰为单位的绝对值)。这一发现(即学生模型超越教师模型)令人惊讶,因为在传统的 KD 研究中很少报道,其中学生模型通常被压缩为小尺寸以进行模型压缩。我们将在第 4.7 节中进一步评估学生模型大小对性能的影响。2)通过我们的 KD 策略,即使是普通的 DNN 模型也能学得很好,超越最先进的复杂教师模型。这证实了 DNN 的良好模型容量以及 KD 在指导学习方面的有效性。使用 DeepFM 或 DCN 作为学生模型甚至可以获得更好的性能。这表明可以进一步探索更好的学生架构以最大化 KD 的收益。但我们主要关注 DNN 模型以展示 KD 的优越性,并将最优学生模型架构的设计留给未来的研究。3)与从单个教师中进行 KD 的情况相比,使用 3T 作为教师模型可以大幅提高性能。总的来说,3T→DNN 在 Avazu 和 Criteo 上分别实现了相对于单个教师模型 12.5‰和 5‰的 AUC 绝对改进。这些令人鼓舞的结果促使我们进一步探索集成蒸馏。
4.4 不同教师集成的性能
在确认使用 3T 作为教师集成的优越性后,我们旨在评估使用不同数量和不同类型的教师集成时的详细性能。如表 4 所示,我们实验了从 1T 到 6T 的不同数量的教师,并报告了教师集成及其学生模型的结果。对于 1T 的情况,结果对应于使用 DCN 和 xDeepFM 作为单一教师,分别在 Avazu 和 Criteo 上表现最佳。对于多个教师的情况(3T 和 6T),我们研究了两种训练方法(记为 M 和 D)以生成教师。特别是,3T(M) 表示“DeepFM + DCN + xDeepFM”的集成,具有不同的模型架构。6T(M) 通过不同的随机初始化种子将 3T(M) 翻倍。3T(D) 和 6T(D) 表示通过不同的训练和验证集数据分区训练的 3 个或 6 个模型(DCN 用于 Avazu,xDeepFM 用于 Criteo)的集成,而测试集保持不变。我们再次观察到,通过不同教师集成训练的学生模型的性能始终优于其教师模型。同时,应用更多的教师(1T→3T→6T)进行集成蒸馏可以提高学生模型的性能。但增加的幅度逐渐减小。此外,通过不同数据分区训练的教师集成表现更好(即 D 优于 M),从而产生更好的学生模型。这在一定程度上是因为我们为 3T(D) 和 6T(D) 设置选择了表现最佳的单教师模型。
4.5 与最先进模型的比较
我们全面比较了通过 KD 训练的 DNN 模型与最先进模型(共 12 个模型)的性能。表 5 的上半部分显示了所有比较模型在三个数据集上的整体性能。特别是,下划线数字表示最佳基线模型,粗体数字是所有模型中的最佳结果。表中的 1T 和 3T 表示表 4 中提到的表现最佳的教师模型。为了评估 KD 在代表性模型上的效果,我们没有重现所有基线模型。相反,我们直接使用其论文中报告的结果比较了一些最近的深度模型,这些结果如表 5 的下半部分所示。为了公平起见,我们仅显示了相对于 DeepFM 的性能改进。
我们从表中总结出以下观察结果:1)深度模型通常优于浅层模型(如 LR、FM 和 FFM),这表明深度模型能够更好地捕捉复杂的特征交互。2)通过 KD 训练的模型(1T 和 3T)在所有三个数据集上均显著优于所有基线模型。具体来说,3T 在三个数据集上分别实现了 10.5‰、3.7‰和 3.2‰的 AUC 绝对改进。3)与 1T 相比,3T 在所有数据集上进一步提升了性能。这证实了集成蒸馏的价值,它通过不同教师的多样性使学生模型更好地泛化。4)与一些最近提出的深度模型相比,3T 的最大改进也证实了 KD 的有效性,尤其是考虑到我们的学生模型是一个普通的 DNN。
最后,我们强调,通过 KD 训练的学生模型甚至可以超越集成教师模型,这是一个令人惊讶的发现。这值得我们在未来进一步研究 KD 机制,以帮助减少过拟合。
4.6 消融实验
4.6.1 教师门控
我们通过比较使用或不使用教师门控(即平均)的性能来评估教师门控的有效性,实验在 Avazu 数据集上使用 3T 和 6T 进行。为了展示门控从多样化教师中蒸馏有效知识的能力,在本实验中,我们将 6T 设置为 DeepFM、xDeepFM、DCN、DNN、Wide&Deep 和 AutoInt+ 的集成,3T 设置为 DeepFM、xDeepFM 和 DCN 的集成。从图 3(a) 的结果中可以看出,学生模型在使用教师门控时学得更好,这表明样本级教师选择的有用性。值得注意的是,在没有门控的情况下,6T 的性能比 3T 差,因为 6T 包含了更多多样化的模型。教师门控帮助自适应地调整教师的权重,从而使 6T 的性能大幅提升。
4.6.2 通过蒸馏损失进行早停
我们比较了两种早停方式(使用验证集 vs 使用 KD 损失)。图 3(b) 中的结果表明,教师模型和学生模型之间的 KD 损失是一个良好的早停监控信号。它允许充分利用验证数据(通常是最新的)来训练学生模型,从而获得更好的性能。
4.7 学生模型大小的影响
DNN 模型的大小(即隐藏层和隐藏单元的数量)通常决定了其模型容量。为了研究学生模型大小的影响,我们首先调整教师模型并保持其固定(与第 4.3 节中的设置相同)。然后,我们进行了两组实验。在第一组实验中,我们将每个学生模型设置为其在上一步调优的最佳 DNN 大小(记为 DNN)。在第二组实验中,我们重新调整每个学生 DNN 模型的大小到一个更大的尺寸(记为 DNN+)。表 6 的上半部分详细描述了模型的大小,下半部分显示了相应的结果。例如,单独的 DNN 模型在 Avazu 上以 300x3 的大小(每个隐藏层 300 个单元,共 3 层)获得最佳性能。然而,当使用 DeepFM 作为教师进行 KD 训练时,500x5 的 DNN+ 性能优于 300x3 的 DNN。我们可以从表中观察到其他实验中的类似结果。这些结果表明,我们的目标并不直接是模型压缩,因为更大的学生模型往往会获得更好的性能。
4.8 A/B 测试
我们在华为应用商店的 App 推荐系统中进行了在线 A/B 测试。该系统拥有数亿的日活跃用户,每天生成数千亿的用户反馈事件,如浏览、点击和下载应用。在在线服务系统中,首先在匹配阶段选择数百个候选应用,然后通过排名模型(如 DCN)生成最终的推荐列表。在 A/B 测试中,生产中的基线模型是 DCN 的扩展版本,展示了其优于其他竞争模型的能力。由于模型每天都会重新训练,我们选择了最近两个旧版本的模型作为集成教师,以提高效率,并在最近 15 天的最新数据上蒸馏出相同架构的学生模型用于在线服务。A/B 测试进行了一周,我们随机选择 5% 的在线流量作为对照组和实验组。平均而言,我们的模型在整体 DLR(应用下载率,定义为#下载/#展示)上提升了 6.5%,在 eCPM(每千次展示的预期成本)上提升了 8.2%。这是一个显著的改进,展示了我们的 KD 方法的有效性。
5. 相关工作
5.1 CTR 预测
自从 DNN 在 YouTube 推荐中的成功应用以来,深度学习在 CTR 预测中得到了广泛研究。一些工作研究了 DNN 与传统浅层模型的集成(如 Wide&Deep、DeepFM)。一些模型旨在显式捕捉不同阶数的特征交互(如 DCN、xDeepFM)。一些模型探索了卷积网络(如 FGCNN)、循环网络(如 DSIN)、注意力网络(如 AutoInt、FiBiNET)和图神经网络(如 FiGNN)来学习高阶特征交互。其他研究则专注于在 CTR 预测中建模用户兴趣的演变(如 DIN)。我们的工作展示了 KD 在多个代表性模型中的有效性,但该框架广泛适用于其他模型,因为它们也可以用作教师模型。
尽管模型集成是提高预测准确性的强大技术,但在工业中,这种集成的高复杂性(例如 Netflix 奖中的 100 多个模型集成)阻碍了其应用。为了限制在线部署的模型复杂性,Facebook、谷歌和微软的大多数工业研究都专注于仅集成两个模型。相反,我们的工作通过集成蒸馏解决了这一问题,并提供了一个简化但同样强大的学生模型用于在线推理。
5.2 知识蒸馏
从教师模型中蒸馏的知识以不同的形式存在。除了我们使用的软标签和提示回归外,一些工作还通过层间流、跨样本相似性、注意力机制等进一步探索了知识传递。最近的一些工作致力于集成蒸馏,促进了图像分类和机器翻译等任务。对于推荐系统,Chen 等人提出了一种对抗蒸馏方法,用于从外部知识库中学习协同过滤。Xu 等人提出了一种 KD 方法,用于将特权特征从排序任务传递到匹配任务。Liu 等人利用 KD 通过均匀数据进行推荐去偏。Zhang 等人研究了基于路径和基于嵌入的推荐模型之间的相互学习。我们的工作部分受到这些研究的启发,并首次尝试将 KD 应用于集成 CTR 预测。
6. 结论
模型集成是提高预测准确性的强大技术。在本文中,我们尝试将 KD 应用于集成 CTR 预测。基于 KD 的训练策略使得强大的教师集成模型能够在生产中应用,并显著提高了准确性。令人惊讶的是,我们展示了通过 KD 训练的普通 DNN 模型甚至可以超越集成教师模型。我们的主要贡献包括对基于 KD 的训练策略的全面评估、用于样本级教师选择的教师门控,以及通过 KD 损失进行早停以提高验证数据的利用率。离线和在线 A/B 测试结果均展示了我们方法的有效性。我们希望这些令人鼓舞的结果能够吸引更多的研究努力,探索用于 CTR 预测的训练策略。
7. 致谢
本文的工作部分得到了广东省重点领域研发计划(2018B010109001)和国家自然科学基金(U1811462)的支持。