LEMUR: Large scale End-to-end MUltimodal Recommendation
TL;DR 精炼摘要
本文提出了LEMUR,这是一个首次从原始数据进行端到端训练的大规模多模态推荐系统,旨在解决传统推荐系统的冷启动和泛化问题。LEMUR通过联合优化多模态和推荐组件,动态适配新数据,同时利用内存库机制降低计算成本。在实际应用中,LEMUR在抖音的效果显著提升。
摘要
Traditional ID-based recommender systems often struggle with cold-start and generalization challenges. Multimodal recommendation systems, which leverage textual and visual data, offer a promising solution to mitigate these issues. However, existing industrial approaches typically adopt a two-stage training paradigm: first pretraining a multimodal model, then applying its frozen representations to train the recommendation model. This decoupled framework suffers from misalignment between multimodal learning and recommendation objectives, as well as an inability to adapt dynamically to new data. To address these limitations, we propose LEMUR, the first large-scale multimodal recommender system trained end-to-end from raw data. By jointly optimizing both the multimodal and recommendation components, LEMUR ensures tighter alignment with downstream objectives while enabling real-time parameter updates. Constructing multimodal sequential representations from user history often entails prohibitively high computational costs. To alleviate this bottleneck, we propose a novel memory bank mechanism that incrementally accumulates historical multimodal representations throughout the training process. After one month of deployment in Douyin Search, LEMUR has led to a 0.843% reduction in query change rate decay and a 0.81% improvement in QAUC. Additionally, LEMUR has shown significant gains across key offline metrics for Douyin Advertisement. Our results validate the superiority of end-to-end multimodal recommendation in real-world industrial scenarios.
思维导图
论文精读
中文精读
1. 论文基本信息
1.1. 标题
LEMUR: Large scale End-to-end MUltimodal Recommendation (LEMUR: 大规模端到端多模态推荐)
1.2. 作者
- Xintian Han, Honggang Chen, Quan Lin, Jingyue Gao, Xiangyuan Ren, Lifei Zhu, Zhisheng Ye, Shikang Wu, Xionghang Xie, Xiaochu Gan, Bingzheng Wei, Peng Xu, Zhe Wang, Yuchao Zheng, Jingjian Lin, Di Wu, Junfeng Ge
- 隶属机构:BinaryDance (字节跳动), 北京大学 (Peking University)
1.3. 发表期刊/会议
未明确指明具体期刊或会议,但根据 ACM Reference Format 提示,应为某 ACM 会议。鉴于其研究内容和字节跳动的背景,很可能是在顶级推荐系统或数据挖掘会议(如 RecSys, KDD, WWW, SIGIR)上发表或作为技术报告发布。
1.4. 发表年份
2025年
1.5. 摘要
传统的基于 ID 的推荐系统在冷启动 (cold-start) 和泛化 (generalization) 能力方面存在挑战。多模态推荐系统 (multimodal recommendation systems) 通过利用文本和视觉数据,为解决这些问题提供了有前景的方案。然而,现有的工业方法通常采用两阶段训练范式:首先预训练一个多模态模型,然后将其冻结的表示 (frozen representations) 应用于训练推荐模型。这种解耦的框架存在多模态学习与推荐目标之间的不一致性 (misalignment),以及无法动态适应新数据的问题。为了解决这些限制,本文提出了 LEMUR,这是第一个从原始数据 (raw data) 进行端到端 (end-to-end) 训练的大规模多模态推荐系统。通过联合优化多模态和推荐组件,LEMUR 确保了与下游目标更紧密的对齐,同时支持实时参数更新。从用户历史中构建多模态序列表示 (multimodal sequential representations) 通常会导致过高的计算成本。为了缓解这一瓶颈,本文提出了一种新颖的内存库 (memory bank) 机制,在整个训练过程中增量地累积历史多模态表示。在抖音搜索 (Douyin Search) 部署一个月后,LEMUR 使得查询变化率衰减 (query change rate decay) 降低了 0.843%,QAUC 提高了 0.81%。此外,LEMUR 在抖音广告 (Douyin Advertisement) 的关键离线指标上也显示出显著提升。本文结果验证了端到端多模态推荐在真实工业场景中的优越性。
1.6. 原文链接
- 原文链接: https://arxiv.org/abs/2511.10962
- PDF 链接: https://arxiv.org/pdf/2511.10962v2.pdf
- 发布状态: 预印本 (arXiv preprint)
2. 整体概括
2.1. 研究背景与动机
- 核心问题: 传统基于 ID 的推荐系统 (ID-based recommender systems) 在处理“冷启动”用户或物品时效果不佳,且泛化能力有限。例如,新用户没有历史交互数据,新商品没有被展示过,模型无法仅凭 ID 进行有效推荐。
- 重要性: 随着推荐系统在现代数字生活中的普及,解决冷启动和泛化问题对于提升用户体验、提高平台效率至关重要,尤其是在短视频平台等内容快速更新的场景。
- 现有挑战/空白 (Gap):
- 两阶段训练范式 (Two-stage training paradigm) 的局限性: 现有工业多模态推荐系统通常采用两阶段方法:
- 第一阶段:预训练一个多模态模型来生成物品的文本、视觉嵌入 (embedding)。
- 第二阶段:将这些冻结的表示 (frozen representations) 作为特征输入推荐模型进行训练。
- 目标不一致 (Misalignment): 这种两阶段方法导致多模态学习目标(通常是通用的跨模态匹配或生成任务)与下游推荐目标(如点击率预测、转化率预测)之间存在不一致性。预训练的多模态模型可能并未完全捕获推荐任务所需的细粒度信息。
- 数据适应性差 (Inability to adapt dynamically): 预训练模型一旦冻结,就无法根据推荐模型的实时反馈和新数据进行动态调整,导致模型相关性随时间推移而下降 (staleness)。
- 计算成本高昂 (Prohibitively high computational costs): 在处理用户行为序列时,为序列中的每个历史物品实时生成多模态表示会带来巨大的计算负担,尤其是在大规模工业系统中。
- 传输瓶颈 (Transmission bottlenecks): 当多模态嵌入作为在线服务应用到长序列并传输时,会产生严重的传输瓶颈。
- 两阶段训练范式 (Two-stage training paradigm) 的局限性: 现有工业多模态推荐系统通常采用两阶段方法:
- 切入点/创新思路: 本文旨在通过构建一个端到端的大规模多模态推荐系统
LEMUR来解决上述问题。该系统将多模态特征学习和推荐排名目标进行联合优化,并引入创新机制来提高效率,使其在真实工业环境中可行。
2.2. 核心贡献/主要发现
- 核心贡献:
- 首个大规模端到端多模态推荐系统: 提出了
LEMUR,首次实现了在抖音短视频平台部署的端到端多模态推荐系统,联合学习多模态表示和排名目标,克服了传统两阶段方法的局限性。 - 新颖的内存库 (Memory Bank) 机制: 提出了一种内存库机制,用于高效构建多模态序列表示,显著节省了计算成本,解决了多模态序列建模的计算瓶颈。
- 会话掩码查询-文档对比损失 (Session-Masked Query-to-Document Contrastive Loss, SQDC): 引入
SQDC损失,以对齐查询 (query) 和文档 (document) 的表示,并利用会话级掩码 (session-level mask) 稳定训练。 - 效率优化技术: 开发了去重 (deduplication) 和高效采样 (efficient sampling) 技术,进一步提高了训练效率,使其能够在大规模工业场景中部署。
- 首个大规模端到端多模态推荐系统: 提出了
- 关键结论/发现:
- 端到端训练的优越性:
LEMUR在抖音搜索中部署一个月后,实现了查询变化率 (query change rate) 降低 0.843%,QAUC 提升 0.81%,证明了端到端多模态推荐在真实世界工业场景中的显著优越性。 - 对齐与动态适应: 联合优化确保了多模态学习与推荐目标更紧密的对齐,并允许模型参数实时更新,动态适应新数据。
- 内存库的有效性: 内存库机制成功缓解了多模态序列表示构建的计算瓶颈,使其在大规模系统中的应用成为可能。
- 各组件的有效性: 消融实验 (ablation studies) 验证了联合训练、内存库及其内部组件(如长短序列、余弦相似度)以及
SQDC损失的有效性。
- 端到端训练的优越性:
3. 预备知识与相关工作
3.1. 基础概念
- 推荐系统 (Recommender Systems): 旨在预测用户对物品的偏好,并向用户推荐他们可能感兴趣的物品。广泛应用于电商、社交媒体、内容平台等领域。
- ID-based Recommender Systems (基于 ID 的推荐系统): 传统推荐系统主要依赖于用户 ID、物品 ID 等离散标识符作为特征。这些 ID 通常通过嵌入层 (embedding layer) 映射为低维向量。
- 冷启动问题 (Cold-start Problem): 当新用户或新物品加入系统时,由于缺乏历史交互数据,基于 ID 的推荐系统难以生成准确推荐。
- 泛化能力 (Generalization): 模型对未见过的数据或在训练数据中稀疏出现的模式进行准确预测的能力。
- 多模态推荐系统 (Multimodal Recommendation Systems): 结合多种模态(如文本、图像、视频、音频)信息进行推荐的系统,旨在解决冷启动和泛化问题,提供更丰富和语义化的物品理解。
- 表征学习 (Representation Learning): 学习数据的一种转换,使得数据在新的表示空间中更容易被机器学习模型处理,同时保留或强调重要的信息。
- 端到端训练 (End-to-end Training): 指一个机器学习系统从原始输入到最终输出的整个流程作为一个单一的模型进行训练和优化,所有组件的参数都是联合学习的。
- 两阶段训练 (Two-stage Training): 一种常见的训练范式,首先独立训练一个模型(如预训练多模态编码器),然后将其输出作为特征输入到另一个下游模型(如推荐模型)进行训练,通常第一个模型的参数在第二阶段是冻结的。
- 点击率 (Click-Through Rate, CTR): 用户看到推荐物品后点击该物品的概率。在推荐系统中常用于衡量推荐效果。
- Transformer: 一种基于自注意力 (self-attention) 机制的神经网络架构,在自然语言处理和计算机视觉领域取得了巨大成功。
- 对比学习 (Contrastive Learning): 一种自监督学习方法,通过将相似样本(正样本对)的表示拉近,不相似样本(负样本对)的表示推远来学习有效的特征表示。
3.2. 前人工作
论文中提及了以下几个方向的相关工作,这些是理解 LEMUR 创新点的基础:
-
大型推荐模型 (Large Recommendation Models):
- 背景知识: 随着硬件发展和工程创新(如
Flash Attention[8,9,52]、Zero Optimization[49]、Tensor/Pipeline Parallelism[53]),推荐系统正在进入大模型时代。这包括增加参数量、计算复杂度、扩展用户行为序列长度以及探索生成式推荐范式。 - 相关工作:
Rankmixer[77] 是一种高 MFU (Model FLOPs Utilization) 推荐模型,利用token mixing和per-token FFN策略高效捕获异构特征交互。LONGER[3] 是一种长序列优化 Transformer 结构,用于 GPU 高效推荐器。这些模型关注如何在大规模数据和模型参数下优化推荐效果和效率。 - 与本文关联:
LEMUR在此基础上进一步,将多模态编码器的训练与排名模型整合,将计算负载加倍,但通过端到端训练获得更高性能。RankMixer和LONGER在LEMUR中被用作基线模型和核心组件。
- 背景知识: 随着硬件发展和工程创新(如
-
多模态模型 (Multimodal Models):
- 背景知识: 早期多模态模型侧重于文本和视觉模态的融合。
Transformer架构在文本(如Deberta[21,22],BERT[12],GPT[47])和视觉(如CNN[20,28,30],Vision Transformer[13,18])模态中都取得了突破。 - 跨模态融合模型:
ViLT[26],ViLBert[39],CLIP[48],ALBEF[32],BLIP[31] 等模型旨在合并视觉和语言模态,学习统一的表示。CLIP通过对比学习对齐图像和文本的表示,在许多跨模态任务中表现出色。 - 与本文关联:
LEMUR借鉴了CLIP的思想,引入对比损失SQDC来对齐查询和文档的表示,但与CLIP的主要区别在于LEMUR是端到端训练的,并且SQDC针对推荐任务进行了优化。
- 背景知识: 早期多模态模型侧重于文本和视觉模态的融合。
-
多模态推荐 (Multimodal Recommendation):
- 背景知识: 许多现有方法采用两阶段流水线:离线预训练多模态编码器,然后将冻结的特征输入推荐模型。
- 相关工作:
Deng et al.[11] 提出了微调q-former模块,同时固定视觉和语言编码器。Ge et al.[16] 只更新编码器的顶层。TIGER[50] 和EM[11] 也采用两阶段框架。一些工作将多模态内容转换为离散的token ID[33,40,50],但可能存在信息损失。Deng et al.[11] 还引入了Content-ID Contrastive (CIC) learning loss来对齐冻结的多模态表示和 ID 嵌入。 - 与本文关联:
LEMUR的核心创新在于打破了这种两阶段范式,实现了端到端训练。它强调了CIC loss在联合训练框架下可能不再带来额外收益,并指出现有方法在计算成本和在线部署上的局限性。LEMUR提出的内存库机制和SQDC损失直接针对这些痛点。
-
内存机制 (Memory Mechanisms):
- 背景知识: 内存机制在机器学习中用于存储和检索信息以供后续使用,特别是在序列处理和对比学习中。
- 相关工作:
He et al.[19] 引入内存库存储过去的键表示,用于动量对比学习 (momentum contrastive learning)。Key-Value Memory Networks[43] 使用记忆结构存储键值对作为知识库。Lu et al.[38] 将内存网络机制应用于推荐系统。 - 与本文关联:
LEMUR采用了新颖的内存库机制来高效存储和检索历史文档的多模态表示,从而解决了多模态序列建模的计算成本问题。
3.3. 技术演进与差异化分析
- 技术演进: 推荐系统从早期的基于协同过滤和矩阵分解,发展到基于 ID 的深度神经网络,再到引入多模态信息以增强内容理解和解决冷启动问题。多模态推荐又从最初的两阶段、冻结特征模式,逐步向更深度的模态融合和更紧密的端到端优化演进。
LEMUR正是这一演进路径上的重要里程碑,它在大规模工业场景中实现了真正的端到端联合训练。 - 差异化分析:
- 与两阶段方法的区别:
LEMUR的核心区别在于其端到端的训练范式。传统的两阶段方法存在多模态学习和推荐目标不一致的问题,且多模态模型参数一旦冻结就无法动态更新。LEMUR通过联合优化解决了这些问题,实现了更紧密的对齐和实时适应性。 - 与现有端到端尝试的区别: 尽管
Chen et al.[6] 曾尝试联合训练 CNN 与排名模型,但其方法未广泛部署,且不兼容在线训练流水线,也未充分解决多模态序列建模问题。LEMUR通过引入内存库、去重和采样等创新技术,克服了大规模多模态序列建模的计算障碍,使其成为首个在大规模工业平台成功部署的端到端方案。 - 与
CIC loss的区别:Deng et al.[11] 提出的CIC loss旨在对齐冻结的多模态表示与 ID 嵌入。LEMUR的实验表明,在多模态编码器与排名模型联合更新的情况下,CIC loss未带来额外性能提升,这进一步证明了端到端联合训练的优越性,即模型本身就能学到更好的对齐。 - 内存库的独特应用: 尽管内存机制在前人工作中有所应用,但
LEMUR将其创造性地用于存储和检索用户历史序列中的多模态表示,显著降低了多模态序列建模的计算开销,使其在大规模场景下可行。
- 与两阶段方法的区别:
4. 方法论
4.1. 方法原理
LEMUR 的核心思想是实现多模态特征学习与推荐排名目标的端到端联合优化。这与传统先预训练多模态模型再使用其冻结特征的两阶段方法形成鲜明对比。LEMUR 通过联合训练,确保多模态特征能够直接针对下游推荐任务进行优化,从而解决多模态表示与推荐目标不一致的问题,并实现参数的实时更新。
为了克服端到端训练带来的巨大计算挑战,尤其是在处理用户历史序列的多模态信息时,LEMUR 引入了内存库 (Memory Bank) 机制来高效地存储和检索历史多模态表示,避免重复计算。同时,SQDC (Session-masked Query-to-Document Contrastive) 损失被设计用于在训练过程中对齐查询和文档的表示,进一步提升多模态特征的质量。
整个系统的架构如下图(原文 Figure 1)所示:
该图像是一个展示 LEMUR 系统的结构图,包含多模态建模和查询文档对比损失(SQDC)。左侧部分阐述了如何进行排名与损失计算,包括多模态模型和内存库的连接;右侧则详细说明了 SQDC 的选取正样本过程及其矩阵表示。图示强调该系统在处理多模态数据和实时更新中的优势。
图 1: LEMUR 的整体框架
从图 1 可以看出,LEMUR 主要由以下几个关键组件构成:
- 多模态编码器 (Multimodal Encoder): 使用双向
Transformer分别编码查询和文档的原始文本特征,与排名模型联合训练。 - SQDC (Session-masked Query-to-Document Contrastive) 模块: 在批次内 (in-batch) 通过对比学习对齐查询和文档的表示,并利用会话级掩码稳定训练。
- 内存库 (Memory Bank): 存储历史文档的多模态表示,避免在构建用户序列特征时重复计算。
- 多模态序列建模 (Multimodal Sequential Modeling): 利用内存库中的历史文档表示,通过一个修改过的
Decoder和相似度模块构建用户多模态序列特征。 - RankMixer: 接收多模态表示和其他特征,生成最终的点击率预估
logit。
4.2. 核心方法详解
4.2.1. 问题定义 (Problem Formulation)
LEMUR 的目标是预测抖音搜索中的点击率 (CTR)。CTR 被定义为用户在提交查询后观看推荐视频超过五秒的概率。模型通过二元交叉熵损失 (binary cross-entropy loss) 进行优化。
给定输入 和标签 (表示是否点击)的数据集 ,模型的估计 CTR 为 ,其中 是参数为 的模型。二元交叉熵损失函数定义如下:
其中:
- :训练数据集。
- :数据集中样本的数量。
- : 输入特征,包括查询特征、用户特征、文档特征、交叉特征和用户搜索历史特征。
- : 真实标签,表示用户是否点击(1为点击,0为未点击)。
- : 模型预测的点击概率。
4.2.2. 原始特征建模 (Raw Features Modeling)
对于每个文档 ,LEMUR 使用一对双向 Transformer [55] 分别编码原始查询特征 和原始文档特征 。这与以往使用冻结表示的工作不同,这里的 Transformer 是与排名模型联合训练的。
编码过程可以表示为:
其中:
-
: 第 个查询的原始特征(例如文本)。
-
: 第 个文档的原始特征(例如文本、视觉内容相关的文本描述)。
-
: 一个双向
Transformer编码器。 -
: 编码后的查询表示(嵌入向量)。
-
: 编码后的文档表示(嵌入向量)。
在输入
Transformer时,一个特殊的[CLS]令牌被插入到查询和文档序列的开头。文档输入中,[SEP]令牌用于分隔不同的特征(如标题、OCR 结果、ASR 文本、封面图像 OCR 文本)。除了标准的位置嵌入 (position embeddings) 外,LEMUR还引入了类型嵌入 (type embeddings) 来区分不同的特征类别。最终的查询和文档表示是从[CLS]令牌对应的Transformer输出中提取的。这些查询和文档表示随后与其他特征一起传递给RankMixer模型,以生成最终的logit。
4.2.3. SQDC (Session-masked Query-to-Document Contrastive)
为了对齐查询和文档的表示,LEMUR 引入了一个额外的批次内会话掩码查询-文档对比损失 SQDC。
在一个大小为 的批次中,表示第 个查询的嵌入为 ,第 个文档的嵌入为 。对于一个正样本 (即用户实际点击的查询-文档对),对比损失旨在使 更接近 ,而不是批次内的其他文档 (其中 )。
查询和文档嵌入之间的距离通过余弦相似度 (cosine similarity) 来衡量: 其中:
-
: 查询嵌入向量。
-
: 文档嵌入向量。
-
: 向量 和 的点积。
-
, : 向量 和 的 L2 范数(模长)。
-
余弦相似度值范围在 -1 到 1 之间,值越大表示两个向量方向越接近,即语义越相似。
初始的对比损失定义如下: 其中:
-
: 表示只对正样本(即用户点击的查询-文档对)计算损失。
-
: 批次大小。
-
: 温度超参数 (temperature hyperparameter)。温度参数控制
softmax函数的锐度,较高的 会使相似度分数之间的差异更尖锐,使得模型更关注正样本对,而较低的 会使分布更平滑。在同一个批次中,由于可能包含来自相同会话 (session) 的多个样本(即属于同一个查询),为了稳定训练,
LEMUR引入了会话级样本掩码 (session-level sample masks)。这个掩码在计算对比损失时,会屏蔽掉来自同一个查询的样本作为负样本。 设掩码为 ,QID(query identifier) 为查询标识符。当 且 时, 通常为 0,即来自同一查询的负样本被掩盖。SQDC损失定义如下: 其中: -
: 会话级掩码。如果 和 来自同一会话(即 ),则 可能为 0 或一个很小的值,以避免将来自同一查询但不是正样本的文档视为强负样本。如果 和 来自不同会话,则 。
-
其余符号含义同上。
SQDC的直观解释在图 1 的右侧面板中,黄色区域表示会话级掩码。例如, 属于同一个查询, 属于另一个查询。这种会话级掩码有助于稳定训练,因为来自同一查询的用户行为高度相关,避免了将语义上可能相似但并非正样本的文档错误地推开。
4.2.4. 内存库 (Memory Bank)
在推荐系统中,除了目标文档的表示外,构建用户历史文档的多模态序列表示也至关重要。然而,实时地为每个历史文档计算多模态表示并将其与推荐模型联合训练,会带来极其高昂的计算成本。例如,论文指出,对于一个批次大小为 2048 的模型,基础模型消耗 1.6 TFLOPS,而文档 Transformer 需要 2.3 TFLOPS。如果考虑 1024 或更长的序列长度,计算成本将增加千倍。
为了缓解这一计算瓶颈,LEMUR 提出了一个新颖的内存库 (Memory Bank) 策略(见图 1 中的 memory bank 模块)。
其工作原理如下:
-
存储目标文档表示: 在每个训练批次中,当前正在处理的目标文档 (target document) 的多模态表示 会被计算并存储到内存库中。
-
检索历史文档表示: 对于用户历史序列中的任何文档,不再实时通过
Transformer重新计算其多模态表示,而是根据其文档 ID 从内存库中检索其对应的已存储的多模态表示。 -
高效序列构建: 通过这种方式,可以高效地形成用户历史文档的多模态序列表示。
-
覆盖范围: 论文指出,由于只考虑一个月的用户历史,并且训练数据集跨越两个月,内存库足以覆盖序列中遇到的所有文档表示。这意味着内存库中的数据具有足够的新鲜度和广度。
这个机制通过牺牲少量表示的“新鲜度”(即内存库中的表示可能不是由最新模型参数计算的,存在一定的陈旧性 (staleness))来大幅降低计算成本,使得大规模多模态序列建模成为可能。
4.2.5. 多模态序列建模 (Multimodal Sequential Modeling)
LEMUR 采用 LONGER [3] 的修改版本,包括一个 Decoder 模块和一个相似度模块,来对从内存库中获取的多模态序列进行建模。
a. Decoder 模块:
该 Decoder 模块旨在从用户历史多模态序列中提取有用的信息,并将其整合到用户的当前表示中。其结构如下图(原文 Figure 2)所示:
该图像是一个示意图,展示了 LEMUR 系统中的跨注意力机制。图中包含全局令牌、查询、键和值之间的关系以及前馈网络(FFN)的结构,强调了如何处理输入序列以生成输出。
图 2: Decoder 结构
Decoder 的工作流程如下:
-
初始化查询令牌: 在第一层,
Decoder将其他特征(例如用户 ID、查询 ID 等)转换为一个Decoder query token。 -
交叉注意力 (Cross-Attention): 这个 会对多模态序列表示 进行交叉注意力 (cross-attention) 操作。这里, 作为查询 (query),历史文档的多模态表示 作为键 (keys) 和值 (values)。 交叉注意力机制的计算如下: 其中:
- : 当前层的
Decoder query token。 - : 从内存库中检索到的用户历史多模态序列表示。
- :
attention weight,表示 对历史文档 的关注度,通过 与 的点积计算,并通过softmax归一化。 - : 交叉注意力操作,输出是历史文档表示的加权和。
- : 前馈网络 (Feed-Forward Network),一个非线性变换层。
- : 下一层
Decoder的查询令牌。
- : 当前层的
-
计算效率: 论文指出,这个
Decoder架构只对交叉注意力输出应用FFN,显著降低了计算开销,与基线模型中的序列建模组件保持一致。模型中有多条序列,最长的包含 1000 个物品。
b. 相似度模块 (Similarity Module):
除了 Decoder,一个相似度模块还计算目标文档与用户历史序列中每个文档之间的余弦相似度 (cosine similarities)。为了稳定训练,还会维护一个经过排序的相似度向量版本。这个模块旨在直接捕获当前用户兴趣与历史行为之间的关联。
最后,Decoder 和相似度模块的输出与其他特征(如用户 ID、查询 ID、目标文档 ID 等)一起作为 RankMixer 模型的输入,用于生成最终的预测 logit。
4.2.6. 效率优化 (Efficiency Optimization)
尽管内存库机制已经大幅节省了计算负担,但 Transformer 部分的浮点运算 (FLOPs) 仍然高于排名模型本身。为了进一步加速训练和服务,LEMUR 采用了以下优化措施:
- Flash Attention [9]: 一种用于
Transformer注意力机制的高效算法,能显著减少内存访问和计算时间。 - 混合精度训练 (Mixed-Precision Training): 结合使用 FP16(半精度浮点数)和 FP32(单精度浮点数)进行训练,可以减少内存占用并加速计算,同时保持模型精度。
- 采样策略 (Sampling Techniques):
- 在每个训练批次中,只随机选择一部分样本(例如 20%)执行
Transformer的前向和后向传播。 - 对于剩余的样本,直接从内存库中重用其已存储的嵌入,而无需执行
Transformer的前向传播。 - 这种策略平衡了计算成本和性能。在推理阶段,所有嵌入都直接从内存库中检索,
Transformer不被激活,进一步提高了服务效率。
- 在每个训练批次中,只随机选择一部分样本(例如 20%)执行
- 跨工作器去重 (Cross-Worker Deduplication):
- 在同一个批次中,可能会存在多个重复的文档。为了避免对相同的文档重复计算其表示,
LEMUR在Transformer处理之前,对批次内的所有工作器 (worker) 中的文档进行去重。 - 具体做法是:通过
all_gather集合通信原语,在一个训练步骤中,将某个rank上计算出的文档嵌入提供给所有其他rank,以实现即时局部重用。 - 此外,
LEMUR开发了一个定制的Dedup join operator(一个高效的 CUDA 内核),用于扫描用户历史序列,识别最近计算出的文档 ID 的所有出现,并用最新计算的嵌入替换陈旧的历史嵌入。这确保了在单个批次内,同一物品的所有表示都是一致和最新的。详细内容参见论文附录 A。
- 在同一个批次中,可能会存在多个重复的文档。为了避免对相同的文档重复计算其表示,
A. 去重 (Deduplication)
为了重用文档嵌入的计算,LEMUR 实现了以下机制:
在一个训练步骤中,在某个 rank(分布式训练中的一个计算单元)上计算的文档嵌入,会通过 all_gather 集合通信原语,广播给所有其他 rank,从而使所有工作器都能即时访问和重用这些新计算的嵌入。
此外,LEMUR 开发了一个定制的 Dedup join operator,这是一个高效的 CUDA kernel,旨在最大化吞吐量。这个操作器会扫描当前批次中的用户历史序列,识别出所有与最近计算出的文档 ID 相同的实例,并用这些新计算的、新鲜的嵌入替换掉之前可能存在的陈旧历史嵌入。这确保了在一个批次内,同一物品的所有表示都是一致和最新的。
5. 实验设置
5.1. 数据集
-
来源: 抖音搜索推荐系统 (Douyin's search recommendation system) 的数据。
-
规模: 包含 70 天的在线用户交互日志子集,共计 30 亿样本。
-
特点:
- 训练批次 (Training batches) 是围绕多个相同查询组织的,每个查询及其对应的检索文档在训练样本中连续出现。
- 每个样本包含用户特征、查询特征、文档特征、交叉特征和用户搜索历史特征。
- 包含数十亿用户 ID 和数亿文档 ID。
- 除了传统特征外,还整合了查询和文档的原始文本信息。
- 文档文本包括 OCR (Optical Character Recognition) 结果、ASR (Automatic Speech Recognition) 转录的视频内容、视频标题、以及从视频封面图像中提取的 OCR 文本。
- 使用内部
tokenizer将原始文本转换为token。
-
文本输入摘要 (Summary of the text input): 以下是原文 Table 1 的结果:
source feature max length avg length query query 10 4 doc title 31 22 OCR 124 81 ASR 12 2 cover image OCR 12 6 说明:
query的最大长度为 10token,平均长度为 4token。doc(文档) 的特征包括title(标题)、OCR(光学字符识别结果)、ASR(自动语音识别结果) 和cover image OCR(封面图像 OCR 文本)。title的最大长度为 31token,平均长度为 22token。OCR的最大长度为 124token,平均长度为 81token。ASR的最大长度为 12token,平均长度为 2token。cover image OCR的最大长度为 12token,平均长度为 6token。
5.2. 评估指标
-
离线评估指标 (Offline Evaluation Metrics):
- AUC (Area Under the Curve): 曲线下面积。
- 概念定义:
AUC衡量的是分类器将正类样本排在负类样本之前的能力。它表示随机选择一个正样本,其预测分数高于随机选择一个负样本的概率。AUC值的范围从 0 到 1,值越大表示模型性能越好。 - 数学公式:
AUC是 ROC 曲线(Receiver Operating Characteristic curve)下的面积。ROC 曲线的横轴是假正率 (False Positive Rate, FPR),纵轴是真正率 (True Positive Rate, TPR)。 其中:- (真正率,也称召回率或灵敏度)。
- (假正率)。
- : 模型的分类阈值。
- 符号解释:
- : 在给定阈值 下的真正率。
- : 在给定阈值 下的假正率。
- 概念定义:
- QAUC (Query-level AUC):
- 概念定义:
QAUC是对AUC的扩展,专门用于推荐系统或搜索排名场景。它首先计算每个查询 (query) 内的AUC值,然后将所有查询的AUC值进行平均。QAUC更能反映模型在单个用户查询或搜索会话中的排名质量,因为它关注的是同一查询下物品之间的相对排序。 - 数学公式: 假设有 个查询,每个查询 对应一个样本集合 。
其中:
- : 总查询数。
- : 在查询 对应的样本集合 上计算的
AUC。
- 符号解释:
- : 查询总数。
- : 第 个查询对应的样本集合。
- : 在特定查询 的上下文中计算的
AUC值。
- 概念定义:
- AUC (Area Under the Curve): 曲线下面积。
-
在线评估指标 (Online Evaluation Metrics):
- 查询变化率 (Query Change Rate):
- 概念定义: 衡量用户手动修改搜索查询以使其更具体的概率。例如,从“坦克”修改为“坦克 300”。较低的查询变化率通常意味着初始搜索结果更能满足用户需求,从而减少了用户重新细化查询的必要性,体现了推荐系统对用户意图理解的准确性。
- 计算公式:
- 符号解释:
number of distinct UID-query pairs with query reformulation: 发生查询重构的唯一用户 ID-查询对的数量。total number of distinct UID-query pairs: 唯一用户 ID-查询对的总数量。
- 查询变化率 (Query Change Rate):
5.3. 对比基线 (Baselines)
实验中使用了两种最先进的生产模型作为基线:
- RankMixer [77]: 一种高 MFU (Model FLOPs Utilization) 推荐模型,采用
token mixing和per-token FFN策略来高效捕获异构特征交互。 - LONGER [3]: 一种长序列优化
Transformer结构,专为 GPU 高效推荐器设计,能够更好地建模长范围的用户行为序列。 此外,论文还在某些对比中提及了更早的基线 DLRM-MLP [45],它代表了传统的深度学习推荐模型。
5.4. 实现细节 (Implementation Details)
- 模型初始化: 推荐模型使用检查点 (checkpoint) 加载,多模态模型则冷启动 (cold started)。
- 批次大小 (Batch Size): 所有基线和
LEMUR都使用相同的批次大小,设置为 2048。 - 优化器设置: 所有模型使用相同的优化器设置。
- 嵌入维度 (Embedding Dimension): 内存库中查询和文档的维度设置为 128。
- Transformer 层数:
- 查询
Transformer层数设置为 2,以提高服务效率(因为QID不重复)。 - 文档
Transformer层数设置为 4,以获得更好的性能。
- 查询
6. 实验结果与分析
6.1. 核心结果分析
6.1.1. 离线评估结果
论文将 LEMUR 与在线基线模型 进行了比较。为了更全面地展示 LEMUR 的有效性,还包含了 RankMixer 和 LONGER 单独相对于更早的基线 DLRM-MLP [45] 的改进。
以下是原文 Table 2 的结果:
| model | AUC↑ | QUAC↑ |
| DLRM-MLP | 0.74071 | 0.63760 |
| +RankMixer | ||
| Improvement | 0.55% | 0.81% |
分析:
DLRM-MLP是最基础的基线模型,其AUC为 0.74071,QAUC为 0.63760。- (相对于
DLRM-MLP) 在QAUC上带来了 0.59% 的提升。 - (相对于
DLRM-MLP在RankMixer基础上) 在QAUC上带来了 0.45% 的提升 (0.59% + 0.45% = 1.04% 整体提升)。 +LEMUR-SQDC(在DLRM-MLP基础上) 实现了 1.51% 的QAUC提升。+LEMUR-SQDC-MB(完整的LEMUR模型) 在QAUC上实现了 0.81% 的提升。这里的Improvement0.81% 似乎是相对于 的基线。如果相对于DLRM-MLP则是 。- 论文指出,在工业环境中,即使是 0.1% 的提升也被认为是显著的,足以影响在线 A/B 测试。因此,
LEMUR带来的 0.81%QAUC提升是一个非常重要的性能提升。这验证了LEMUR端到端训练和引入内存库的有效性。
6.1.2. 在线 A/B 测试结果
- 测试环境: 在抖音搜索 (Douyin Search) 进行了为期 14 天的 A/B 测试。
- 结果:
LEMUR实现了 0.843% 的查询变化率降低,优于基线模型。这一结果在统计学上是显著的(通过 T 检验)。 - 部署状态: 实验成功后,
LEMUR已在抖音搜索全面部署并稳定运行超过一个月。 - 分析: 查询变化率的降低直接表明
LEMUR能够提供更准确、更相关的搜索结果,减少了用户重新细化查询的需求,从而提升了用户体验。在线 A/B 测试的成功部署是模型在实际工业场景中有效性的最终证明。
6.1.3. 与两阶段方法的比较
论文将 LEMUR 与一个两阶段方法进行了比较。该两阶段方法预训练了一个 Transformer(使用相同的 SQDC 损失和文本特征,在抖音搜索的一个月数据上),然后使用其冻结的表示。在下游推荐任务中,预训练 Transformer 生成的多模态表示以与 LEMUR 相同的方式使用。
以下是原文 Table 3 的结果:
| method | QUAC | △QUAC |
| baseline | 0.64393 | - |
| Two-Stage | 0.64470 | |
| LEMUR | 0.64914 |
分析:
baseline(可能是 的某个版本) 的QAUC是 0.64393。Two-Stage方法相对于baseline仅带来了 0.12% 的QAUC提升。这表明即使使用与LEMUR相同的对比损失进行预训练,冻结表示的两阶段方法在性能提升方面也十分有限。LEMUR相对于baseline实现了 0.81% 的QAUC提升,显著优于两阶段方法 (0.81% vs 0.12%)。- 结论: 这一比较有力地证明了端到端联合训练的优越性,克服了多模态学习与推荐目标之间的不一致性,从而带来了更大的性能增益。
6.1.4. 陈旧性 (Staleness) 和覆盖度 (Coverage) 分析
内存库机制虽然解决了计算成本问题,但也带来了陈旧性 (staleness) 和覆盖度 (coverage) 的挑战。
-
陈旧性: 内存库中缓存的表示可能与模型当前参数输出的表示存在差异,因为模型参数在训练中不断更新。论文通过测量当前模型输出与其缓存版本之间的相似度来衡量陈旧性。
-
覆盖度: 指内存库中存储的序列物品占总序列物品的百分比。
下图(原文 Figure 3)展示了内存库的陈旧性和覆盖度:
该图像是一个示意图,展示了训练时间与相似性及覆盖度之间的关系。左侧图表表示训练时间与相似性(similarity)的变化,右侧图表展示了训练时间对不同序列覆盖度(coverage)的影响,数据点包括当前文档、短序列和长序列的覆盖率变化。
图 3: 内存库中的陈旧性和覆盖度
分析:
- 陈旧性 (左图): 在训练过程中,当前模型输出与内存库中缓存表示的相似度稳定增加,最终稳定在 0.95 左右的高值。这表明陈旧性对
LEMUR来说并不是一个显著的问题,内存库中的表示能很好地近似当前模型状态。 - 覆盖度 (右图): 短序列 (Short sequence) 很快就达到了高覆盖度。长序列 (Long sequence) 需要更多时间才能达到可比的水平。在两种情况下,覆盖度都超过了 90%。此外,当前存储在内存库中的文档的覆盖率始终保持在 98% 以上。
- 结论: 这些结果验证了内存库机制的有效性。高覆盖度确保了历史序列信息能够被充分利用,而低陈旧性则保证了这些历史表示的质量。
6.2. 消融实验 (Ablation Studies)
以下是原文 Table 5 的结果:
| method | setting | QAUC | △QAUC |
| LEMUR | final online version | +0.81% | - |
| Transformer | w/ stop gradient in RankMixer | +0.50% | -0.31% |
| MemoryBank | w/o short multimodal sequence | +0.77% | -0.09% |
| w/o long multimodal sequence | +0.56% | -0.25% | |
| w/o cosine similarity | +0.69% | -0.12% | |
| Loss | w/o SQDC Loss | +0.64% | -0.17% |
| w/o session-level mask | +0.71% | -0.10% | |
| w/ CIC Loss | +0.79% | -0.02% |
分析: LEMUR 的最终在线版本带来了 0.81% 的 QAUC 提升,作为基准进行消融研究。
6.2.1. 联合训练 (Joint Training) 的影响
- 设置: 在
RankMixer中对Transformer学到的表示应用梯度停止 (stop gradient)。 - 结果:
QAUC下降 0.31% (从 0.81% 降至 0.50%)。 - 结论: 这表明推荐模型的相关特征和信号能够有效指导多模态模型的训练,并增强
CTR预测。端到端联合训练是关键。
6.2.2. 内存库 (Memory Bank) 的使用
- 设置:
w/o short multimodal sequence(移除短多模态序列):QAUC从 0.81% 降至 0.77%,下降 0.09%。w/o long multimodal sequence(移除长多模态序列):QAUC从 0.81% 降至 0.56%,下降 0.25%。w/o cosine similarity(移除余弦相似度模块):QAUC从 0.81% 降至 0.69%,下降 0.12%。
- 结论:
- 长多模态序列的引入带来了显著的
QAUC提升(0.25%),这凸显了将超长多模态序列整合到推荐系统中的潜力。 - 短多模态序列也贡献了 0.09% 的提升。
- 余弦相似度模块有助于模型更好地捕捉当前文档与历史文档之间的内容相似性,带来了 0.12% 的
QAUC提升。 - 综合来看,内存库及其关联的序列建模组件对
LEMUR的整体性能至关重要。
- 长多模态序列的引入带来了显著的
6.2.3. 不同采样策略 (Different Sampling Strategies)
论文还评估了不同的采样训练策略,同时考虑了计算成本。
以下是原文 Table 4 的结果:
| method | params | FLOPs | QUAC |
| baseline | 92M | 1673G | - |
| LEMUR,no-sampling | 139M | 4303G | |
| LEMUR, | 139M | 3232G | |
| LEMUR, | 139M | 2439G | |
| LEMUR, | 139M | 2262G |
分析:
LEMUR, no-sampling: 未采样时的LEMUR模型参数为 139M,FLOPs为 4303G,QAUC提升 0.81%。然而,FLOPs相比基线 (1673G) 翻了一倍多,计算成本过高。- : 前向传播 () 对所有样本进行,后向传播 () 只对 20% 样本进行。
FLOPs降至 3232G,QAUC提升 0.78%。QAUC略微下降 0.03% (0.81% - 0.78%),表明即使在训练稳定后,后向传播仍然重要。 - : 前向和后向传播都只对 20% 的样本进行,其余 80% 从内存库中检索。
FLOPs进一步降至 2439G,QAUC提升 0.76%。QAUC额外下降 0.02% (0.78% - 0.76%),这可能是由于数据陈旧性 (staleness) 对模型性能的影响。 - : 采样率降至 10%。
FLOPs为 2262G,QAUC提升 0.75%。QAUC再次下降 0.01%。 - 结论: 20% 的采样策略在计算成本和性能之间取得了较好的平衡,满足了 ROI (Return on Investment) 要求,并提供了更好的多模态长序列覆盖度,因此被选用于最终部署。
6.2.4. SQDC 损失分析
- 设置:
w/o SQDC Loss(移除SQDC损失):QAUC从 0.81% 降至 0.64%,下降 0.17%。w/o session-level mask(移除会话级掩码):QAUC从 0.81% 降至 0.71%,下降 0.10%。
- 结论:
SQDC损失对QAUC贡献了 0.17% 的提升,其中会话级掩码贡献了 0.10%。这表明SQDC在对齐查询和文档表示方面非常有效,而会话级掩码则进一步稳定了训练过程。
温度超参数 (Temperature Hyperparameter) 和负样本策略 (Negative Samples Strategy) 的影响:
以下是原文 Table 6 的结果:
| configuration | QAUC | △QAUC |
| SQDC (different temperature) | ||
| temperature=1 | 0.64831 | +0.68% |
| temperature=5 | 0.64857 | +0.72% |
| temperature=50 | 0.64914 | +0.81% |
| temperature=100 | 0.64869 | +0.74% |
| SQDC (different negative samples strategy) | ||
| in-batch positive samples | 0.64914 | +0.81% |
| in-batch samples | 0.64908 | +0.80% |
分析:
- 温度超参数:
- :
QAUC提升 0.68%。 - :
QAUC提升 0.72%。 - :
QAUC提升 0.81% (最优)。 - :
QAUC提升 0.74%。 - 结论: 与多模态预训练模型 [19, 56] 的发现一致,较高的温度(如 50)能使相似度分数之间的区分度更锐利,从而使模型更有效地关注正样本对(如匹配的查询-文档对),并更好地聚合语义相似的样本。过高或过低的温度都会导致性能下降。
- :
- 负样本策略:
in-batch positive samples:QAUC提升 0.81%。in-batch samples:QAUC提升 0.80%。- 结论: 使用批次内所有样本作为负样本,或仅使用批次内正样本作为负样本,在
QAUC上差异微乎其微。这表明SQDC的鲁棒性较好。
6.2.5. CIC Loss 的影响
- 设置: 引入
Content-ID Contrastive (CIC) loss[11]。 - 结果: 引入
CIC loss导致性能略微下降 0.02% (从 0.81% 降至 0.79%)。 - 结论: 这表明在
LEMUR的联合训练框架下,当多模态嵌入与排名模型共同优化时,与 ID 嵌入进行显式对齐可能带来的益处有限。模型通过端到端训练已经能够有效地学习到这种对齐。
6.3. 在其他场景下的表现
LEMUR 在其他场景中也取得了积极的离线和在线收益:
- 抖音广告平台 (Douyin Ads Platform): 实现了 0.1% 的离线
AUC提升。 - TikTok 搜索场景 (TikTok Search): 在线 A/B 测试中,查询变化率 (query change rate) 降低了约 0.843%。
7. 总结与思考
7.1. 结论总结
本文介绍了 LEMUR,一个创新的、大规模的端到端多模态推荐系统,并在抖音短视频平台成功部署。LEMUR 通过将多模态表示学习和推荐排名目标整合到单一的联合训练流水线中,克服了传统两阶段框架固有的局限性和权衡问题。其关键创新包括:
-
端到端联合优化: 解决了多模态学习与推荐目标之间的不一致性,并支持参数的实时更新。
-
内存库机制: 通过高效存储和检索历史多模态表示,显著降低了多模态序列建模的计算成本。
-
SQDC 损失: 引入会话掩码的查询-文档对比损失,以更好地对齐查询和文档的表示。
-
效率优化技术: 采用
Flash Attention、混合精度训练、采样策略和跨工作器去重等技术,确保了系统在大规模工业场景中的训练效率和可行性。LEMUR在抖音搜索部署一个月后,显著降低了查询变化率,并提升了QAUC。在抖音广告等其他场景也取得了可观的离线和在线收益。这些结果有力地验证了端到端多模态推荐在真实世界工业场景中的优越性和实用价值。论文预测,随着模型复杂度的不断增加,LEMUR所代表的集成架构将是多模态推荐未来发展的一个有前景且日益实用的方向。
7.2. 局限性与未来工作
论文作者指出了当前 LEMUR 设计中的一些局限性,并提出了未来的研究方向:
- 内存库的陈旧性 (Staleness): 内存库中的表示在模型参数更新时不会实时刷新,这导致缓存表示与当前模型输出之间存在潜在差异。虽然实验表明相似度很高,但这种陈旧性仍可能影响优化过程和序列模式学习的质量。
- 内存库的覆盖度 (Coverage) 和更新策略: 内存库的覆盖度和更新策略可能未能充分捕捉大规模系统中物品的长尾分布 (long-tail distribution),可能导致模型偏向于流行物品。
- 未来的研究方向: 解决陈旧性和覆盖度问题将是未来工作的重点,可能通过探索动态更新调度 (dynamic update schedules) 或更复杂的缓存架构来实现。
7.3. 个人启发与批判
-
个人启发:
- 端到端优化的重要性:
LEMUR再次强调了在复杂系统中进行端到端联合优化的巨大潜力。当子任务的目标与最终任务目标不完全一致时,将它们解耦处理可能会导致次优解。尤其是在推荐系统中,用户行为(点击、购买)是最终目标,所有中间特征学习都应该直接围绕这个目标进行优化。 - 工程创新与模型效果并重:
LEMUR的成功不仅依赖于模型架构的创新(如SQDC),更离不开在工程效率上的突破(内存库、采样、去重)。在大规模工业场景中,纯粹的模型理论创新若不能高效落地,其价值将大打折扣。这对于未来的研究者而言,提醒我们在设计算法时必须同时考虑其在实际系统中的计算和部署成本。 - 多模态的潜力: 即使在成熟的推荐场景(如抖音搜索),多模态信息仍能带来显著提升。这表明对内容更深层次的理解是提升用户体验的关键,尤其是在短视频、直播等富媒体内容平台。
- 内存机制的普适性: 内存库的概念可以推广到其他需要处理长序列且计算资源有限的场景。如何平衡内存的新鲜度和计算效率是一个普遍存在的问题。
- 端到端优化的重要性:
-
批判/潜在问题/改进方向:
-
陈旧性问题 (Staleness) 的深层影响: 尽管论文表示相似度高,但陈旧性对模型学习长期依赖关系和捕捉细微的用户兴趣变化可能仍有潜在影响。未来的研究可以探索更动态的内存库更新机制,例如基于梯度的更新、周期性刷新、或者根据物品流行度/重要性进行差异化更新。
-
长尾物品的表示问题: 内存库的覆盖度虽然高,但对于长尾(冷门)物品的表示可能仍然不够充分。这些物品的交互频率低,其表示在内存库中可能更新不及时或从未被计算。可以考虑结合小批量实时计算和内存库缓存,或者对长尾物品采用不同的特征更新策略。
-
SQDC的负采样策略: 论文指出批次内负采样两种方式效果差异不大。但在实际大规模推荐中,负样本的质量对对比学习至关重要。可以探索更复杂的负采样策略,例如硬负样本挖掘 (hard negative mining)、跨设备负采样、或者基于全局语料的负样本,以进一步提升表示学习的质量。 -
多模态融合的深度:
LEMUR主要是通过Transformer编码多模态的文本特征,并与其他特征一起输入RankMixer。多模态信息(如原始视觉、音频)如何更深层次地融合到Transformer内部,而不是仅仅作为文本描述,是值得探索的方向。例如,直接使用Vision Transformer提取视觉特征,并与文本特征进行早期或中期融合。 -
模型可解释性: 大规模深度学习模型通常缺乏可解释性。在推荐场景中,用户和运营都希望了解推荐理由。
LEMUR作为一个复杂的端到端多模态系统,如何提供更好的可解释性是一个挑战。总的来说,
LEMUR是一个令人印象深刻的工业级研究成果,它不仅在性能上取得了显著提升,更在工程实践上为大规模多模态推荐系统的端到端部署提供了宝贵的经验和解决方案。其在平衡模型效果和计算效率上的创新值得深入学习和借鉴。
-
相似论文推荐
基于向量语义检索推荐的相关论文。