← 全部深度解读
📖 深度解读 · PERSONALIZATION

SetMIR: Multi-Interest Retrieval as Set Prediction

Xiaodong Liu, Congfei Zhang, Hsiang-wei Chao, Siman Wang, Xiao Bai, Tong Zhao, Jingxiao Ma, Wen Zhang, Zhe Liu, Shantanu... · Snap · arXiv 2608.30251 · 发表 Tue, 01 Sep 2026 00:00:00 -0400
8 分钟阅读时长 2990字 5.00综合分 第 1 名09-02 Personalization 日报
目录 · 6 节1问题与动机2方法详解3核心技术贡献4实验结果分析5局限与未来方向6工业实践意义
相关 5新颖 5实用 5证据 5时效 5
把多兴趣召回改写成“带存在概率的集合预测”,同时解决表征冗余和服务预算浪费,适合长行为序列与兴趣数量变化大的用户。实践上可先复用现有向量索引,只替换用户塔和 dispatch 策略;同索引同配额下相对 I2I 源 CTR 提升 44%、CVR 提升 51%,说明动态兴趣路由值得优先验证。

1. 问题与动机

工业推荐的召回层通常要从数亿乃至数十亿商品中,在一次请求内取回几千个候选。经典双塔只输出一个用户向量,当用户最近同时浏览街头服饰、婴儿用品和护肤品时,向量平均会偏向主导兴趣,短期或窄兴趣容易消失。多兴趣模型虽输出 K 个向量,却有两个生产问题:其一,MIND、ComiRec 一类 argmax 目标分配允许多个正样本同时选择同一个兴趣向量,未被选中的 query 没有梯度,最终出现 interest collapse;其二,线上固定发起 K 次 ANN 查询,不区分用户实际有几个有效兴趣,重复 query 会瓜分固定候选预算并增加调用成本。

SetMIR 的出发点是把多兴趣召回看成“可变大小集合预测”,而不是 K 个彼此独立的向量预测。这个转换借鉴 DETR 的 learnable query 与匈牙利匹配,但预测对象从边界框变成冻结商品向量空间里的兴趣方向。论文强调,未匹配 query 并不代表用户永远没有该兴趣,只表示未来监督窗口内没有更多高意向目标;presence 头因此是请求级调度信号,而不是永久用户标签。

2. 方法详解

输入是用户按时间排序的行为历史,最近三天的 purchase、add-to-cart、swipe-up 构成目标集合,目标按商品去重、按意向强度保留,最多 15 个;窗口之前最近 40 个事件作为模型输入。每个历史商品先由冻结的内容模型根据标题、品牌、类目、图片生成 128 维归一化向量,再叠加位置向量和事件类型向量。事件类型前有可学习标量 α,且 α 从 0 初始化,使训练从稳定的纯内容空间逐步吸收行为类型差异。

两层、8 头 Transformer encoder 编码历史;6 层 decoder 持有 K=10 个全局可学习 query,每层先让 query 自注意力交互,再 cross-attend 用户历史。每个 decoder 输出经两个头得到:L2 归一化兴趣向量 e_k,以及 sigmoid presence 概率 p_k。query 间自注意力让它们在读取历史前协调分工,避免各自追逐同一主兴趣。

训练的关键是小规模匈牙利匹配。对每个 query—目标对,代价为负的向量内积加负的 presence 对数概率:嵌入项权重 1,分类项权重 0.5;分类项在前 10% 步数线性 warm-up,避免早期错误 presence 干扰几何分配。K=10 时只是 K×W 的小矩阵,求解成本可忽略。匹配后的 query 用跨 8 卡 all-gather 的目标向量做 InfoNCE,温度 0.05;所有 query 再用匹配/未匹配标签训练二元 presence loss。活跃 query 之间另加 margin=0.3 的余弦排斥损失,只惩罚相似度超过阈值的 pair。总损失权重为 retrieval 1.0、presence 0.5、diversity 0.1。

模型约 300 万可训练参数,AdamW 峰值学习率 5e-4、4000 步 warm-up、weight decay 0.01、余弦衰减、BF16;使用 8 张 A100 40GB,每卡 batch 1536。论文没有披露总训练步数,而是让每种模型训练到各自收敛点。

推理先保留 p_k>0.3 的 query;若全部未通过则保留最大 p_k。随后按 presence 降序做 query 级 NMS,余弦相似度超过 0.9 的低优先级 query 被删除。剩余 query 各取 ceil(N/有效 query 数) 个 ANN 结果,重复商品用各兴趣内积的最大值合并。该设计不改商品单向量索引,只动态减少用户侧 ANN 请求。

3. 核心技术贡献

第一,匈牙利一对一分配从目标函数层面消除“多个目标挤到同一 query”的结构性原因。与靠辅助正则缓解坍缩的方法不同,每个匹配 query 都获得检索梯度,每个未匹配 query 都获得明确的 absence 监督。消融中改回 argmax 后,平均有效 query 从 6.70 降到 2.16,R@10 只剩完整模型的 63.5%,说明匹配机制是最大贡献项。

第二,presence 既参与匹配又驱动线上 dispatch,把表征学习和系统预算统一。去掉 presence loss 后平均 query 反而升至 8.23,但 R@10 降至 91.4%、HR@100 降至 88.4%,说明“多发 ANN”并不能替代 query 质量判断。

第三,训练期多样性约束和推理期 NMS 分工明确:前者塑造兴趣几何,后者删除请求级重复。去掉 diversity loss 后 R@1 仅为完整模型的 88.5%,表明兴趣去重不仅节省调用,还改善头部命中。

4. 实验结果分析

数据来自 Snap Dynamic Product Ads,商品目录为数亿规模。测试约 100 万用户、530 万目标商品,验证集也约 100 万用户。所有模型共享冻结商品向量、K=10、优化器、batch 和每请求预算,指标按 SetMIR=100% 归一化。

模型平均 ANN queryR@10NDCG@100MRR
MIND10.0052.9%54.3%44.4%
ComiRec-SA10.0089.8%89.8%80.0%
KuaiFormer10.0052.0%52.3%42.2%
SetMIR-argmax2.1663.5%63.1%56.4%
SetMIR6.70100.0%100.0%100.0%

K 扫描显示从 K=1 到 10,R@10 从 100% 增至 155.0%,而有效 query 仅从 1 增至 6.70;K=15 时 R@10 155.1%,几乎饱和,说明 presence 自动吸收了额外 query,K=10 是质量与计算的合理折点。完整模型相对固定 K=10 发起的查询减少 33%。线上作为 DPA 新召回源后,整体 CVR 提升 3.1%;与相同商品向量、ANN 索引和配额的 I2I 源相比,CTR 提升 44%、CVR 提升 51%。这里后两项是“召回源内”相对提升,不能与全系统 lift 混为一谈。

5. 局限与未来方向

论文没有单列 limitations。正文明确的边界包括:所有离线和线上证据来自 Snap DPA,绝对指标因公司披露政策被隐藏;item encoder 已冻结,因此实验没有回答联合优化商品塔是否继续增益;未匹配 query 只表示三天目标窗口内未观察到兴趣,presence 可能把低频或延迟转化兴趣误判为不存在;历史仅保留 40 个事件,也未研究超长序列。作者的 K 扫描表明 10 之后收益饱和,但不同业务的兴趣数量和 ANN 成本曲线未必一致。论文也未披露端到端训练时长、线上 latency 分位数和 presence 阈值漂移,这些是复现与长期运维需要补齐的指标。

6. 工业实践意义

最现实的落地路径是保持现有商品 embedding 与 ANN 索引不动,只替换用户兴趣抽取和 query dispatch。先离线记录每请求有效 query 数、query 间余弦分布、按兴趣分桶的召回覆盖,再影子运行 presence+NMS;确认固定总候选预算下重复率下降后,才接入主召回。阈值应按流量、用户活跃度和候选预算分层校准,并保留“至少一个 query”兜底。

对社区 UGC,可把高意向目标换成收藏、长停留、关注或高质量评论,把帖子文本/图片的冻结向量当 item space。匈牙利匹配尤其适合同时有长期主题和突发兴趣的用户。不过,应避免把点击全部视为同质量目标,可借论文的事件强度优先级和 α 门控逐步引入行为。生产监控除 CTR/CVR 外,还应关注 ANN 调用数、兴趣覆盖、长尾召回、重复候选率、冷启动用户 presence 分布,以及模型更新后 query 语义是否发生置换。

← 全部深度解读 出现于报告:2026-09-02 · Personalization #1 (5.00) 原文 ↗