SIDE 在 Prefix-Ngram SID 点特征基础上,通过 Fusion AutoEncoder 融合 CF 信号改进 SID 生成质量,并新增 SIDE-Seq(历史序列 SID 嵌入)和 SIDE-Cross(多粒度 SID 前缀匹配计数)两类特征,将语义 ID 覆盖到排序模型的序列建模和交叉特征两大维度,在 Meta Instagram Feed 和 Ads 生产系统上实现整体正向收益,冷启动场景收益尤为显著。
论文:SIDE: Semantic ID Embedding for Effective Learning from Sequences
机构:Meta,Instagram Ranking 团队
与前作关系:在 Prefix-Ngram SID(arXiv 2504.02137)基础上,将 SID 扩展到序列历史特征和交叉计数特征,覆盖排序全链路
1.1 Prefix-Ngram SID 的局限:只是点特征
前作 Prefix-Ngram SID 解决了候选 item 侧的 ID 表征问题——把当前候选广告的随机哈希 ID 替换为语义化的 Prefix-Ngram 嵌入,并在 Meta 生产中验证了有效性。但推荐排序模型的特征空间远不止于此:
问题 1:序列特征里还在用随机哈希 ID
现代排序模型(如 Target Attention、SIM、DIEN 等)的核心组件是用户历史行为序列:把用户过去点击/购买的 item 序列用来预测当前候选的相关性。
但这些历史序列里的 item ID 用的还是随机哈希 ID——同样面临冷启动问题:一个尾部 item 在历史序列里出现极少,对应的嵌入噪声大,Target Attention 的计算质量就差。
问题 2:交叉特征缺乏语义信号
排序模型另一类重要特征是交叉特征:例如"用户历史上看过多少次与候选广告属于同一类别的广告"——这类计数特征传统上用随机哈希 ID 统计类别。
如果改用 SID 的层次化前缀作为类别标签,统计的粒度会更加语义化,同类广告自然聚集,计数特征的信噪比更高。
1.2 SIDE 的核心贡献:让 SID 进入序列与交叉
SIDE(Semantic ID Embedding)在 Prefix-Ngram SID 基础上,提出两个新的特征构造方法,将 SID 扩展到排序模型的序列建模和交叉特征两个维度:
SIDE 扩展的三类特征(在 Prefix-Ngram 点特征基础上)
Prefix-Ngram 点特征
(前作已有)
SID 序列特征(新)
"用户看过哪些 SID"
历史序列 SID 的
交叉计数特征(新)
2.1 SID 生成回顾:Fusion AutoEncoder
SIDE 在 Prefix-Ngram SID 的 RQ-VAE 基础上,引入 Fusion AutoEncoder 改进 SID 的生成质量。
Fusion AutoEncoder 的改进点在于:传统 RQ-VAE 只重建内容嵌入(语义向量),导致 SID 对用户行为信号(谁喜欢这个 item)不敏感。SIDE 在 Decoder 端同时重建内容嵌入和 CF 嵌入:
- $\mathbf{e}_{\text{content}}$:多模态内容模型输出的语义嵌入(图文视频融合)
- $\mathbf{e}_{\text{CF}}$:协同过滤嵌入,来自用户-物品交互矩阵的矩阵分解或图神经网络
- $\hat{\mathbf{e}}_{\text{content}}, \hat{\mathbf{e}}_{\text{CF}}$:Decoder 基于 SID 的重建输出
- $\lambda$:平衡两种重建损失的权重超参数
- 通过同时拟合两种信号,SID 量化空间同时捕获"内容语义相似"和"用户行为相似"两个维度
考虑两个 item:
- Item A:外观是"白色运动鞋"(内容相似),但主要被 25 岁男性购买
- Item B:外观是"白色运动鞋"(内容相似),但主要被 50 岁女性购买
纯内容 SID(前作):A 和 B 内容几乎一样 → SID 相同 → 这两类用户的行为信号被混淆,造成"语义相同但用户群不同"的 confusion。
Fusion SID(SIDE):A 的 CF 嵌入(男性用户群)和 B 的 CF 嵌入(女性用户群)差异明显 → Decoder 需要同时重建两者 → 量化时 A 和 B 被分配到不同的 SID(或不同的后几层 code) → 用户行为差异被保留在 SID 中。
这使得序列特征中的 SID 能更好地反映"哪类用户喜欢这类 item",而不仅仅是"这个 item 外观是什么"。
2.3 序列历史特征:SIDE-Seq
这是 SIDE 最核心的贡献之一。思路是把用户历史行为序列中每个 item 的随机哈希 ID 替换为 SID 的 Prefix-Ngram 嵌入。
具体来说,设用户历史行为序列为 $\mathcal{H} = \{h_1, h_2, \ldots, h_T\}$,候选 item 为 $q$:
传统方案(随机哈希 ID):
其中 $\mathbf{v}_q, \mathbf{v}_{h_t}$ 均从随机哈希 ID 嵌入表查得,两个语义相似 item 的嵌入没有任何关联。
SIDE 方案(SID 嵌入):
- $\mathbf{v}_x^{\mathrm{SID}}$:item $x$ 的 SID Prefix-Ngram 嵌入($L$ 层前缀嵌入求和)
- $(c_1^x, \ldots, c_L^x)$:item $x$ 的 Semantic ID,由 Fusion AutoEncoder 离线生成
- 候选 item $q$ 和历史 item $h_t$ 使用同一套 SID 嵌入表,因此 attention score 直接反映语义相似度
假设候选广告是"耐克红色跑步鞋",SID 前缀 $(c_1=47, c_2=132)$。
用户历史序列:
- $h_1$:耐克蓝色跑步鞋,SID 前缀 $(47, 132, 15,\ldots)$ → 与候选共享前两层前缀
- $h_2$:阿迪达斯跑步鞋,SID 前缀 $(47, 203, 8,\ldots)$ → 只共享第一层(同属"运动鞋")
- $h_3$:女装连衣裙,SID 前缀 $(12, 56, 3,\ldots)$ → 完全不共享前缀
随机哈希 ID 方案:$h_1, h_2, h_3$ 的嵌入与候选无语义关联,attention 权重几乎随机。
SIDE 方案:$h_1$ 的 SID 嵌入与候选共享 $(47)$ 和 $(47,132)$ 两个前缀的嵌入向量,内积自然更高 → attention 权重更高 → 模型正确聚焦于"用户历史中与候选语义最相关的行为"。
对于冷启动 item(历史极少的长尾广告),SID 嵌入因为共享前缀而质量更好,attention 计算不再退化为噪声。
2.4 交叉计数特征:SIDE-Cross
除序列特征外,SIDE 还将 SID 用于构造交叉计数特征。
交叉计数特征的构造逻辑:对于候选 item $q$(SID $= (c_1^q, c_2^q, \ldots)$)和用户历史序列 $\mathcal{H}$,统计历史序列中与 $q$ 在不同 SID 前缀粒度上"匹配"的 item 数量:
- $\text{cnt}_l(q, \mathcal{H})$:历史序列中与候选 item $q$ 在前 $l$ 层 SID 完全匹配的 item 个数
- $l = 1$:粗粒度统计(大类匹配数,如"运动鞋"类的历史行为总数)
- $l = 2$:中等粒度(子类匹配数,如"耐克跑步鞋"类)
- $l = 3,4,5$:细粒度(越来越接近 item 唯一级别的匹配数)
- 最终将 $l = 1 \sim L$ 的计数拼接为多粒度交叉特征向量,输入排序网络
候选广告:耐克 Air Max 跑步鞋,SID = $(47, 132, 8, 5, 21)$
用户最近 100 条历史行为中:
- 30 条与候选匹配 $l=1$(都是"运动鞋"大类,$c_1=47$)
- 12 条与候选匹配 $l=2$(都是"耐克跑步鞋"中类,$(c_1=47, c_2=132)$)
- 3 条与候选匹配 $l=3$(细粒度,$(47, 132, 8)$)
- 1 条与候选匹配 $l=4, l=5$(几乎就是同一款鞋)
则 SIDE-Cross 交叉特征 = $[30, 12, 3, 1, 1]$(归一化后),模型直接看到"用户对这个层次的 item 历史兴趣强度"。
与传统交叉特征的对比:传统方案用随机哈希 ID 计算交叉,只能统计"完全相同 item 的历史次数"(很少),无法统计"同类 item 的历史次数"。SIDE-Cross 通过多粒度前缀匹配,即使候选是全新广告,也能从粗粒度统计中看到用户的类别兴趣,有效解决冷启动。
2.5 FSQ:更简洁的量化方案
SIDE 探索了 FSQ(Finite Scalar Quantization)作为 RQ-VAE 的替代量化方案。FSQ 的核心思路是:不维护显式 codebook,而是直接对嵌入向量的每个维度做离散化。
FSQ 的量化步骤:
- 将内容嵌入通过线性层投影到 $d$ 维
- 对每个维度 $j$,用 $\tanh$ 压缩到 $(-1, 1)$ 后做四舍五入到 $L_j$ 个离散值(如 $L_j = 8$ 即取 $\{-1, -5/7, -3/7, -1/7, 1/7, 3/7, 5/7, 1\}$ 的最近值)
- 总码本大小 $= \prod_j L_j$,通过选择 $d$ 和 $L_j$ 控制总 code 数量
- codebook collapse:RQ-VAE 需要 FLOPs 正则化来避免 collapse;FSQ 每个维度独立离散化,天然无 collapse 问题
- 训练稳定性:FSQ 梯度估计更简单(STE 直通估计器),收敛更稳定
- 灵活性:FSQ 通过调整维度数 $d$ 和每维离散值 $L_j$ 控制码本大小,比 RQ-VAE 的 $K \times L$ 设计更灵活
- 语义保真度:实验表明两者在下游任务上性能相近,FSQ 在工程上更简洁
3.1 不同特征类型的消融(离线 NE 指标)
| 方案 | 新增特征类型 | NE 提升(相对基线) |
|---|---|---|
| 基线(随机哈希 ID) | — | 0 |
| + Prefix-Ngram 点特征(前作) | 候选 item 的 SID 嵌入 | -0.28% |
| + SIDE-Seq(无 Target Attn) | 序列中 item 的 SID 嵌入 | 小幅提升 |
| + SIDE-Seq(有 Target Attn) | 序列 SID + Target Attention | 显著提升 |
| + SIDE-Cross | 多粒度交叉计数特征 | 额外提升 |
| 全量 SIDE(Seq + Cross) | 序列 + 交叉全覆盖 | 最优 |
3.2 冷启动 item 的专项收益
SIDE 在冷启动场景的收益比整体更显著:
- 新 item(上线不足 N 天)的 NE 提升明显高于整体均值
- 尾部 item(历史展示极少)的 NE 提升也明显高于整体
- SIDE-Cross 交叉特征在冷启动场景贡献尤其大——即使是全新 item,粗粒度 SID 前缀匹配仍能统计出用户的大类兴趣
3.3 FSQ vs RQ-VAE 量化方案对比
| 量化方案 | 训练稳定性 | codebook 利用率 | 下游 NE | 工程复杂度 |
|---|---|---|---|---|
| RQ-VAE(无 FLOPs 正则) | 较差(易 collapse) | 低 | 次优 | 需要额外正则化 |
| RQ-VAE(有 FLOPs 正则) | 较好 | 高 | 较好 | 有额外超参 |
| FSQ | 最稳定 | 天然均匀 | 与 RQ-VAE 相近 | 最简洁 |
3.4 在线 A/B 测试
- SIDE 全量特征(Seq + Cross)整体指标正向提升(具体数值未公开,论文描述为"significant online gains")
- 冷启动 item 的在线收益明显高于整体,与离线实验结论一致
- 已在 Meta Instagram Feed Ranking 和 Instagram Ads Ranking 两个场景生产部署
SIDE 在 Prefix-Ngram SID 点特征基础上,通过 Fusion AutoEncoder 融合 CF 信号改进 SID 生成质量,并新增 SIDE-Seq(历史序列 SID 嵌入)和 SIDE-Cross(多粒度 SID 前缀匹配计数)两类特征,将语义 ID 覆盖到排序模型的序列建模和交叉特征两大维度,在 Meta Instagram Feed 和 Ads 生产系统上实现整体正向收益,冷启动场景收益尤为显著。
✅ 主要亮点
- Fusion AutoEncoder:将 CF 信号融入 SID 生成,使 SID 同时捕获内容语义和用户行为偏好
- SIDE-Seq 与 Target Attention 天然契合:语义相似历史 item 自动获得更高注意力权重
- SIDE-Cross 多粒度交叉特征:即使是全新冷启动 item,粗粒度前缀仍能统计出用户大类兴趣
- FSQ 量化方案:无 codebook collapse 问题,工程更简洁,性能与 RQ-VAE 相近
- 覆盖排序全链路(点特征 + 序列特征 + 交叉特征),是 SID 在排序侧应用的最完整方案
⚠️ 局限与注意
- 在线 A/B 具体数字未公开,外部难以判断量级
- Fusion AutoEncoder 需要维护额外的 CF 嵌入训练流水线,工程成本增加
- SIDE-Cross 计算需要对历史序列做前缀匹配,实时场景下需要高效实现(预计算或近似)
- FSQ 的层次性不如 RQ-VAE 直观,对于需要明确"第 1 层代表大类、第 2 层代表子类"的应用场景,FSQ 的可解释性较差