← 返回论文列表
💜 Meta Instagram · SIDE · 排序全栈

SIDE:Semantic ID 扩展到序列与交叉特征,覆盖 Instagram 排序全链路

SIDE: Semantic ID Embedding for Effective Learning from Sequences

作者
Meta Instagram Ranking 团队
年份
2025
来源
arXiv 2506.16698
核心成果
序列+交叉特征覆盖全排序栈 · 冷启动显著改善 · 生产验证
💬
一句话总结
SIDE 在 Prefix-Ngram SID 点特征基础上,通过 Fusion AutoEncoder 融合 CF 信号改进 SID 生成质量,并新增 SIDE-Seq(历史序列 SID 嵌入)和 SIDE-Cross(多粒度 SID 前缀匹配计数)两类特征,将语义 ID 覆盖到排序模型的序列建模和交叉特征两大维度,在 Meta Instagram Feed 和 Ads 生产系统上实现整体正向收益,冷启动场景收益尤为显著。
🎯
§1 背景与动机

论文:SIDE: Semantic ID Embedding for Effective Learning from Sequences

机构:Meta,Instagram Ranking 团队

链接:arxiv.org/abs/2506.16698

与前作关系:在 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 点特征基础上)

① 候选 item 的
Prefix-Ngram 点特征
(前作已有)
+
② 用户历史序列的
SID 序列特征(新)
"用户看过哪些 SID"
+
③ 候选 item SID 与
历史序列 SID 的
交叉计数特征(新)
为什么序列特征对 SID 的收益更大?研究发现,用 SID 替换序列里的随机哈希 ID 后,Target Attention 的效果显著提升,而对于没有 Target Attention 的简单模型提升较小。这说明:SID 的层次化语义信息特别适合注意力机制——注意力在计算相似度时,语义相似的 item(共享前缀)自然会有更高的注意力权重,而随机哈希 ID 完全无法做到这一点。
⚙️
§2 方法详解

2.1 SID 生成回顾:Fusion AutoEncoder

SIDE 在 Prefix-Ngram SID 的 RQ-VAE 基础上,引入 Fusion AutoEncoder 改进 SID 的生成质量。

Figure 1: Fusion AutoEncoder 架构
Figure 1(论文原图):Fusion AutoEncoder 架构。在标准 RQ-VAE 基础上,Decoder 端融合 CF(Collaborative Filtering)嵌入作为辅助重建目标,使量化得到的 SID 既保留多模态语义,又包含协同过滤信号。

Fusion AutoEncoder 的改进点在于:传统 RQ-VAE 只重建内容嵌入(语义向量),导致 SID 对用户行为信号(谁喜欢这个 item)不敏感。SIDE 在 Decoder 端同时重建内容嵌入和 CF 嵌入

$$\mathcal{L}_{\text{Fusion}} = \underbrace{\|\mathbf{e}_{\text{content}} - \hat{\mathbf{e}}_{\text{content}}\|_2^2}_{\text{内容重建}} + \lambda \underbrace{\|\mathbf{e}_{\text{CF}} - \hat{\mathbf{e}}_{\text{CF}}\|_2^2}_{\text{CF 嵌入重建}}$$
符号说明
  • $\mathbf{e}_{\text{content}}$:多模态内容模型输出的语义嵌入(图文视频融合)
  • $\mathbf{e}_{\text{CF}}$:协同过滤嵌入,来自用户-物品交互矩阵的矩阵分解或图神经网络
  • $\hat{\mathbf{e}}_{\text{content}}, \hat{\mathbf{e}}_{\text{CF}}$:Decoder 基于 SID 的重建输出
  • $\lambda$:平衡两种重建损失的权重超参数
  • 通过同时拟合两种信号,SID 量化空间同时捕获"内容语义相似"和"用户行为相似"两个维度
💡 举例:Fusion AutoEncoder 的直觉

考虑两个 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 嵌入。

Figure 2: SIDE 序列特征示意
Figure 2(论文原图):SIDE 序列特征(SIDE-Seq)示意。历史序列中每个 item 从查随机哈希 ID 改为查 SID Prefix-Ngram 嵌入(求和),与候选 item 的 SID 嵌入做 Target Attention。语义相似的历史 item 自然得到更高的注意力权重。

具体来说,设用户历史行为序列为 $\mathcal{H} = \{h_1, h_2, \ldots, h_T\}$,候选 item 为 $q$:

传统方案(随机哈希 ID):

$$\text{score}(q, h_t) = \mathrm{Softmax}\bigl(\mathbf{v}_q^{\top} \mathbf{v}_{h_t}\bigr)$$

其中 $\mathbf{v}_q, \mathbf{v}_{h_t}$ 均从随机哈希 ID 嵌入表查得,两个语义相似 item 的嵌入没有任何关联。

SIDE 方案(SID 嵌入):

$$\mathbf{v}_x^{\mathrm{SID}} = \sum_{l=1}^{L} \text{Lookup}_l\bigl((c_1^x, \ldots, c_l^x)\bigr), \quad x \in \{q\} \cup \mathcal{H}$$
符号说明
  • $\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 直接反映语义相似度
💡 举例:SIDE-Seq 如何改善 Target Attention

假设候选广告是"耐克红色跑步鞋",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 用于构造交叉计数特征

Figure 3: 完整排序模型架构
Figure 3(论文原图):接入完整排序模型的 SIDE 特征架构。三类 SID 特征(点特征 + 序列特征 + 交叉特征)拼接后输入排序网络,覆盖了排序模型的核心特征空间。

交叉计数特征的构造逻辑:对于候选 item $q$(SID $= (c_1^q, c_2^q, \ldots)$)和用户历史序列 $\mathcal{H}$,统计历史序列中与 $q$ 在不同 SID 前缀粒度上"匹配"的 item 数量:

$$\text{cnt}_l(q, \mathcal{H}) = \left|\bigl\{h \in \mathcal{H} : (c_1^h, \ldots, c_l^h) = (c_1^q, \ldots, c_l^q)\bigr\}\right|$$
符号说明
  • $\text{cnt}_l(q, \mathcal{H})$:历史序列中与候选 item $q$ 在前 $l$ 层 SID 完全匹配的 item 个数
  • $l = 1$:粗粒度统计(大类匹配数,如"运动鞋"类的历史行为总数)
  • $l = 2$:中等粒度(子类匹配数,如"耐克跑步鞋"类)
  • $l = 3,4,5$:细粒度(越来越接近 item 唯一级别的匹配数)
  • 最终将 $l = 1 \sim L$ 的计数拼接为多粒度交叉特征向量,输入排序网络
💡 举例:SIDE-Cross 多粒度交叉特征

候选广告:耐克 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:更简洁的量化方案

Figure 4: FSQ vs RQ-VAE 对比
Figure 4(论文原图):FSQ(Finite Scalar Quantization)与 RQ-VAE 对比。FSQ 通过对每个维度独立进行离散化,无需显式 codebook,避免了 codebook collapse,训练更稳定。

SIDE 探索了 FSQ(Finite Scalar Quantization)作为 RQ-VAE 的替代量化方案。FSQ 的核心思路是:不维护显式 codebook,而是直接对嵌入向量的每个维度做离散化。

FSQ 的量化步骤:

  1. 将内容嵌入通过线性层投影到 $d$ 维
  2. 对每个维度 $j$,用 $\tanh$ 压缩到 $(-1, 1)$ 后做四舍五入到 $L_j$ 个离散值(如 $L_j = 8$ 即取 $\{-1, -5/7, -3/7, -1/7, 1/7, 3/7, 5/7, 1\}$ 的最近值)
  3. 总码本大小 $= \prod_j L_j$,通过选择 $d$ 和 $L_j$ 控制总 code 数量
FSQ vs RQ-VAE 对比:
  • codebook collapse:RQ-VAE 需要 FLOPs 正则化来避免 collapse;FSQ 每个维度独立离散化,天然无 collapse 问题
  • 训练稳定性:FSQ 梯度估计更简单(STE 直通估计器),收敛更稳定
  • 灵活性:FSQ 通过调整维度数 $d$ 和每维离散值 $L_j$ 控制码本大小,比 RQ-VAE 的 $K \times L$ 设计更灵活
  • 语义保真度:实验表明两者在下游任务上性能相近,FSQ 在工程上更简洁
📊
§3 实验结果

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)序列 + 交叉全覆盖最优
关键消融发现:SIDE-Seq 的收益在有 Target Attention 的模型上显著大于无 Target Attention 的模型。这验证了核心假设:SID 的语义相似性与注意力机制天然契合——语义相似历史 item 自动获得更高 attention 权重,而随机哈希 ID 完全无法做到这点。

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 测试

Meta Instagram 在线 A/B 测试结果:
  • SIDE 全量特征(Seq + Cross)整体指标正向提升(具体数值未公开,论文描述为"significant online gains")
  • 冷启动 item 的在线收益明显高于整体,与离线实验结论一致
  • 已在 Meta Instagram Feed Ranking 和 Instagram Ads Ranking 两个场景生产部署
💬
§4 一句话总结
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 的可解释性较差