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@20 | Beauty N@20 | 语义占比 |
| 仅语义 | 0.1077 | 0.0535 | — |
| 仅协同 | 0.0997 | 0.0532 | — |
| 拼接 | 0.1071 | 0.0530 | 97.33% |
| UNGER | 0.1289 | 0.0646 | 59.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。