概要 在刚刚结束的“百度商业AI技术创新大赛-生成式广告推荐”赛道中,我们团队有幸获得了最终排名第一的成绩 。本次比赛,我们深度依托主办方提供的 NVIDIA高性能计算资源 ,并选择 百度的ERNIE 3.0 作为我们模型的基础架构 。本文将详细分享我们团队从赛题分析、技术选型,到最终如何对ERNIE 3.0进行“魔改”并构建出一套完整、高效的生成式推荐解决方案的全过程,希望能为从事相关领域的同学和研究者带来一些启发。 赛题分析与核心挑战 本次大赛的核心任务是基于给定的用户历史行为序列,召回用户接下来最可能交互的广告集合 。这是一个经典的序列推荐(Sequential Recommendation)问题,但结合了“生成式”的新范式。官方采用 Recall@10 和 NDCG@10 作为评价指标 ,要求我们在保证效果的同时,兼顾模型的性能 。 在对赛题数据(用户序列、广告多模态特征)进行探索后,我们总结出本次比赛的四大核心挑战:

  1. 端到端生成式建模:如何构建一个强大的生成式模型,既能有效扩展参数量以增强学习能力,又能保证推理效率?
  2. 多模态特征对齐:如何将广告自带的文本、预训练向量等多模态信息与推荐任务的目标有效对齐?
  3. 复杂关联建模:如何显式地构建用户与物品(User-Item)之间,以及物品与物品(Item-Item)之间的复杂关联?
  4. 物品长尾问题:如何缓解推荐系统中固有的长尾效应,提升对非热门广告的推荐覆盖率? 面对这些挑战,我们意识到一个强大且灵活的基座模型至关重要。这正是我们选择ERNIE 3.0的初衷。 技术基石:ERNIE 3.0架构深度剖析 ERNIE 3.0是百度提出的通用语言模型,它通过融合大规模知识图谱和无监督文本数据进行联合预训练,具备强大的语言理解和生成能力。尽管我们本次比赛未使用其预训练权重 ,但其精巧的模型结构为我们提供了绝佳的改造蓝图。 ERNIE 3.0的核心特点与优势:
  5. 统一的Transformer骨架:ERNIE 3.0采用Transformer作为核心骨架,这种结构能够通过自注意力机制高效捕捉序列中的长距离依赖关系,非常适合处理用户行为序列。
  6. 强大的表示能力:其深层的网络结构赋予了它强大的特征抽取和抽象能力,能够从原始数据中学习到高阶的、富有信息的表示。
  7. 灵活性与可扩展性:ERNIE 3.0的设计允许灵活地调整网络结构,以应对不同的任务需求和数据特性,从而提供更优的解决方案。 Transformer模型的模块化设计,尤其是Encoder/Decoder Blocks,为模型的创新提供了极大的灵活性和便利。这种设计使得模型在结构上进行修改和扩展变得相对容易,是进行模型创新的理想“试验田”。然而,直接将ERNIE 3.0应用于序列推荐任务时,也面临着一些挑战。 首先,ERNIE 3.0采用双向注意力机制,这在自然语言理解任务中表现出色,但在序列推荐任务中可能导致信息泄漏问题。这是因为模型在预测未来信息时,可能会接触到未来的数据,从而影响其对当前数据的理解和预测。 其次,ERNIE 3.0原本是为语言任务设计的,需要针对推荐任务的特性进行适配。例如,如何处理ID类特征、如何定义损失函数等。这些适配工作对于直接应用ERNIE 3.0到序列推荐任务来说是一个不小的挑战。 为了解决这些问题,我们制定了围绕ERNIE 3.0的“魔改”计划。在这个计划中,我们进行了以下三项关键的改造: 第一项改造是对ERNIE 3.0的核心架构进行适配,以适应序列推荐任务的需求。具体来说,我们将ERNIE 3.0的注意力机制从双向改为单向,通过引入注意力掩码来确保模型在预测序列中的任何一个位置时,只能利用其历史信息,从而杜绝了信息泄漏的问题。 第二项改造是在模型的FFN(前馈网络)层中引入SparseMoE。SparseMoE包含一个“门控网络”和海量的“专家网络”。对于每个Token,门控网络会智能地选择激活一小部分最相关的专家进行计算。这种“稀疏激活”的模式,使得模型在训练时可以拥有巨大的参数规模以增强学习能力,但在推理时仅计算一小部分参数,从而在保证效果的同时,显著提升了推理效率。 第三项改造是创新的训练策略与负采样。为了增强模型的抗噪能力和对用户全局兴趣的理解,我们引入了一种动态的训练策略。在训练时,我们会对每个用户的行为序列进行随机删除(Mask),模拟真实场景中的记录丢失。同时,我们引入KL散度损失来约束原始序列与增强序列的输出分布,这迫使模型不依赖于特定的序列片段,而是学习更鲁棒的全局用户兴趣。这种方法还能自适应地捕捉用户的长短期偏好,有效提升了对长尾物品的推荐覆盖率。 在生成式推荐系统中,负样本的选择是至关重要的一环。传统的in-batch负采样或全局随机采样往往面临样本数量少、质量低的问题。为了解决这一问题,我们设计了一种创新的Batch内共享混合负采样策略,旨在通过增强负样本的数量和多样性来提升训练效率,并帮助模型学习到更具区分度的表示。 该策略的核心在于两个主要部分:一是Batch内共享,即将一个Batch内所有样本的负样本放入一个共享池中;二是混合采样,利用广告的多模态特征进行聚类,从每个物品的簇内挖掘用户未交互的“困难负样本”,并将其加入到共享池中。这种“量大”且“质优”的负采样策略,显著提升了InfoNCE Loss的训练效率,使模型能够学到更具区分度的表示。 为了进一步解决推荐系统中普遍存在的“嵌入坍缩”问题,即所有物品的表示向量都挤在一个小区域内,我们在主任务训练前引入了一个专门的嵌入预训练阶段。这一阶段采用了双重对比学习(Dual Contrastive Learning)的范式,从两个互补的维度对嵌入表示进行优化。用户-物品对比学习拉近用户与其交互过的物品的距离,推远其与未交互物品的距离,旨在学习用户的个性化偏好;而物品-物品对比学习则拉近内容或行为上相似的物品的距离,推远不相关物品的距离,旨在学习物品之间独立于用户的内在关联。 我们的消融实验也证明了这种预训练阶段的重要性——它为我们带来了4个点的显著提升。这个多阶段、多模块优化的有机整体,不仅改造了ERNIE 3.0的结构,还引入了KL散度正则、混合负采样策略以及对比学习预训练等模块,为最终的成绩做出了坚实的贡献。 在此,我们要特别感谢百度和NVIDIA提供的数据、算力和竞赛平台,以及团队成员的紧密协作。我们的成果充分验证了技术路线的有效性,并在比赛中取得了第一名的成绩。希望我们的探索能对社区有所裨益,也期待在未来的技术浪潮中与大家继续交流、共同进步!