<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>字节 on bitJoy</title><link>https://bitjoy.net/tags/%E5%AD%97%E8%8A%82/</link><description>Recent content in 字节 on bitJoy</description><generator>Hugo -- 0.148.2</generator><language>en</language><lastBuildDate>Sun, 01 Nov 2026 11:16:48 +0800</lastBuildDate><atom:link href="https://bitjoy.net/tags/%E5%AD%97%E8%8A%82/index.xml" rel="self" type="application/rss+xml"/><item><title>论文阅读：LEMUR: Large scale End-to-end MUltimodal Recommendation</title><link>https://bitjoy.net/posts/2026-11-01-bytedance-lemur-paper-reading/</link><pubDate>Sun, 01 Nov 2026 11:16:48 +0800</pubDate><guid>https://bitjoy.net/posts/2026-11-01-bytedance-lemur-paper-reading/</guid><description>&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2026-11-01-bytedance-lemur-paper-reading/LEMUR-paper-cover.png">&lt;/p>
&lt;h1 id="基本信息">基本信息&lt;/h1>
&lt;ul>
&lt;li>论文标题：LEMUR: Large scale End-to-end MUltimodal Recommendation&lt;/li>
&lt;li>作者单位：字节&lt;/li>
&lt;li>论文链接：&lt;a href="https://arxiv.org/abs/2511.10962">https://arxiv.org/abs/2511.10962&lt;/a>&lt;/li>
&lt;li>来源：Arxiv&lt;/li>
&lt;/ul>
&lt;h1 id="motivation论文要解决的问题是什么">Motivation：论文要解决的问题是什么&lt;/h1>
&lt;p>多模态信息对搜推系统很重要，目前搜推模型使用多模态特征的主流方法是两阶段式的，即先预训练多模态encoder并产出多模态emb，然后冻结emb加入下游排序模型。两阶段方式虽然实现了上下游解耦，方便各自迭代，但存在以下三个问题：&lt;/p>
&lt;ul>
&lt;li>多模态encoder的预训练目标与下游任务的目标不一致，导致预训练对下游的提升帮助不大&lt;/li>
&lt;li>下游排序任务被ID特征主导训练，加入的冻结的多模态emb无法起到很大的作用&lt;/li>
&lt;li>多模态encdoer和下游排序模型的更新频率不一致，多模态encoder通常是冻结的，导致无法与下游任务做到实时动态适配，随着下游任务的训练，多模态emb的作用会逐渐衰减&lt;/li>
&lt;li>多模态emb线上服务压力大&lt;/li>
&lt;/ul>
&lt;p>由于上述两阶段方式存在诸多弊端，本文提出直接把原始多模态特征加入排序模型，端到端联合训练排序模型和多模态encoder，期望能最大化利用多模态信息。由于联合训练的成本较高，作者结合了诸多工程优化技术。&lt;/p>
&lt;h1 id="模型结构">模型结构&lt;/h1>
&lt;p>整体模型结构如图Fig1所示。上层特征交叉和scaling模块是字节的RankMixer，本文重点关注下面的emb层。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2026-11-01-bytedance-lemur-paper-reading/LEMUR-fig1.png">&lt;/p>
&lt;p>本文的建模场景是抖音短视频搜索，输入的多模态特征是query和video（文章称为doc），但是作者并没有使用video的视觉特征，而是通过OCR、ASR等方法把视频的封面图片、关键帧、音频等都转换成文本特征了。所以图中的Multimodal Model很可能只是一个文本encoder。&lt;/p>
&lt;p>搜索词q和候选视频d通过transformer-based的Multimodal Model编码后分别得到多模态表征\(q_i\)和\(d_i\)。&lt;/p>
&lt;p>然后作者设计了一个q/d对齐模块SQDC，认为发生点击的(q,d)二元组是正样本，同batch内的其他d是负样本。但是需要把同一个q对应的其他未点击d进行mask。即担心曝光未点击的可能是假负例。使用对比学习InfoNCE loss，如下。&lt;/p>
$$
\ell_{\text{SQDC}} = \sum_{i, \text{label}_i=1} -\log \frac{\exp (\operatorname{sim}(q_i, d_i) * T)}{\sum_{j=0}^{K} A_{ij} * \exp (\operatorname{sim}(q_i, d_j) * T)}\tag{6}
$$$$
A_{ij} = \begin{cases}
0 &amp; \text{if } i \neq j \text{ and } \text{QID}_i = \text{QID}_j \\
1 &amp; \text{else}
\end{cases}\tag{7}
$$&lt;p>图Fig1右边的SQDC展示了mask的过程，比如q1/q2是相同的q，q3/q4/q5也是相同的q，则它们算负例的时候内部要互相mask掉，只和不同q的d算负例。整体是非常常规的操作，不值得论文大书特书啊。&lt;/p>
&lt;p>上面的多模态模型实际上只编码了q和商品侧的d，由于用户历史行为流的d非常多，出于性能考虑，作者并没有对历史行为中的d过多模态模型进行实时编码。而是把商品侧的d过了多模态模型的emb存到一个memory bank里面，作为cache。然后用户历史行为中的d通过查询memory bank，拿到cache的多模态emb，然后再进入到多模态的用户序列建模模块，作者使用的是字节的LONGER模型。作者认为，由于它们的训练数据范围是2个月，而用户历史行为是1个月，故memory bank里存的商品侧的多模态emb基本能覆盖用户历史行为流中的商品。&lt;/p></description></item></channel></rss>