华科华为UNGER用一套码融合语义与协同,推理快2.8倍

UNGER: Generative Recommendation with A Unified Code via Semantic and Collaborative Integration

Longtao Xiao, Haozhao Wang, Cheng Wang, Linfei Ji, Yifan Wang, Jieming Zhu, Zhenhua Dong, Rui Zhang, Ruixuan Li

cs.IR

2025-02-10

华科与华为提出UNGER,把语义和协同压进一套Unicode。Beauty上Recall@20达0.1289,比双码EAGER高14.7%,推理快2.8倍,直接拼接的分数甚至低于语义单路。

这篇在解决什么

生成式推荐把「找下一项」改成自回归生成物品的离散码,省掉 ANN 索引。码从哪里来,现有路线是分开走:RecForest 量化协同,TIGER 量化语义,EAGER 两套码并行解码再按置信度拼。两套码存储和推理都贵,而且把两种知识当独立通道,补不上彼此。

直接把语义向量和协同向量拼起来再量化,看起来省事,实测会踩语义主导:拼完的表示和语义侧几乎重合,协同侧贡献接近零,推荐效果可以掉到不如只用语义。根因是两种模态信号强度和空间都对不齐,拼接没有能力重加权。

方法

UNGER 分两段。第一段分别取语义和协同嵌入:文本侧用 Llama2-7b 编码标题等侧信息,协同侧用 DIN 打交互序列。可学习的模态适应层带 AdaLN,把语义映到协同空间,再和下一物品预测一起优化跨模态对齐(InfoNCE)。对齐之后做层次 k-means 残差量化,每层 256 个簇,得到一套 Unicode,当作物品的唯一离散标识。

第二段用 Transformer 编码器读用户历史的 Unicode 序列,解码器逐步生成下一项的码。量化会丢信息,所以解码器末尾加一个蒸馏专用 token,把它的隐状态和第一段学到的融合嵌入做全局对比学习,用未量化的向量当教师。两段损失都是主任务加一项辅助项,系数都取 1。推理只跑 Transformer,beam search 出码再查表。

结果

三个 Amazon 五核子集:Beauty、Sports、Toys。Beauty 上 Recall@20 为 0.1289,第二名 EAGER 为 0.1124,相对提升 14.68%;NDCG@20 为 0.0646 对 0.0599,相对提升 7.85%。Sports 和 Toys 上同样全面高于 EAGER。参数大约是 EAGER 的一半。

方法Beauty R@20Beauty N@20语义占比
仅语义0.10770.0535
仅协同0.09970.0532
拼接0.10710.053097.33%
UNGER0.12890.064659.89%

拼接后协同占比只剩 2.67%,分数还略低于仅语义。UNGER 把两边收到约 60/40。消融里去掉跨模态对齐和蒸馏,退回拼接水平;只留对齐已有提升,两项一起最好。相对双码,统一码推理快约 2.8 倍(Beauty, topk=5, beam=100)。层数从 1 加到 8,Recall@20 和 NDCG@20 仍在涨。

为什么重要

生成推荐要进线,码的套数直接决定存储和延迟。这篇说明「两套码再融合」既贵又没有用上互补;早期对齐再量化成一套码,更省,也更准。语义主导不是口号,拼接在 Beauty 上给出了可复现的反例。从业者如果已经在上 TIGER / EAGER,统一码是更可部署的替代,不需要再维护两条解码。

局限与存疑

评测只在稀疏的 Amazon 五核子集上,作者自己写了更密的场景还没系统看过。语义编码器是 Llama2-7b,协同是 DIN,换更新的骨干会不会改变 60/40 的平衡,没有试。层次 k-means 是离线量化,码表不会随第二段训练更新。消融表只给了 Beauty,Sports/Toys 上两个辅助任务各贡献多少不清楚。缩放曲线画了深度,宽度和数据量的定量结论在正文里没有落到具体数字。没有线上 A/B。

术语

原文与代码

社区讨论

相关论文

全部论文解读