Latte: Expressiveness Limits of Autoregressive Semantic ID Generation in Generative Recommendation
Expressiveness Limits of Autoregressive Semantic ID Generation in Generative Recommendation
基本信息
| 字段 | 内容 |
|---|---|
| 标题 | Expressiveness Limits of Autoregressive Semantic ID Generation in Generative Recommendation |
| 作者 | Yupeng Hou, Haven Kim, Clark Mingxuan Ju, Eduardo Escoto, Neil Shah, Julian McAuley |
| 机构 | University of California San Diego; Snap Inc. |
| 年份 | 2026 (arXiv: 2605.06331v1, 2026-05-07) |
| 方向 | Generative Recommendation, Semantic ID, Autoregressive Decoding |
| 代码 | https://github.com/hyp1231/Latte |
| arXiv | https://arxiv.org/abs/2605.06331 |
生成式模型 output 端的前缀会压缩 item 间的区分度。
解决办法和上下文token的理念接近,用更多上下文信息来将自回归建模分场景节藕。
摘要
GR 模型按 token 自回归生成 Semantic ID 时,解码空间天然是一棵树;树上相近的 item 概率被强耦合,也就是说前面几层SID相同的 item 的概率值是接近的,因为被前几层SID的条件概率被限制在了一个固定的概率空间内,导致item-item间的模式受到了自回归的限制,不同用户对前缀SID相似的item的兴趣无法得到准确节藕。
作者提出 Latte:在 SID 前注入一个随机 latent token,把"单棵树"变成"多棵 latent 条件树",从而打破耦合,NDCG@10 平均提升 3.45%。
与已有工作关系
| 类别 | 代表工作 | 与本文区别 |
|---|---|---|
| Item Tokenization | TIGER, LETTER, ActionPiece, PSID | 本文不改 tokenizer,只动 生成过程 |
| Sequential Rec (ID-based) | SASRec, BERT4Rec, HSTU, FMLP-Rec | 全部作为 baseline 对比 |
| Generative Rec | TIGER (RQ-VAE), PSID | Latte 是对任意 GR 模型的 plug-in |
研究动机
现有问题

- 生成式推荐 (GR) 把 item tokenize 成 SID 序列 (e.g., TIGER, LETTER, ActionPiece, PSID);
- 现有工作主要关注 如何 tokenize,但 自回归生成过程本身 怎样约束模型表达力 被忽视;
- token-by-token 生成 = 在 SID 诱导的 decoding tree 上做 traversal,共享 prefix → 共享概率项 → 强相关。
举个例子:Pokémon Scarlet(Switch 新版)和 Pokémon Sun(3DS 旧版)在 SID 上距离=2,语义上确实相似(都是宝可梦正传)。但是:
- 喜欢新主机/新画面的用户偏好 Scarlet;
- 怀旧/喜欢掌机的用户偏好 Sun。
这两组用户的相对偏好是反向的。一个好的个性化推荐系统应该能为不同用户给出不同的相对排序——但 GR 模型由于共享前缀概率项,结构上会让 P(Scarlet|u) 和 P(Sun|u) 在所有用户上同涨同跌(Pearson 相关≈1),从而无法翻转。
换句话说:SID 设计让相似 item 共享前缀是合理的,但自回归连乘 + 共享前缀让"相对偏好"也被绑定,这一步会限制表达能力。
三个关键观察
- Decoding as Tree Traversal:树距离短(前缀SID重合度高) ⇒ 概率高度相关;
- Rank Reversals:不同用户对同一对 item 的偏好顺序难以反转,表达能力受到自回归形式限制;
- Forced Transitivity:论文论证了解码树距离满足 ultrametric inequality,迫使"相似 A-B、相似 B-C ⇒ A-C 也被判相似"。
核心方法:Latte

训练
- 引入小词表 latent tokens ,;
- 对每个目标 SID ,随机采样 一个 拼到前面:
- 用标准 next-token prediction loss 训练。
推理
- 不对 latent token 加约束,自回归生成:
- Agg ∈ {sum, max},实现上用 beam search 近似。
直观解释
- 原本:单棵 decoding tree,item 间结构距离是固定常数;
- Latte:在 super-root 下挂 棵子树,effective distance 变成 context-dependent:
实验
1. 实验设置
数据集:Amazon Reviews 2023 的三个子集(Table 7):
| Dataset | #Users | #Items | #Interactions | Avg seq len |
|---|---|---|---|---|
| Instruments | 57,439 | 24,587 | 511,836 | 8.91 |
| Scientific | 50,985 | 25,848 | 412,947 | 8.10 |
| Games | 94,762 | 25,612 | 814,586 | 8.60 |
- 划分:leave-one-out(最后一次交互测试、倒数第二次验证、剩余训练);
- 指标:Recall@K、NDCG@K,K ∈ {5, 10};
- 显著性:Latte 数字带
*表示对 best baseline 做 paired t-test、。
Latte 模型实现:
- Backbone 沿用 TIGER 的 T5-style encoder–decoder,4 层 Transformer block,embedding dim = 128;
- Tokenizer 默认 RQ-KMeans,SID 长度 ,每位置词表 ;
- Latent token 数 验证集上调;beam size ;LR ,weight decay 0.05,最多 150 epoch + patience 20 早停;
- 主表 Latte 用 max 作为 Agg;单卡 NVIDIA A6000。
最优超参(Table 9):
| Dataset | Beam | LR | |
|---|---|---|---|
| Instruments | 4 | 500 | 3e-3 |
| Scientific | 8 | 500 | 3e-3 |
| Games | 8 | 500 | 3e-3 |
Baselines(11 个):
- ID-based:GRU4Rec、BERT4Rec、SASRec、FMLP-Rec、HSTU、FDSA、S³-Rec;
- GR/SID-based:TIGER、LETTER、ActionPiece、PSID(PSID 是 Latte 的直接 base model)。
2. 主结果(Table 1)
Latte 在三个数据集 × 4 个指标 = 12 项 SOTA 全包。下表对每个数据集列出 best baseline → PSID → Latte:
| Dataset | Metric | Best baseline (model) | PSID | Latte | Δ vs PSID |
|---|---|---|---|---|---|
| Instruments | R@5 | 0.0383 (ActionPiece) | 0.0390 | 0.0401* | +2.82% |
| R@10 | 0.0615 (ActionPiece) | 0.0602 | 0.0618* | +0.49% | |
| N@5 | 0.0246 (LETTER) | 0.0256 | 0.0261* | +1.95% | |
| N@10 | 0.0318 (ActionPiece) | 0.0325 | 0.0331* | +1.85% | |
| Scientific | R@5 | 0.0284 (ActionPiece) | 0.0278 | 0.0304* | +7.04% |
| R@10 | 0.0452 (ActionPiece) | 0.0445 | 0.0470* | +3.98% | |
| N@5 | 0.0182 (LETTER/ActionPiece) | 0.0181 | 0.0196* | +7.69% | |
| N@10 | 0.0236 (ActionPiece) | 0.0235 | 0.0249* | +5.51% | |
| Games | R@5 | 0.0591 (ActionPiece) | 0.0599 | 0.0618* | +3.17% |
| R@10 | 0.0939 (PSID) | 0.0939 | 0.0958* | +2.02% | |
| N@5 | 0.0382 (ActionPiece) | 0.0391 | 0.0406* | +3.84% | |
| N@10 | 0.0500 (PSID) | 0.0500 | 0.0515* | +3.00% |
Takeaway:
- 平均 NDCG@10 提升 +3.45%,Scientific 上最猛(+5.51%);
- ActionPiece 是最强 baseline,被 Latte 全面超过;
- Latte 提升不来自更强 tokenizer——它和 PSID 共用同一套 SID,唯一区别是 prepend latent token。
3. 结构约束分析(Table 2,关键证据)
目的:直接量化 GR 模型受 decoding tree 结构约束的程度。
方法:用 Kendall 秩相关 衡量"树距离 ↔ item-item 概率相似度"的关联强度—— 越接近 1 说明 item 相似性被树结构绑得越死,越接近 0 表示模型有自由表达灵活相似性。
| Model | Instruments ↑ | Scientific ↑ | Games ↑ |
|---|---|---|---|
| TIGER | −0.7170 | −0.6137 | −0.6462 |
| PSID | −0.6225 | −0.4611 | −0.6072 |
| Latte | −0.6030 | −0.4451 | −0.5958 |
(↑ 表示数值越接近 0 越好;TIGER 用了不同 SID 不直接可比,列出仅作参考。)
结论:Latte 用完全相同的 SID,把结构相关性显著降低,直接验证了"打破单棵树约束"在数据上成立。
4. 通用性:跨 Tokenizer(Table 3)
换掉 RQ-KMeans,看 Latte 在其它两种 tokenizer 上是否依然受益(NDCG@10):
| Tokenizer | Model | Instruments | Scientific | Games |
|---|---|---|---|---|
| OPQ | PSID | 0.0313 | 0.0232 | 0.0478 |
| Latte | 0.0318 (+1.68%) | 0.0235 (+1.37%) | 0.0493 (+3.24%) | |
| RQ-VAE | PSID | 0.0325 | 0.0241 | 0.0490 |
| Latte | 0.0331 (+2.02%) | 0.0247 (+2.76%) | 0.0502 (+2.55%) | |
| RQ-KMeans | PSID | 0.0325 | 0.0235 | 0.0500 |
| Latte | 0.0331 (+2.02%) | 0.0249 (+5.90%) | 0.0515 (+3.11%) |
所有 3 × 3 = 9 个组合都显著提升。有趣发现:base model 配 RQ-VAE 最好,但配上 Latte 后 RQ-KMeans 反超——作者推测是 RQ-KMeans 没有像 RQ-VAE 那样端到端优化,给了 Latte 更多"放松空间"。
5. 聚合方式消融(Table 4,NDCG@10)
推理时怎么合并不同 latent token 的预测:
| Method | Instruments | Scientific | Games |
|---|---|---|---|
| PSID (base) | 0.032462 | 0.023531 | 0.049994 |
| Latte (Agg = sum) | 0.033134 | 0.024920 | 0.051547 |
| Latte (Agg = max) | 0.033114 | 0.024301 | 0.051176 |
结论:sum 略优于 max(差距很小),但两种都比 base 强,方法本身对 Agg 选择 robust。主表 Table 1 用的是 max,所以换 sum 实际可以再涨一点。
6. Latent 词表大小 (Figure 4)
扫了 ( 即 PSID base):
- :在大部分数据集上反而掉点——latent token 预测本身会引入累计误差,分支太少分流效果不够;
- :稳定超过 base,两者接近;
- 三个数据集最优 不同(Instruments=4,其它=8),需要按数据集调。
实践含义:Latte 不是"加得越多越好",存在最优区间,必须在验证集上 sweep。
7. Latent Token 选择是否均匀(Appendix Table 10)
为验证理论分析里"latent token 大致均匀使用"的假设,作者统计 Games 上 时每个 latent token 被选为 dominant path 的概率:
| 0.1244 | 0.1253 | 0.1248 | 0.1243 | 0.1259 | 0.1254 | 0.1251 | 0.1248 |
理想均匀值 ,实测全部接近——说明 latent token 没有塌缩到某一个。
8. 进阶:把 Latent Token 绑定为归纳偏置(Section 6,多模态实验)
问题:能不能让 latent token 不只是抽象的"分支选择",而绑定到具体的语义结构?
实验设计:
- 数据集:Million Playlist Dataset (MPD),过滤掉缺 tag/metadata 的歌、playlist < 6 首的也去掉,8:1:1 切分;
- 三种模态:
playlist:歌曲共现训练 Word2Vec 拿协同信息;tag:类别特征(流派等);metadata:文本特征,预训练 text encoder 抽 embedding;
- 每种模态独立 k-means 聚 1024 类作为该模态的 SID token;
- Latent token 词表大小 = ,每个 latent token 绑定一种模态排列顺序。
结果(Table 5,Recall@10 / NDCG@10):
| Method | R@10 | N@10 |
|---|---|---|
| Fixed orders | ||
| playlist → tag → metadata | 0.1966 | 0.1266 |
| playlist → metadata → tag | 0.1972 | 0.1268 |
| tag → playlist → metadata | 0.1948 | 0.1255 |
| tag → metadata → playlist | 0.1939 | 0.1250 |
| metadata → playlist → tag | 0.1933 | 0.1247 |
| metadata → tag → playlist | 0.1942 | 0.1248 |
| Dynamic ordering (Latte) | ||
| Agg = max | 0.2060 | 0.1335 |
| Agg = sum | 0.2107 | 0.1353 |
关键观察(Figure 5,模型自己生成的 permutation 分布):
| Permutation | Frequency |
|---|---|
| playlist → metadata → tag | 20.81% |
| playlist → tag → metadata | 19.58% |
| tag → metadata → playlist | 18.00% |
| metadata → tag → playlist | 15.70% |
| tag → playlist → metadata | 13.89% |
| metadata → playlist → tag | 12.02% |
Takeaway:
- Latte 自主选出的高频 permutation(playlist 在前的两种)恰好就是固定顺序里效果最好的两种;
- 这意味着 latent token 可以数据驱动地自动发现最优 modality 顺序,省去人工启发式 / 暴力枚举;
- 这只是"把 latent token 当作归纳偏置载体"的一个例子,作者认为还能扩展到其它绑定方式(未来工作,或许可以试试重混排?)。
讨论
1. 语义相似的 item 为什么不应该有相关的生成概率?
a. 即使是语义相似的 item,用户对它们的相对偏好也可能完全相反。GR 模型的前缀绑定让这种反转无法被表达——这跟"个性化推荐"的本质冲突。
b. "语义相似"和"生成概率相关"是两件事。把相似 item 放在相近的 SID 上是合理设计,但让这种设计强制导致跨用户的概率高度相关就过头了。
2. 这个问题到底有多普遍?是不是只在边角情况下出现?
| Dataset | 树距离=2 的邻居数 | 树距离=4 的邻居数 | 至少有一个距离=2 邻居的测试比例 |
|---|---|---|---|
| Instruments | 6.29 | 142.02 | 83.98% |
| Scientific | 7.39 | 153.97 | 85.25% |
| Games | 6.98 | 179.41 | 84.17% |
超过 80% 的测试样本,其 target item 都至少有一个距离=2 的"耦合邻居"。也就是说,"前缀耦合"在实际推理中是普遍发生的现象,不是构造出来的 corner case。
3. Latent token 这个设计是必要的吗?是最优的吗?
“We do not claim that the latent token design in Latte is necessary or optimal.”
“We view Latte as an initial attempt rather than a final solution.”
4. Latte 在什么情况下会退化回 base model?
“不同 latent token 是不是只相当于给同一个 SID 前缀加了不同权重?如果是,那 Latte 不就退化成 base + reweighting 了吗?”
关键在于 P(prefix | x, ℓ_A) ≠ P(prefix | x, ℓ_B)——条件分布本身就不同,不只是权重不同。所以 latent token 给的是"完整的另一条生成路径",而不只是"同一条路径的不同权重"。
5. 推理开销大不大?是不是要做 |L| 次 beam search?
只做一次 beam search,只是序列长度多了一位(先生成 latent,再生成 SID)
6. Latte 会不会只是因为引入噪声而提升性能?
“如果是 latent 是靠引入噪声降低过拟合起到的作用,那一些其它正则化操作也应该能复现收益。”
作者实验发现:Dropout 和 Swap 不仅没有降低耦合度,反而往往让它更负(耦合更强)。只有 Latte 在两个维度上都同时改善:性能提升 + 耦合度降低。
反思
1. 生成式模型输出SID时会遇到义接近的Item被限制在相同概率空间内的情况,自回归生成Action时是否也会遇到类似的“表达能力受限于自回归模式”的问题?
在逐Item/Action自回归生成的过程中,前缀Token过长可能会导致共享前缀的信号占比过大,进而导致用户的个性信号无法有效表达,即被前缀信号主导塌缩成固定的输出模式。
但是这个问题与论文讨论的本质不太一样。论文问的是"output 端的前缀如何压缩 item 间的区分度",这里提出的新的问题是"input 端的前缀如何压缩 user 间的区分度"。共享前缀信号占比过大时,用户特异性是否会被稀释严重。











