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

From a Static Multi-Level Small Semantic Codebook to a Dynamic Single-Level Large Semantic Codebook for Generative Recommendation

Tianlu Xie, Xin Ku, Mingjie Sun, Yunhao Sha, Lixiang Wang, Peng Wang, Yiyu Wang, Wenjin Wu, Zhaojie Liu, Peng Jiang, Wen... · Kuaishou · arXiv 2608.21012 · 发表 2026-08-21
16 分钟阅读时长 6322字 5.00综合分 第 1 名08-25 Generative 日报
目录 · 6 节1问题与动机2方法详解3核心技术贡献4实验结果分析5局限与未来方向6工业实践意义
相关 5新颖 5实用 5证据 5时效 4
核心启示是把语义 ID 当作随流量变化的线上资产,而非一次性离线编码。单层语义 token 缩短自回归路径,协同 token 保留区分相似物品的能力,动态更新则用曝光权重抑制频繁改码造成的训练—服务漂移。社区 UGC 可按话题、作者和内容表征构造可更新码本,但必须设置 ID 版本、回滚和新帖冷启动策略。

1. 问题与动机

这篇论文针对工业生成式推荐中的两个具体问题:语义 ID 太长,以及静态码本会随流量和物品目录变化而失配。生成式推荐把每个 item 表示为离散 Semantic ID,再让模型自回归生成下一件物品。论文研究的线上系统原本使用三层 SID:前两层是残差量化得到的语义码,第三层是协同消歧码。每增加一层,就增加一次解码和 beam-search 路径;而且语义层级并不一定被充分使用。

作者对约 1.50B 条工业样本的统计揭示了结构性浪费:SID2 的全局词表利用率为 93.31%,但在每个活跃 SID1 条件下平均只使用 2.48%,中位数仅 1.68%,第 90 百分位也只有 5.96%。换句话说,第二个语义码在全局看起来很丰富,落到具体的第一层分支后却是稀疏的。与此同时,新物品持续进入,用户兴趣和曝光分布变化,固定历史窗口训练的码本中心会逐渐偏离当前流量。若频繁重分配 SID,又会让下游推荐模型的离散监督目标突然变化,造成训练不稳定。

论文的动机因此不是单纯追求更强的量化重构,而是重新权衡语义容量、解码长度和线上稳定性。作者提出把两个残差语义码压缩为一个更大的语义 token,只保留协同消歧 token,并在每日更新中让高曝光物品更稳定、低曝光和新近流量更能适应变化。

2. 方法详解

整体 SID 变成两个 token:SID1 是从大语义码本中选出的语义 token,SID2 是由稳定 item key 经过确定性哈希得到的协同消歧 token。原来的三 token 结构可以写成语义码1、语义码2、消歧码;新结构只需要语义码和消歧码。语义码本容量从两个较小的层级集中到一个大词表中,但不再引入额外的自回归位置。生成概率因此从三个条件概率因子减少为两个,缩短了从三步到两步的解码路径。

对每个 item 的 embedding 先做 L2 归一化,记为 x。语义 SID1 是 x 到大码本中心的最近邻。消歧 SID2 不参与语义重构,只用于把共享同一语义 token 的不同 item 分开。工业实现用 item 关联 key 的稳定哈希生成 SID2,所以同一 item 即使在后续码本更新中换了语义 SID1,也不会改变消歧 token。这种拆分把语义表达和 item 唯一性隔离开来。

初始码本使用曝光加权 k-means。原始每日曝光数 p 先压缩成 a=1+log10(max(p,1)),避免头部 item 的数量级优势完全支配量化。加权目标是最小化各 item 的权重乘以 embedding 到所属中心的平方距离;k-means++ 初始化也按权重乘距离平方的概率选择下一个中心。这样得到的中心更关注真实流量,同时不会把所有容量都给极少数超高曝光 item。

动态更新保存每个近期 item 的状态权重。若 item 在前一天和当天都出现,则按 w_t=gammaw_(t-1)+(1-gamma)a_t 更新;新 item 直接以当天权重初始化;当天缺席的 item 只做 gamma 衰减,低于阈值 epsilon 后从状态中移除。对每个旧码本中心,作者先用旧中心给当天 item 编码,形成参考分区,再以当前权重计算分区内的加权平均 embedding。新中心不是完全替换,而是 c_t=(1-alpha)c_(t-1)+alphac_bar_t 的指数移动平均;没有当天样本的中心保持不变。

最后重新分配 SID1 时,目标函数是到新中心的平方距离,加上在切换到不同中心时产生的 lambda*w_i 惩罚。高曝光 item 的权重越大,换码的代价越高;只有新中心带来的距离下降足够大才会触发迁移。这个稳定性锚点很关键,因为高曝光 item 的 SID 改变会同时改变大量训练样本的离散 target。论文每天更新一次码本并发布新的语义 assignment,SID2 规则保持不变。

作者还构建了不必每次都重训下游推荐器的码本筛选框架。第一类指标是重构相似度,包括均值、P10 和中位数;第二类是每层词表利用率和完整语义组的负载,报告 P95、最大负载和变异系数;第三类是完整 SID 冲突率,分别统计发生冲突的 SID 比例和涉及冲突的 item 比例;第四类是旧码本与新码本对同一批 embedding 的 item-level 变更率和 exposure-weighted 变更率。只有通过这些便宜的 codebook-level 检查,候选码本才进入下游生成式推荐训练。

实验使用 Amazon Reviews 2014 Beauty 和 KuaiRec 2.0 Big Matrix。Beauty 有 22,363 个用户、12,101 个 item 和 198,502 次交互;KuaiRec 有 7,176 个用户、10,728 个 item 和 12,530,806 次交互,覆盖 28 个观测日。两套数据都按时间排序,主要采用 leave-two-out;KuaiRec 另设固定日期的静态—动态对照,以避免每个用户最后一次行为发生在不同日期而混淆码本更新与测试边界。S3 的码本尺寸为 256、256、256;S2、PV-S2 和 Dynamic PV-S2 为 1024、512,其中最后一层是平衡的消歧码。下游比较覆盖 OneRec-V1、OneRec-V2、TIGER、RPG、SEATER 和 COBRA,OneRec 的名义规模从 0.1B 到 0.7B,所有成对实验固定数据切分、模型、优化设置和随机种子,只替换 SID artifact。

3. 核心技术贡献

第一,论文把语义容量从深度转向宽度。它用一个大语义词表替代两个残差层,直接减少自回归步数,也避免层级树中大量条件上不可达的组合。与此同时保留消歧码,使语义相近但必须区分的 item 不会全部碰撞。

第二,论文把流量非平稳性纳入 item tokenization。曝光不是只作为推荐模型的 feature,而是影响码本中心、状态记忆和换码惩罚的更新信号。时间衰减让旧流量逐渐退出,EMA 中心让中心平滑移动,exposure-weighted penalty 则限制高曝光 item 的离散 target 震荡。

第三,作者把码本评估从单一重构误差扩展为多维诊断。表示相似度高不代表 code usage 均衡,usage 均衡也不代表完整 SID 不冲突;静态质量好也不等于新旧版本稳定。将重构、利用率、负载、冲突和时间稳定性放在同一个筛选阶段,降低了每个候选码本都重训生成式推荐器的成本。

第四,方法的收益同时覆盖模型质量和 serving 成本。静态两级 SID 在多模型、多规模上改善 Recall/NDCG;动态更新在固定日期 KuaiRec 上进一步提高指标,同时只改变极少量 item 的语义 assignment;更短的 SID 还直接降低 decoder、LazyAR 和 MTP 三类架构的自回归计算。

4. 实验结果分析

4.1 公开数据与模型比较

KuaiRec 上的静态比较给出了同一推荐模型使用不同 SID 的直接对照。以 OneRec-V1 的七个规模平均值为例,S2 相对 S3 的 Recall@10 提升 8.8%,NDCG@10 提升 5.1%;PV-S2 相对 S3 的 Recall@10 提升 7.0%,NDCG@10 提升 4.8%。OneRec-V2 上,S2 的 Recall@10 提升 7.1%、NDCG@10 提升 3.8%,PV-S2 分别提升 6.9% 和 4.8%。两级方案还在表中每一个非 OneRec 模型上提升 Recall@10,但 S2 和 PV-S2 并非处处由同一版本占优,说明曝光权重会改变不同模型与指标的最优点。

KuaiRec Table 4 的一个具体对照是 TIGER:S3 的 Recall@10 为 0.1429±0.0019、NDCG@10 为 0.0860±0.0006;S2 提升到 0.1483±0.0012 和 0.0886±0.0023。Amazon Beauty 上,0.1B OneRec-V2 的 S3 Recall@10/NDCG@10 为 0.0476/0.0250,S2 为 0.0509/0.0266;0.3B 时,S3 为 0.0437/0.0228,S2 为 0.0503/0.0263。收益不是单纯来自更大的模型,而是来自目标 SID 更适合生成。

4.2 动态更新的固定日期实验

固定日期实验让静态 arm 用 7 月 12 日至 9 月 3 日的 C1 训练,动态 arm 用 8 月 9 日至 9 月 3 日流量把 C1 更新成 C2,并从匹配的静态 checkpoint warm-start;两者都在 9 月 4 日验证、9 月 5 日测试,验证和测试日期不参与码本拟合。跨 OneRec 多个尺度平均,Dynamic C2 相对 Static C1 让 OneRec-V1 Recall@10 提升 1.4%、NDCG@10 提升 7.0%,OneRec-V2 分别提升 2.7% 和 2.7%;SEATER 和 RPG 的平均 Recall@10 也分别提升 5.7% 和 2.8%。

变化率说明更新并不等于大规模换码。KuaiRec 的 C2 只改变 10,728 个 item 中的 46 个 SID1,item-level change rate 为 0.4288%;在第二阶段活跃 item 中为 0.6418%,按第二阶段 page view 加权为 0.4383%。中心位移均值为 0.004054、最大为 0.050005。也就是说,系统得到的收益来自少量但有针对性的分区调整,而不是让整个 item 词表频繁重排。

4.3 工业码本与线上服务

工业七日快照显示,Static S3 的两级语义重构相似度从 Day 1 的 0.802241 降到 Day 7 的 0.798868;Static S2 从 0.805676 降到 0.800899;Static PV-S2 从 0.821336 降到 0.814508。Dynamic PV-S2 从同样的 Day 1 值 0.821336 上升到 Day 7 的 0.826723,变化为 +0.005387,说明动态更新能抵抗静态码本随时间的漂移。论文结论中的另一种汇总口径将该工业动态重构收益报告为 1.50%。

线上实验把两级 SID 部署到生产流量的 2.5%,持续 5 天,与已部署的三级 SID baseline 对比,主消费指标提升 0.792%。服务端同时测量 decoder、LazyAR 和 MTP:估计的自回归 decoding FLOPs 降低 47.93%–48.70%,单卡 QPS 分别提升 47.0%、28.57% 和 33.3%。FLOPs 估算包含一次性的 cross-attention key/value 投影、beam 扩展后的 decoder 计算和词表投影,并将 KV cache 访问单独处理,因此不是只报一个理论 token 数比例。

4.4 关键消融与意外结果

最重要的消融是 S2 与 S3 的宽度—深度比较。S2 在多数公开模型和规模上更好,但 PV-S2 并非 uniformly dominate;不同模型对曝光加权的偏好不同,说明不能把 exposure weighting 当作无条件增益。固定日期动态实验中,TIGER 的 Static C1 Recall@10 只有 0.0092±0.0011,而 Dynamic C2 为 0.0532±0.0812,方差很大,提示某些模型在极稀疏或约束解码设置下对码本版本非常敏感,不能只看平均提升。

另一个有价值的观察是,全球 SID2 词表利用率很高并不代表每个 SID1 分支都有效;真正的工程瓶颈是条件稀疏和额外自回归位置。论文因此没有继续堆更多残差层,而是让语义容量集中到宽词表,同时用稳定消歧码守住 item identity。该设计对生成式推荐的可扩展性比单纯增加 Transformer 参数更直接。

5. 局限与未来方向

论文正文没有单列名为 Limitations 的章节,结论部分也没有给出一组独立的作者自述局限。因此,下面先区分可确认的实验边界与推断出的工程风险。作者明确展示的是两个公开数据集、一套 Kuaishou 工业码本和 2.5% 流量、五天的线上 A/B;这证明了方法的可行性,但不等于已证明在所有推荐场景、所有流量阶段和长期生态指标上都稳定有效。公共数据适合控制 SID 比较,却不包含完整生产 feature、preference-alignment 阶段和真实目录更新过程。

从方法依赖看,动态更新以 exposure 作为主要权重,可能把曝光分配偏差进一步写入语义码本。对于社区 UGC,热门作者、刷量内容或平台运营位的高曝光不一定等价于更高的语义代表性。论文用 log 压缩和换码惩罚降低头部支配,但没有报告公平性、长尾覆盖、内容多样性或异常流量干预下的结果。动态更新还需要对旧新 SID 做版本管理,并让下游模型在重新编码 target 后 warm-start 或重训;当 item 每小时大量新增时,每日更新是否足够、更新开销如何,正文没有展开。

另一个明显边界是动态码本的 assignment 稳定性与新 item 冷启动之间存在张力。高曝光旧 item 受到较大换码惩罚,新 item 初始权重较低,可能更容易落入语义上不够理想的中心;若给新 item 更强适应性,又可能增加码本漂移。未来应继续研究增量 item 的初始化、按内容类型或生命周期设置不同衰减、跨市场或跨语言共享码本,以及 codebook version 变化时下游模型的蒸馏和兼容训练。

6. 工业实践意义

对社区 UGC 搜索,最值得迁移的不是直接复制 1024、512 或每日更新这些数字,而是把 Semantic ID 当作一层可版本化的检索资产。可以先用帖子标题、正文短文本、作者、话题和实体 embedding 建立单层大语义码本,再用稳定的 post key 生成独立消歧 token。语义 token 负责把同义主题、相近事件和跨作者内容聚到可共享的空间;消歧 token 负责保留 exact post identity,避免完全依赖语义近邻。

上线前应先建立 codebook-level screening:每天或每小时计算重构相似度的均值、P10、中位数,词表利用率、簇负载 P95、完整 SID 冲突率,以及旧新版本的 item-level 和 exposure-weighted 变更率。对 UGC 还要加入作者集中度、主题覆盖、新帖命中率、违规内容簇聚集和长尾作者曝光。只有当这些指标都在安全阈值内,才把新 codebook 用于重新编码训练数据;推荐指标仍要在固定时间边界上做 Recall@K、NDCG@K 与 CTR 对照。

训练和服务应采用双版本兼容。保留上一版本语义码本和新版本码本,在 shadow 流量上同时生成 SID;高曝光内容优先维持旧码,新内容通过内容 embedding 分配到新码,再用 warm-start 继续训练生成式模型。服务端需要支持旧 SID 到新 SID 的映射、回滚和灰度发布,避免一次 codebook update 让大量线上缓存、索引或模型 target 同时失效。论文的 0.4288% 变更率可以作为稳定性参考,但不应直接作为其他业务的硬阈值。

对新帖和冷启动内容,可以在没有行为数据时只用内容 embedding 产生语义 token,等获得曝光后再纳入动态权重;协同消歧 token 必须使用不随码本变化的稳定 key。对过期内容,则用曝光权重衰减让其逐步退出维护状态,但保留历史版本以便复盘。这样既能让语义空间适应实时内容,又不会把每一次流量波动都写入生成目标。

最后,服务成本收益需要用真实 profiling 验证。论文在 decoder、LazyAR、MTP 三类架构上都观察到明显 QPS 增益,说明减少一层自回归 token 的价值不只是理论 FLOPs;但社区搜索还要把候选规模、KV cache、GPU 显存、索引刷新和 query 侧延迟一起纳入 P50/P99 SLA。建议先以小流量 shadow 验证四组实验:原三级 SID、静态两级 SID、动态两级 SID、动态两级 SID 加消歧码;同时观察 nDCG、CTR、新帖召回、长尾覆盖、作者集中度和回滚成功率。若动态更新只改善离线重构而没有改善线上排序,应优先检查 target 重编码、训练—服务版本一致性和曝光偏差,而不是继续扩大码本。

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