Google TIGER用语义ID做生成式检索,Beauty上NDCG@5高出SASRec两成九

Recommender Systems with Generative Retrieval

Shashank Rajput, Nikhil Mehta, Anima Singh, Raghunandan H. Keshavan, Trung Vu, Lukasz Heldt, Lichan Hong, Yi Tay, Vinh Q. Tran, Jonah Samost, Maciej Kula, Ed H. Chi, Maheswaran Sathiamoorthy

NeurIPS 2023)

cs.IR, cs.LG

2023-05-09

Google把商品文本量化成层次化Semantic ID,用encoder-decoder直接生成下一件商品的码,Beauty上NDCG@5相对SASRec提升29%,并能推荐从未出现过的商品。

这篇在解决什么

工业推荐的检索段,标准做法是双塔:把用户历史和候选商品打进同一向量空间,再用 ANN / MIPS 取 top。商品一上亿,embedding 表就按商品数线性涨;新商品没有交互,随机 ID 完全没信号;相似商品也无法共享参数。

TIGER(Transformer Index for GEnerative Recommenders)换了一条路:不要 ANN,让 Transformer 自己当索引,自回归地「写」出下一件商品的编号。关键不是拿原子 ID 去生成(P5 那条路弱很多),而是先给每件商品做一个有语义层次的 Semantic ID。

方法

两段流水线。

Semantic ID。用 Sentence-T5 把标题、价格、品牌、类目拼成一句,得到 768 维内容向量。RQ-VAE 做三层残差量化:每层码本 256,潜空间 32 维。残差一层比一层小,前几位码对应粗类目,后面的码切细。码碰撞时在末尾再加第 4 位区分,每件商品最终是长度 4 的整数元组。RQ-VAE 用 k-means 初始化码本,避免塌缩,训练约 2 万 epoch,码本使用率至少 80%。

生成检索。用户按时间排好的商品序列,整段换成 Semantic ID token 串,encoder-decoder(T5X,编解码各 4 层、6 头,约 1300 万参数)去预测下一件商品的 4 个码。词表是 256×4=1024 个商品码,外加 2000 个哈希用户 token。推理用 beam search 逐码生成。

Beauty / Sports / Toys 三个 Amazon 评论子集,用户至少 5 条评论。Beauty 有 22363 用户、12101 商品,平均序列长度 8.87。

结果

三个数据集上 TIGER 全面超过当时的序列推荐基线。

方法Beauty Recall@5Beauty NDCG@5Sports Recall@5Toys Recall@5
SASRec0.03870.02490.02330.0463
S3-Rec0.03870.02440.02510.0443
TIGER0.04540.03210.02640.0521

Beauty 上 NDCG@5 相对 SASRec 高 29%,Recall@5 相对 S3-Rec 高 17%。Sports / Toys 的 NDCG@5 也分别高 13% 和 21%。

ID 怎么造决定上限。Beauty Recall@5:随机 ID 0.0296,LSH 0.0379,RQ-VAE 0.0454。随机码几乎退回弱基线,说明「能生成」不够,码必须带内容结构。定性上看,第一位码对着妆、头发这种粗类目,第二位再往下切。

新能力有两个。冷启动:训练时抠掉 5% 测试商品,生成的前三位码可以匹配从未见过的商品,ε=0.1 时 Recall@K 超过直接在语义空间做 KNN。多样性:解码温度从 1.0 提到 2.0,Beauty 上 Entropy@10 从 0.76 升到 1.38,同一查询会跨到相邻类目。

无效 ID 存在,但 top-10 里只有约 0.1%–1.6%,加大 beam 再过滤即可。256^4 的码空间约 4 万亿,商品只有一两万,模型几乎总是落在有效码上。

为什么重要

这是把生成式检索从文档 ID 搬到推荐系统的开山论文,也是后面 OneRec、GRID、各种 SID 工作的共同祖先。层次化 Semantic ID 同时解决三件事:embedding 表不再跟商品数线性走、相似商品共享前缀、没交互的新商品也能靠内容码被生成出来。温度采样和前缀匹配还顺手给出多样性和冷启动旋钮,双塔做不到这么直接。

Amazon 5-core 上的 29% 是真实的,但不等于上亿商品、超长序列时同样成立。工程上要再付量化器训练、碰撞处理和无效码过滤的成本。

局限与存疑

三个 Amazon 子集又小又短,平均序列不到 9 步,和工业 session 不是一个量级。P5 对照改过数据预处理,公平性要打折。RQ-VAE 要训很久、对初始化敏感,GRID 后续证明更简单的残差 K-Means 就能打过它。无效码靠加大 beam 掩盖,论文把前缀匹配留给未来。用户 token 用 2000 槽哈希,GRID 后来发现去掉更好,这篇没有做这个消融。冷启动实验的 ε 是人为配比,不是模型自己决定新旧商品比例。

术语

原文与代码

社区讨论

相关论文

全部论文解读