AiPaper
论文状态:已完成

Enhancing Embedding Representation Stability in Recommendation Systems with Semantic ID

发表:2025/04/03
原文链接PDF 下载
价格:0.10
价格:0.10
已有 1 人读过
本分析由 AI 生成,可能不完全准确,请以原文为准。

TL;DR 精炼摘要

随着在线内容的爆炸性增长,推荐系统面临ID模型的挑战。本文提出一种名为语义ID前缀N-gram的新参数化技术,通过基于内容的聚类方法显著提升嵌入稳定性,优化了ID模型的性能,克服了共享嵌入导致的数据污染问题。

摘要

The exponential growth of online content has posed significant challenges to ID-based models in industrial recommendation systems, ranging from extremely high cardinality and dynamically growing ID space, to highly skewed engagement distributions, to prediction instability as a result of natural id life cycles (e.g, the birth of new IDs and retirement of old IDs). To address these issues, many systems rely on random hashing to handle the id space and control the corresponding model parameters (i.e embedding table). However, this approach introduces data pollution from multiple ids sharing the same embedding, leading to degraded model performance and embedding representation instability. This paper examines these challenges and introduces Semantic ID prefix ngram, a novel token parameterization technique that significantly improves the performance of the original Semantic ID. Semantic ID prefix ngram creates semantically meaningful collisions by hierarchically clustering items based on their content embeddings, as opposed to random assignments. Through extensive experimentation, we demonstrate that Semantic ID prefix ngram not only addresses embedding instability but also significantly improves tail id modeling, reduces overfitting, and mitigates representation shifts. We further highlight the advantages of Semantic ID prefix ngram in attention-based models that contextualize user histories, showing substantial performance improvements. We also report our experience of integrating Semantic ID into Meta production Ads Ranking system, leading to notable performance gains and enhanced prediction stability in live deployments.

思维导图

论文精读

中文精读

1. 论文基本信息

1.1. 标题

增强推荐系统中基于语义 ID 的嵌入表示稳定性 (Enhancing Embedding Representation Stability in Recommendation Systems with Semantic ID)

1.2. 作者

Carolina Zheng ,1^ { * , 1 } (哥伦比亚大学), Minhui Huang ^ \dagger, Dmitrii Pedchenko ^ \dagger, Kaushik Rangadurai ^ \dagger, Siy Wan ^ \dagger, Gaby Nahu ^ \dagger, J Yang ^ \dagger, Yan Liu ^ \dagger, Zutian Luo ^ \dagger, Xiaohan Wei ^ \dagger, Dinesh Ramasamy ^ \dagger, Jiyan Yang ^ \dagger, Yiping H^n\hat { \mathbf { H } } \cong \mathbf { n } ^ { \dag }, Lin Yang ^ \dagger, Hangjun ×u\mathbf { \times } \mathbf { u } ^ { \dagger }, Rong Jin\mathsf { J i n } ^ { \dagger }, Shuang Yang ^ \dagger (Meta AI) ^ * 表示通讯作者,^ \dagger 表示 Meta AI 部门的作者,1^ 1 表示该工作在 Meta 2024 年实习期间完成。

1.3. 发表期刊/会议

预印本 (arXiv preprint)

1.4. 发表年份

2025年 (2025-04-02T21:28:38.000Z)

1.5. 摘要

在线内容的爆炸式增长给工业推荐系统中的基于 ID 的模型带来了严峻挑战,包括极高基数 (extremely high cardinality)、动态增长的 ID 空间 (dynamically growing ID space)、高度倾斜的参与度分布 (highly skewed engagement distributions) 以及由于自然 ID 生命周期(例如,新 ID 的诞生和旧 ID 的淘汰)导致的预测不稳定性 (prediction instability)。为了解决这些问题,许多系统依赖随机哈希 (random hashing) 来处理 ID 空间并控制相应的模型参数(即嵌入表 (embedding table))。然而,这种方法引入了由于多个 ID 共享相同嵌入而导致的数据污染 (data pollution),从而导致模型性能下降和嵌入表示不稳定性 (embedding representation instability)。

本文研究了这些挑战,并引入了语义 ID 前缀 N-gram (Semantic ID prefix ngram),这是一种新颖的词元参数化 (token parameterization) 技术,显著提升了原始语义 ID 的性能。语义 ID 前缀 N-gram 通过基于内容嵌入对项目进行分层聚类 (hierarchically clustering),从而创建了语义上有意义的碰撞 (semantically meaningful collisions),而不是随机分配。通过广泛的实验,我们证明了语义 ID 前缀 N-gram 不仅解决了嵌入不稳定性问题,还显著改善了长尾 ID 建模 (tail id modeling)、减少了过拟合 (overfitting) 并缓解了表示漂移 (representation shifts)。我们进一步强调了语义 ID 前缀 N-gram 在上下文感知用户历史 (contextualize user histories) 的注意力模型 (attention-based models) 中的优势,展示了显著的性能提升。我们还报告了将语义 ID 集成到 Meta 生产广告排序系统 (Meta production Ads Ranking system) 的经验,带来了显著的性能提升和在线部署中的预测稳定性增强。

1.6. 原文链接

原文链接: https://arxiv.org/abs/2504.02137v1 PDF 链接: https://arxiv.org/pdf/2504.02137v1.pdf

2. 整体概括

2.1. 研究背景与动机

推荐系统在处理海量在线内容时面临着一系列严峻的挑战,尤其是在工业规模的应用中,基于项目 ID 的模型存在固有缺陷:

  • 项目基数极高 (Extremely High Item Cardinality): 在线平台上的项目(如商品、广告、视频)数量庞大且持续增长,导致直接为每个 ID 分配独立嵌入不可行。

  • ID 空间动态变化 (Dynamically Growing ID Space): 新项目不断涌现,旧项目不断淘汰,使得 ID 空间处于持续漂移 (ID drifting) 状态。

  • 参与度分布高度倾斜 (Highly Skewed Engagement Distributions): 少数“头部 (head)”项目占据了绝大部分用户互动,而大量“长尾 (tail)”项目获得的曝光和互动极少,导致长尾项目难以学到高质量的嵌入表示。

  • 预测不稳定性 (Prediction Instability): 由于 ID 生命周期(新旧 ID 交替)以及随机哈希引入的冲突,模型的嵌入表示会随时间发生漂移,导致预测结果不稳定。

    现有解决方案及其局限性: 广泛采用的随机哈希 (random hashing) 方法通过将不同 ID 映射到相同的嵌入来控制嵌入表大小。然而,这种方法的随机冲突 (random collisions) 会导致:

  • 数据污染 (Data Pollution): 不相关的项目共享同一嵌入,导致梯度更新相互矛盾,损害嵌入质量。

  • 模型性能下降 (Degraded Model Performance): 由于污染,模型难以学习到准确的表示。

  • 嵌入表示不稳定性 (Embedding Representation Instability): 随机冲突和 ID 漂移共同导致嵌入表示随时间不稳定。

    论文的切入点或创新思路: 针对上述挑战,本文提出了一种基于语义 ID (Semantic ID) 的方法。其核心思想是,不随机地分配共享嵌入,而是基于项目的语义相似性 (semantic similarity) 进行分层聚类,从而创建语义上有意义的冲突 (semantically meaningful collisions)。这样可以确保相似的项目共享或影响彼此的嵌入学习,从而提高表示的稳定性、泛化能力,并更好地支持长尾项目建模。

2.2. 核心贡献/主要发现

本文的主要贡献体现在以下几个方面:

  • 提出并验证 Semantic ID prefix-ngram 引入了一种新颖的词元参数化技术 Semantic ID prefix-ngram,它能够有效利用语义 ID 的分层聚类特性。通过广泛实验证明,该方法相比原始语义 ID 显著提升了推荐系统的性能。
  • 深化对语义 ID 稳定性的理解: 通过在 Meta 生产广告排序模型的简化版本上进行实验,深入分析了语义 ID 如何改善嵌入表示稳定性,并缓解由 ID 基数、印象倾斜和 ID 漂移引起的问题。
  • 解决长尾 ID 建模与过拟合问题: 实验结果表明,Semantic ID prefix-ngram 有效地改善了长尾项目 (tail items) 的建模,减少了模型过拟合,并缓解了表示漂移 (representation shifts)。语义 ID 尤其能从语义上相似的头部项目 (head items) 传递知识给长尾项目和新项目 (new cold start items)。
  • 在上下文感知模型中的优势: 证明了语义 ID 在上下文感知用户历史的注意力模型(如 Transformer 和 PMA)中带来了显著的性能提升,因为它使得模型能够更有效地关注高信号词元。
  • 成功生产化与实际效益: 详细描述了语义 ID 成功集成到 Meta 生产广告排序系统中的经验,实现了 0.15% 的线上性能提升,并且显著增强了预测稳定性,减少了 A/A 方差 (A/A variance),这对广告主信任和最终排序稳定性至关重要。

3. 预备知识与相关工作

3.1. 基础概念

3.1.1. 推荐系统 (Recommendation Systems)

概念定义: 推荐系统是一种信息过滤系统,旨在预测用户对物品(如电影、商品、新闻、广告等)的兴趣或偏好,并向用户推荐他们可能喜欢或需要的物品。其核心目标是帮助用户在海量信息中发现有价值的内容,同时提升平台的用户参与度和商业价值。

3.1.2. 嵌入 (Embeddings)

概念定义: 在机器学习中,嵌入 (embedding) 是一种将高维稀疏数据(如单词、用户 ID、项目 ID 等离散类别特征)映射到低维连续向量空间的技术。这些向量能够捕获原始数据点之间的语义和结构关系,使得相似的物品或用户在嵌入空间中距离更近。嵌入是深度学习推荐模型处理类别特征的关键组成部分。

3.1.3. 深度学习推荐模型 (Deep Learning Recommendation Model, DLRM)

概念定义: DLRM (Deep Learning Recommendation Model) 是一种广泛部署的深度学习推荐模型架构,由 Meta (原 Facebook) 提出。它旨在处理大规模、高稀疏性的推荐数据,并结合了类别特征嵌入 (categorical feature embeddings) 和数值特征 (dense features) 的处理能力。DLRM 的核心思想是将稀疏特征转换为稠密嵌入,然后通过交互层 (interaction layer) 捕捉不同特征之间的二阶或高阶交互,最后通过多层感知机 (MLP) 预测用户行为(如点击、购买等)。

3.1.4. 随机哈希 (Random Hashing)

概念定义: 随机哈希 (random hashing) 是一种处理高基数 (high cardinality) 类别特征的常用技术,尤其当特征的唯一值数量远超模型可承受的嵌入表大小时。它通过一个哈希函数将原始的类别 ID 映射到一个固定大小的索引范围(即嵌入表的行索引)。由于哈希函数的性质,不同的原始 ID 有可能被映射到相同的索引,这称为哈希冲突 (hash collision)。在推荐系统中,随机哈希的优点是内存效率高,不需要维护一个巨大的 ID 到索引的映射表,但缺点是随机冲突会导致不相关的项目共享嵌入,引入数据污染。

3.1.5. 残差向量量化变分自编码器 (Residual Vector Quantized Variational Autoencoder, RQ-VAE)

概念定义: RQ-VAE (Residual Vector Quantized Variational Autoencoder) 是一种用于向量量化 (vector quantization) 的深度生成模型。它结合了变分自编码器 (VAE) 的生成能力和向量量化 (VQ) 的离散表示能力,并通过残差 (residual) 机制实现了多层、分层的量化。

  • 变分自编码器 (VAE): 一种生成模型,旨在学习数据分布的低维潜在表示。它由编码器 (encoder) 和解码器 (decoder) 组成,编码器将输入数据映射到潜在空间中的分布,解码器则从潜在空间中采样并重构原始数据。
  • 向量量化 (VQ): 一种将连续向量映射到离散“码本 (codebook)”中最近的码字 (codeword) 的技术。这使得模型可以生成离散的表示,类似于自然语言处理中的词元 (token)。
  • 残差量化 (Residual Quantization): RQ-VAE 的核心创新。它不是一次性将输入量化为一个离散代码,而是通过多个量化层逐步细化表示。每个后续层量化的是前一层量化后的残差 (residual)(即原始输入与前一层量化结果之间的差异)。这种机制允许模型捕获不同粒度的信息,形成分层 (hierarchical) 的离散代码序列,例如,第一个代码表示粗粒度特征,后续代码逐步添加更细粒度的细节。

3.1.6. 词元化 (Tokenization)

概念定义: 词元化 (tokenization) 是将一段连续的文本或数据分解成有意义的、离散的单元(称为词元 (token))的过程。在自然语言处理 (NLP) 中,词元可以是单词、子词或字符。在本文中,语义 ID 的离散代码序列可以被视为对项目的“词元化”,将复杂的项目内容表示为一系列具有语义意义的离散“词元”。

3.1.7. 归一化熵 (Normalized Entropy, NE)

概念定义: 归一化熵 (Normalized Entropy, NE) 是一种衡量分类模型性能的指标,特别是针对二分类任务。它是模型交叉熵 (cross-entropy) 与基线交叉熵(通过预测正样本的平均频率得到的交叉熵)的比值。

  • 交叉熵 (Cross-Entropy): 衡量模型预测概率分布与真实标签分布之间差异的指标。值越小表示模型预测越准确。
  • 基线交叉熵 (Baseline Cross-Entropy): 如果一个模型总是预测正样本的平均频率(即不学习任何模式),其交叉熵就是基线交叉熵。
  • 归一化熵 (NE) 的意义: NE 小于 1 表示模型性能优于随机猜测(或只预测平均频率),值越小越好。它提供了一个与基线模型相比的相对性能度量,使得不同数据集上的模型性能更具可比性。

数学公式: NE=1Ni=1N(yilog(pi)+(1yi)log(1pi))(pˉlog(pˉ)+(1pˉ)log(1pˉ)) \mathrm{NE} = \frac{- \frac{1}{N} \sum_{i=1}^N \left( y_i \log\left(p_i\right) + \left(1-y_i\right) \log\left(1-p_i\right) \right)}{\left. - \left( \bar{p} \log\left(\bar{p}\right) + \left(1-\bar{p}\right) \log\left(1-\bar{p}\right) \right) \right.} 符号解释:

  • NN: 训练样本的总数。
  • yi{0,1}y_i \in \{0, 1\}: 第 ii 个样本的真实标签,表示用户是否与项目交互(1 为正,0 为负)。
  • pip_i: 模型对第 ii 个样本预测为正的概率。
  • pˉ\bar{p}: 数据集中正样本的平均频率,即 pˉ=1Ni=1Nyi\bar{p} = \frac{1}{N} \sum_{i=1}^N y_i

3.2. 前人工作

3.2.1. 项目表示学习 (Item Representation Learning)

现代深度学习推荐模型广泛使用训练得到的嵌入来表示类别特征。

  • DLRM 架构 (Covington et al., 2016; Naumov et al., 2019): 提出了基于 DLRM 的架构,是当前推荐系统的主流。
  • 高基数挑战与随机哈希 (Weinberger et al., 2009; Zhang et al., 2020): 针对高基数问题,随机哈希是一种简单而流行的解决方案,但其随机冲突被认为是不可取的。
    • 碰撞无关哈希 (Collision-free Hashing, Liu et al., 2022): 通过动态释放已下线项目嵌入的内存,为每个项目引入独立的嵌入,以实现无冲突。
    • 双重哈希 (Double Hashing, Zhang et al., 2020): 利用两个独立的哈希函数来减少内存使用,但仍存在随机冲突。
    • 学习哈希方法 (Learning to Hash, Wang et al., 2017): 通过训练机器学习模型来学习哈希函数,以实现相似性保留。
  • 印象倾斜与对比学习/聚类 (Yao et al., 2021; Chang et al., 2024): 其他工作通过对比学习或聚类来解决印象倾斜 (impression skew) 问题,这些方法被视为与本文的稳定 ID 空间方法互补。

3.2.2. 稳定嵌入表示 (Stable Embedding Representation)

本文的稳定 ID 概念受到自然语言处理 (NLP) 中词元化 (tokenization) 方法的启发,这些方法通过学习固定的词汇表来表示文本 (Sennrich, 2015; Kudo, 2018; Devlin, 2018)。

  • 基于向量量化的项目表示 (Hou et al., 2023): 提出通过对从项目内容理解模型学习到的嵌入进行向量量化,以设计一种词元化方案。
  • 生成式推荐中的掩码向量量化器 (Qu et al., 2024): 引入掩码向量量化器,将协同过滤模型学到的表示迁移到生成式推荐器。
  • 语义 ID 的并发工作 (Singh et al., 2023; Rajput et al., 2024): 与本文同期,基于 Hou et al. (2023) 的工作,语义 ID 利用 RQ-VAE 进行量化,并在泛化性能和序列推荐中展示了其优势。本文在此基础上,将其作为稳定 ID 方法,并分析其在解决在线项目推荐三大挑战(基数、倾斜、漂移)方面的有效性。

3.3. 技术演进

推荐系统中的项目表示经历了从简单 ID 到复杂语义表示的演变。最初,每个项目可能直接使用其原始 ID,并映射到一个独立的嵌入。然而,随着项目数量的爆炸式增长(高基数),这种方法变得不可行。随机哈希 (random hashing) 作为一种内存高效的替代方案出现,通过允许冲突来控制嵌入表的大小,但牺牲了表示质量和稳定性。为了克服随机哈希的缺点,研究人员开始探索更智能的哈希方法(如无冲突哈希、学习哈希)以及利用项目内容信息的方法。

语义 ID 代表了这一演进中的一个重要方向:它不再依赖随机映射,而是利用先进的内容理解模型 (Content Understanding models)向量量化技术 (Vector Quantization techniques) 来为项目生成具有语义意义的离散 ID。这种方法从根本上改变了冲突的性质——从随机且有害的冲突变为语义相关且有益的知识共享,从而解决了传统方法在处理项目基数、印象倾斜和 ID 漂移时的固有难题。

3.4. 差异化分析

本文提出的基于语义 ID 的方法与现有方法存在以下核心区别和创新点:

  • 与随机哈希 (Random Hashing) 的区别:

    • 冲突性质: 随机哈希产生随机冲突,即不相关的项目可能共享同一嵌入,导致数据污染和梯度更新冲突。语义 ID 通过分层聚类产生语义上有意义的冲突,确保语义相似的项目共享嵌入或其前缀,从而促进知识共享和表示稳定。
    • ID 空间稳定性: 随机哈希的 ID 空间受原始 ID 漂移影响大,导致嵌入表示随时间不稳定。语义 ID 基于项目内容语义,其 ID 空间相对固定且稳定,能够缓解 ID 漂移问题。
    • 长尾建模: 随机哈希无法有效帮助长尾项目,因为它们与头部项目的哈希冲突是随机的。语义 ID 允许长尾项目从语义相似的头部项目获得知识传递,提高其表示质量。
  • 与独立嵌入 (Individual Embeddings) 的区别:

    • 可行性: 独立嵌入为每个项目分配唯一嵌入,在工业规模下因内存和计算成本而不可行。语义 ID 通过有限的码本 (codebook) 和分层结构,在保持语义信息的同时大幅降低了所需的嵌入参数数量。
    • 泛化能力: 独立嵌入对新项目或长尾项目存在严重的冷启动问题。语义 ID 通过其语义聚类特性,使得新项目和长尾项目能够继承相似项目的知识,具有更好的泛化能力。
  • 与碰撞无关哈希 (Collision-free Hashing) 的区别:

    • 碰撞无关哈希旨在消除所有冲突,为每个项目分配唯一嵌入。虽然理论上最优,但其实现复杂性(如动态内存管理)和对长尾项目的冷启动问题可能依然存在。语义 ID 接受并利用了“有意义的冲突”,通过知识共享而非完全隔离来解决问题。
  • 与学习哈希 (Learning to Hash) 的区别:

    • 学习哈希旨在通过训练模型学习相似性保留的哈希函数。语义 ID 的方法更进一步,它首先通过 RQ-VAE 学习项目的离散语义代码,然后通过 prefix-ngram 进行参数化,其核心是语义聚类而非仅仅是哈希函数的优化。

      总的来说,本文的创新在于提出了一种结构化、语义驱动的 ID 空间构建方法,并通过 prefix-ngram 这种精巧的词元参数化技术,将这种语义结构有效地融入到推荐模型中,从而在解决高基数、印象倾斜和 ID 漂移问题上取得了显著优势。

4. 方法论

本文的核心方法是引入语义 ID (Semantic ID) 作为项目表示的稳定 ID 空间,并通过 Semantic ID prefix-ngram 这种新颖的词元参数化技术将其集成到推荐系统中。

4.1. 方法原理

语义 ID 的核心思想是为项目创建一个语义稳定的 ID 空间,以解决传统 ID 表示方法(如随机哈希)带来的不稳定性、数据污染和长尾项目建模困难。直观来说,如果用户点击了数百个关于披萨的广告,我们希望涉及其中一个披萨广告的例子能够从其他披萨广告的表示中获取信息。

该方法通过以下步骤实现:

  1. 内容理解 (Content Understanding): 利用多模态(文本、图像、视频)内容理解模型提取项目的稠密内容嵌入。

  2. 语义聚类与量化 (Semantic Clustering and Quantization): 在这些内容嵌入上训练一个残差向量量化变分自编码器 (RQ-VAE),将连续的内容嵌入量化为一系列分层的离散代码,这串代码即为项目的语义 ID。这些代码代表了从粗到细的不同粒度语义信息,例如,第一个代码可能代表“食物”,第二个代码可能细化为“披萨”,第三个代码可能进一步细化为“某种语言的披萨广告”。

  3. 词元参数化 (Token Parameterization): 将这些分层的语义 ID 代码序列映射到推荐模型的嵌入表中。本文提出 prefix-ngram 参数化,它能够捕获不同粒度的语义信息,并促进语义相似项目之间的知识共享。

    通过这种方式,即使原始项目 ID 发生变化(ID 漂移),只要项目内容语义保持相似,其语义 ID 也会保持相同或共享前缀,从而实现知识传递,提高嵌入表示的稳定性和泛化能力。

4.2. 核心方法详解 (逐层深入)

4.2.1. 排名模型概述 (Ranking Model Overview)

推荐问题被视为一个分类任务,目标是预测用户是否会与某个项目进行交互或转化。模型基于 DLRM (Deep Learning Recommendation Model) 架构,包含三个堆叠部分:

  1. 信息聚合模块 (Information Aggregation Section): 独立处理稀疏(类别)、稠密和用户历史特征。每个模块的输出都是一个嵌入向量列表。

  2. 交互层 (Interaction Layer): 将所有嵌入向量连接成一个列表,然后计算所有向量对之间的点积(或更高阶交互)。

  3. 多层感知机 (MLP): 将交互层的输出通过 MLP 转换为逻辑分数 (logit score),再通过 Sigmoid 函数输出概率。模型使用交叉熵损失 (cross-entropy loss) 进行训练。

    本文主要关注信息聚合部分。

4.2.1.1. 嵌入模块 (Embedding Module)

  • 功能: 将原始 ID 映射到嵌入表的行索引,然后获取对应的嵌入向量。
  • 符号定义:
    • II: 系统中原始 ID 的总数。
    • NN: 整数从 1 到 NN 的集合。
    • ERH×dm\mathbf{E} \in \mathbb{R}^{H \times d_m}: 嵌入表,其中 dmd_m 是嵌入维度,HH 是嵌入的数量。
    • f=(f1,,fG):[1..I][1..H]Gf = (f_1, \ldots, f_G) : [1..I] \to [1..H]^G: 嵌入查找函数,将一个原始 ID 映射到 GG 个嵌入表行索引。
  • 嵌入查找与池化: 对于每个原始 ID x[1..I]x \in [1..I],稀疏模块通过对嵌入表行 ef1(x),,efG(x)\mathbf{e}_{f_1}(x), \ldots, \mathbf{e}_{f_G}(x) 进行求和池化 (sum-pooling) 来查找嵌入: ef(x):=i=1Gefi(x) \mathbf{e}_f(x) := \sum_{i=1}^G \mathbf{e}_{f_i}(x)
    • 符号解释:
      • ef(x)\mathbf{e}_f(x): 原始 ID xx 经过查找函数 ff 和求和池化后得到的最终嵌入向量。
      • fi(x)f_i(x): 查找函数 ff 返回的第 ii 个嵌入表行索引。
      • efi(x)\mathbf{e}_{f_i}(x): 嵌入表中对应索引 fi(x)f_i(x) 的嵌入向量。
      • GG: 每个原始 ID 映射到的嵌入表行索引数量。

4.2.1.2. 稀疏模块 (Sparse Module)

  • 功能: 处理由多个原始 ID 组成的稀疏特征,例如项目所属的多个产品类别 ID。
  • 嵌入计算: 将稀疏特征 x:={x1,,xn}\mathbf{x} := \{x_1, \dots, x_n\}(由 nn 个原始 ID 组成)的每个构成原始 ID xix_i 的嵌入 ef(xi)\mathbf{e}_f(x_i) 进行求和池化,得到一个单一的输出嵌入 ef(x)\mathbf{e}_f(\mathbf{x})

4.2.1.3. 用户历史模块 (User History Module)

  • 功能: 建模用户的项目互动历史,将其表示为稀疏特征序列 xu:=(x1u,,xTu)\mathbf{x}^u := (\mathbf{x}_1^u, \ldots, \mathbf{x}_T^u) 及对应的互动时间戳。
  • 处理流程:
    1. 使用稀疏模块嵌入每个稀疏特征 xiu\mathbf{x}_i^u,并获取学习到的时间戳嵌入。总和表示为 efu(xiu)\mathbf{e}_f^u(\mathbf{x}_i^u)
    2. 将这些编码结果堆叠成矩阵 X=[efu(x1u);;efu(xTu)]RT×dm\mathbf{X} = [\mathbf{e}_f^u(\mathbf{x}_1^u); \ldots; \mathbf{e}_f^u(\mathbf{x}_T^u)]^\intercal \in \mathbb{R}^{T \times d_m}
    3. 通过聚合模块 (aggregation module) 对这个嵌入序列进行上下文化 (contextualize)。
  • 聚合模块架构 (Aggregation Module Architectures): 论文在附录 A 中定义了三种架构,将在后面详细说明:
    • 旁路 (Bypass): 简单地应用一个线性变换。
    • Transformer (Vaswani, 2017): 使用自注意力机制进行序列上下文化。
    • 池化多头注意力 (Pooled Multihead Attention, PMA) (Lee et al., 2019): Transformer 的变体,使用可学习的查询向量。

4.2.2. 语义 ID 及其参数化 (Semantic ID and Parameterizations)

4.2.2.1. 语义 ID 概述 (Overview of Semantic ID)

语义 ID 的学习分为两个阶段:

  1. 内容嵌入生成: 应用一个内容理解模型,将项目的文本、图像或视频内容转换为稠密的内容嵌入。这个基础模型通常在大型数据集上预训练(例如,使用图像和文本对齐目标)。
  2. 向量量化与代码生成: 在这些内容嵌入上训练一个 RQ-VAE (Residual Vector Quantized Variational Autoencoder) (Zeghidour et al., 2021)。RQ-VAE 将内容嵌入量化为一系列从粗到细的离散代码,这些代码序列就是项目的语义 ID。
  • RQ-VAE 结构参数:
    • LL: 量化层数(即代码序列的长度)。
    • KK: 码本大小(即每个量化层的簇数量)。
  • RQ-VAE 组件:
    • 编码器 (encoder): 将内容嵌入 xRD\mathbf{x} \in \mathbb{R}^D 映射到连续的潜在表示 zRD\mathbf{z} \in \mathbb{R}^{D'}
    • 残差量化器 (residual quantizer):z\mathbf{z} 量化为一系列离散代码 c:=(c1,,cL)KL\mathbf{c} := (c_1, \ldots, c_L) \in K^L
    • 解码器 (decoder): 从代码 c\mathbf{c} 重构原始内容嵌入 x\mathbf{x}
  • 残差量化过程: 每个量化层 ι\iota 关联一个包含 KK 个向量的码本 {vkl}k=1K\{ \mathbf{v}_k^l \}_{k=1}^K。离散代码序列是分层的:clc_l 对应于码本向量 vcll\mathbf{v}_{c_l}^l,它近似于从 z\mathbf{z} 递归应用前 (l-1) 层码本向量后剩下的残差 rl\mathbf{r}_lrl:=zi=1l1vcii,cl:=argmincvclrl2. \mathbf{r}_l := \mathbf{z} - \sum_{i=1}^{l-1} \mathbf{v}_{c_i}^i, \quad c_l := \arg\min_c \|\mathbf{v}_c^l - \mathbf{r}_l\|_2.
    • 符号解释:
      • rl\mathbf{r}_l: 第 ll 层的残差,是原始潜在表示 z\mathbf{z} 减去前 l-1 层所有码本向量之和。
      • z\mathbf{z}: 编码器输出的连续潜在表示。
      • i=1l1vcii\sum_{i=1}^{l-1} \mathbf{v}_{c_i}^i: 前 l-1 层选择的码本向量之和。
      • clc_l: 第 ll 层的离散代码,通过找到码本中与当前残差 rl\mathbf{r}_l 欧几里得距离最近的码本向量 vcl\mathbf{v}_c^l 的索引 cc 来确定。
      • vcl\mathbf{v}_c^l: 第 ll 层码本中索引为 cc 的码本向量。
  • RQ-VAE 损失函数: RQ-VAE 使用重建损失和鼓励残差与码本向量接近的损失进行训练。 LRQVAE(x)=xdec(c)2+l=1Lβrlsg(vcll)2+sg(rl)vcll2. \begin{array}{l} \displaystyle \mathcal{L}_{\mathrm{RQ-VAE}}(\mathbf{x}) = \|\mathbf{x} - \mathrm{dec}(\mathbf{c})\|^2 \\ \displaystyle \qquad + \sum_{l=1}^L \beta \|\mathbf{r}_l - \mathbf{sg}(\mathbf{v}_{c_l}^l)\|^2 + \|\mathbf{sg}(\mathbf{r}_l) - \mathbf{v}_{c_l}^l\|^2. \end{array}
    • 符号解释:
      • xdec(c)2\|\mathbf{x} - \mathrm{dec}(\mathbf{c})\|^2: 重建损失,衡量原始输入 x\mathbf{x} 与解码器从代码 c\mathbf{c} 重构的 dec(c)\mathrm{dec}(\mathbf{c}) 之间的差异。
      • dec(c)\mathrm{dec}(\mathbf{c}): 解码器对代码 c\mathbf{c} 应用后的结果。
      • l=1Lβrlsg(vcll)2\sum_{l=1}^L \beta \|\mathbf{r}_l - \mathbf{sg}(\mathbf{v}_{c_l}^l)\|^2: 码本学习损失的一部分,鼓励残差 rl\mathbf{r}_l 接近其选定的码本向量 vcll\mathbf{v}_{c_l}^l
      • sg(rl)vcll2\|\mathbf{sg}(\mathbf{r}_l) - \mathbf{v}_{c_l}^l\|^2: 码本学习损失的另一部分,鼓励码本向量 vcll\mathbf{v}_{c_l}^l 接近残差 rl\mathbf{r}_l
      • sg()\mathrm{sg}(\cdot): 停止梯度 (stop-gradient) 操作符,在反向传播时阻止梯度流过其参数,通常用于解耦损失项。
      • β\beta: 超参数,实验中设为 0.5。
  • 语义 ID 定义: 由编码器和残差量化器生成的离散代码序列 (c1,,cL)(c_1, \dots, c_L) 被定义为语义 ID。

4.2.2.2. 词元参数化 (Token Parameterization)

语义 ID 生成的分层代码序列 (c1,,cL)(c_1, \dots, c_L) 具有不同粒度的语义信息。例如,当 L=3L=3 时:

  • c1c_1: 表示最粗粒度的类别,如“食物”。

  • (c1,c2)(c_1, c_2): 进一步细化信息,如“披萨”。

  • (c1,c2,c3)(c_1, c_2, c_3): 最细粒度信息,如“某种语言的披萨广告”。

    由于这种分层特性,我们可以控制推荐模型从语义 ID 接收的信息量和结构。直接使用最细粒度的所有可能 (c1,c2,,cL)(c_1, c_2, \dots, c_L) 元组通常因其高基数而不可行。因此,需要在词元参数化的基数和模型接收到的信息量之间进行权衡。

  • 语义 ID 查找函数: s(x):[1..I]KLs(x) : [1..I] \to K^L,将原始 ID 映射到 RQ-VAE 学习到的语义 ID。

  • 词元参数化映射函数: p(c;H):KL[1..H]Gp(\mathbf{c}; H) : K^L \to [1..H]^G,将语义 ID 映射到嵌入表行。当语义 ID 基数大于嵌入表大小 HH 时,会应用模哈希函数。当有多个 ID 时,会添加一个偏移因子以避免不同位置之间的冲突。

    以下是论文中定义的几种可能的参数化技术:

以下是原文 Table 1 的结果:

Token Param p(c1, . . . , L; H)
Trigram [K2c1 + Kc2 + c3]
Fourgram [K3c1 + K2c2 + Kc3 + c]
All bigrams [K × (i − 1) + Kci + ci+1, for i in [1 . L-1]
Prefix-ngram [∑t=1n Ki−t(ct + 1) − 1, for i in [1 . n]]

解释:

  • Trigram (三元组):c1,c2,c3c_1, c_2, c_3 三个代码组合成一个单一的索引。通过给不同层级的代码分配不同的权重(KK 的幂次),确保了不同三元组的不同索引。例如,K2c1K^2 c_1 强调了 c1c_1 是最高层的粗粒度信息。
  • Fourgram (四元组): 类似 Trigram,但扩展到 c1,c2,c3,c4c_1, c_2, c_3, c_4 四个代码。
  • All bigrams (所有二元组): 生成所有相邻代码对的组合,例如 (c1,c2),(c2,c3),,(cL1,cL)(c_1, c_2), (c_2, c_3), \ldots, (c_{L-1}, c_L)。每个二元组都是一个独立的词元。这种方法旨在捕获局部、相邻层级之间的语义关系。
  • Prefix-ngram (前缀 N-gram): 这是论文提出的最佳参数化。它生成所有可能的层次化前缀作为词元。例如,对于 3 层 RQ-VAE,Prefix-3gram 会生成 (c1)(c_1), (c1,c2)(c_1, c_2), (c1,c2,c3)(c_1, c_2, c_3) 作为独立的词元。每个前缀代表不同粒度的语义信息。其公式 p(c;H)=[t=1nKit(ct+1)1, for i[1..n]]p(\mathbf{c}; H) = [\sum_{t=1}^n K^{i-t}(c_t + 1) - 1, \text{ for } i \in [1..n]] 表示对于每个前缀长度 ii(从 1 到 nn),它计算一个唯一的索引。
    • t=1nKit(ct+1)1\sum_{t=1}^n K^{i-t}(c_t + 1) - 1 这个表达式为每个长度为 ii 的前缀 (c1,,ci)(c_1, \ldots, c_i) 计算一个唯一的整数 ID。
      • nn: N-gram 的最大长度。

      • ii: 当前前缀的长度。

      • tt: 前缀中代码的索引。

      • KitK^{i-t}: 权重,确保不同层级的代码对最终 ID 的贡献不同,且前缀越短(ii 越小),其贡献的权重越小。

      • ct+1c_t + 1: 第 tt 个代码的值(加 1 是为了避免索引从 0 开始可能导致的冲突,或为了区分空值)。

      • -1: 用于调整索引范围。

        Prefix-ngram 包含了来自不同粒度的所有可能元组,因此能更全面地利用 RQ-VAE 的分层聚类信息,促进更广泛的知识共享。

4.2.3. 聚合模块架构 (Aggregation Module Architectures)

这些模块用于对用户历史序列嵌入 X\mathbf{X} 进行上下文化和总结。

4.2.3.1. 旁路 (Bypass)

旁路模块对序列中的每个嵌入单独应用一个线性变换。 Bypass(X):=XW. \operatorname{Bypass}(\mathbf{X}) := \mathbf{X} \mathbf{W}.

  • 符号解释:
    • XRT×dm\mathbf{X} \in \mathbb{R}^{T \times d_m}: 用户历史嵌入序列,其中 TT 是序列长度,dmd_m 是嵌入维度。
    • WRdm×dm\mathbf{W} \in \mathbb{R}^{d_m \times d_m}: 可学习的线性权重矩阵。
    • Bypass(X)\operatorname{Bypass}(\mathbf{X}): 经过线性变换后的嵌入序列。 该模块不捕获序列中嵌入之间的交互或上下文信息。

4.2.3.2. Transformer (Vaswani, 2017)

Transformer 模块通过自注意力机制 (self-attention mechanism) 来上下文化嵌入序列。在应用 Transformer 或 PMA 模块之前,会向编码中添加标准的位置嵌入 (positional embeddings)。

  • 注意力子模块 (Attention Submodule): Attention(X):=softmax((XWQ)(XWK)dm)(XWV). \mathrm{Attention}(\mathbf{X}) := \mathrm{softmax}\left(\frac{(\mathbf{X} \mathbf{W}^Q)(\mathbf{X} \mathbf{W}^K)^\top}{\sqrt{d_m}}\right)(\mathbf{X} \mathbf{W}^V).
    • 符号解释:
      • WQ,WK,WVRdm×da\mathbf{W}^Q, \mathbf{W}^K, \mathbf{W}^V \in \mathbb{R}^{d_m \times d_a}: 分别是查询 (query)、键 (key) 和值 (value) 的权重矩阵,用于将输入嵌入 X\mathbf{X} 线性变换到查询、键、值空间。
      • dad_a: 查询/键/值向量的维度。
      • (XWQ)(\mathbf{X} \mathbf{W}^Q): 计算得到的查询矩阵。
      • (XWK)(\mathbf{X} \mathbf{W}^K)^\top: 计算得到的键矩阵的转置。
      • (XWQ)(XWK)dm\frac{(\mathbf{X} \mathbf{W}^Q)(\mathbf{X} \mathbf{W}^K)^\top}{\sqrt{d_m}}: 查询与键的点积,除以 dm\sqrt{d_m} 进行缩放,防止内积过大导致 softmax 梯度消失。
      • softmax()\mathrm{softmax}(\cdot): 应用 softmax 函数将注意力分数归一化为概率分布。
      • (XWV)(\mathbf{X} \mathbf{W}^V): 计算得到的值矩阵。
      • Attention(X)\mathrm{Attention}(\mathbf{X}): 计算得到的注意力输出。
  • 完整 Transformer 模块: Transformer 模块通常包含一个自注意力层和一个前馈网络 (MLP),并采用残差连接 (residual connection) 和层归一化 (LayerNorm)。 X(1)=Attention(LayerNorm(X))+XX(2)=MLP(LayerNorm(X(1)))+X(1). \begin{array}{rl} & \mathbf{X}^{(1)} = \mathrm{Attention}(\mathrm{LayerNorm}(\mathbf{X})) + \mathbf{X} \\ & \mathbf{X}^{(2)} = \mathrm{MLP}(\mathrm{LayerNorm}(\mathbf{X}^{(1)})) + \mathbf{X}^{(1)}. \end{array}
    • 符号解释:
      • LayerNorm()\mathrm{LayerNorm}(\cdot): 标准的层归一化操作,用于稳定训练。
      • MLP()\mathrm{MLP}(\cdot): 标准的逐位置多层感知机。
      • X(1),X(2)\mathbf{X}^{(1)}, \mathbf{X}^{(2)}: Transformer 模块的中间输出。 该架构允许模型在处理序列时,根据序列中不同位置的关联性动态地加权信息。

4.2.3.3. 池化多头注意力 (Pooled Multihead Attention, PMA) (Lee et al., 2019)

PMA 是 Transformer 的一个变体,它用一组可学习的查询向量(称为种子,seeds)替换了 Transformer 中的自查询机制。这使得 PMA 可以将任意长度的序列聚合为固定数量的输出向量。

  • PMAttention 子模块: PMAttention(X):=softmax(S(XWK)dm)(XWV). \mathrm{PMAttention}(\mathbf{X}) := \mathrm{softmax}\left(\frac{\mathbf{S}(\mathbf{X} \mathbf{W}^{\mathbf{K}})^\intercal}{\sqrt{d_m}}\right)(\mathbf{X} \mathbf{W}^V).
    • 符号解释:
      • SRds×da\mathbf{S} \in \mathbb{R}^{d_s \times d_a}: 由 dsd_s 个可学习的查询向量(种子)组成,其中 dsd_s 是输出序列的长度。在实验中,ds=32d_s = 32
      • 其他符号与 Transformer 中的 Attention 模块类似。 PMA 模块的构建方式与 Transformer 模块相同(使用上述公式中的 X(1)\mathbf{X}^{(1)}X(2)\mathbf{X}^{(2)}),只是将 Attention 替换为 PMAttention。PMA 的优势在于其能够将可变长度的输入序列压缩为固定长度的表示,这在处理用户历史等长序列时非常有用。

5. 实验设置

5.1. 数据集

  • 数据来源: Meta 的生产广告排序数据 (Meta's production ads ranking data)。
  • 训练数据: 使用来自生产环境的四天用户互动数据进行训练,数据按时间顺序处理,并进行单次迭代 (single epoch)。
  • 评估数据: 在训练期结束后的第二天前六小时的数据上进行评估。
  • 模型简化: 为了聚焦研究目标,实验使用了 Meta 生产广告排序模型的简化版本。该简化模型保留了所有稠密特征和用户的项目互动历史,但在稀疏模块中仅包含目标项目特征(移除了大约 100 个其他稀疏特征)。
  • RQ-VAE 训练数据: RQ-VAE 模型在过去三个月的所有目标项目的内容嵌入上进行训练。内容嵌入本身来自一个多模态图像和文本基础模型 (multimodal image and text foundation model),该模型在公共 CC100 数据集 (Conneau, 2019) 上预训练,然后在内部广告数据集上进行微调。
  • 用户历史序列长度: 用户互动历史序列长度固定为 O(100)O(100),通过填充 (padding) 或截断 (truncating) 来适应所需长度。

5.2. 评估指标

本文主要使用归一化熵 (Normalized Entropy, NE) 来衡量模型性能。

5.2.1. 归一化熵 (Normalized Entropy, NE)

  1. 概念定义 (Conceptual Definition): 归一化熵 (NE) 是推荐系统中常用的一个评估指标,尤其适用于二分类任务(如预测点击或转化)。它通过将模型预测的交叉熵与一个基线模型的交叉熵进行比较来衡量模型的性能。这个基线模型是一个简单的模型,它总是预测正样本的平均频率。NE 值越低表示模型性能越好,NE 小于 1 意味着模型表现优于简单的随机猜测(或平均频率预测)。

  2. 数学公式 (Mathematical Formula): NE=1Ni=1N(yilog(pi)+(1yi)log(1pi))(pˉlog(pˉ)+(1pˉ)log(1pˉ)) \mathrm{NE} = \frac{- \frac{1}{N} \sum_{i=1}^N \left( y_i \log\left(p_i\right) + \left(1-y_i\right) \log\left(1-p_i\right) \right)}{\left. - \left( \bar{p} \log\left(\bar{p}\right) + \left(1-\bar{p}\right) \log\left(1-\bar{p}\right) \right) \right.}

  3. 符号解释 (Symbol Explanation):

    • NN: 数据集中样本的总数。
    • yi{0,1}y_i \in \{0, 1\}: 第 ii 个样本的真实标签。在推荐系统中,1 通常表示用户与项目发生了交互(例如点击、购买),0 表示没有交互。
    • pip_i: 模型对第 ii 个样本预测为正的概率。
    • pˉ\bar{p}: 数据集中所有样本中正标签的平均频率,即 pˉ=1Ni=1Nyi\bar{p} = \frac{1}{N} \sum_{i=1}^N y_i。分母计算的是如果模型总是预测 pˉ\bar{p} 作为概率时所得到的交叉熵。

5.3. 对比基线

为了验证语义 ID 的优势,论文将三种不同的项目表示方法进行了比较:

  1. 独立嵌入 (Individual Embeddings, IE):

    • 描述: 每个原始 ID 都有自己独立的嵌入表行。
    • 实现: I=HI = H,且嵌入查找函数 fIE(x):=xf_{\mathrm{IE}}(x) := x
    • 特点: 在生产环境中由于系统限制和高基数问题通常不现实,但在本文中作为理想情况下的性能上限进行说明。在评估时,训练期间未出现的新 ID 会被映射到一个随机初始化且未训练的嵌入。
  2. 随机哈希 (Random Hashing, RH):

    • 描述: 当原始 ID 数量 II 远大于可行的嵌入表大小 HH 时,原始 ID 会被随机哈希到嵌入表的行中。
    • 实现: 嵌入查找函数 fRH(x):=h(x)f_{\mathrm{RH}}(x) := h(x),其中 h(x):[1..I][1..H]h(x) : [1..I] \to [1..H] 是标准哈希函数(例如模哈希)。
    • 特点: 这种方法会产生随机冲突,平均冲突因子为 a=I/Ha = I/H。它解决了高基数问题,但引入了数据污染和表示不稳定性。
  3. 语义 ID (Semantic ID, SemID):

    • 描述: 项目的内容嵌入首先通过多模态基础模型获得,然后 RQ-VAE 将其量化为语义 ID 序列。这些语义 ID 再通过特定的词元参数化方法映射到嵌入表。
    • 实现: RQ-VAE 配置为 L=3L=3 层,K=2048K=2048 的码本大小。词元参数化使用第 4.2.2.2 节介绍的 prefix 3-gram 参数化 fSemID=psf_{\mathrm{SemID}} = p \circ s
    • 特点: 旨在通过语义驱动的聚类来创建稳定的 ID 空间,缓解随机哈希的缺点。

通用设置:

  • 嵌入表大小: IE 模型的嵌入表大小等于总项目数。RH 和 SemID 模型的嵌入表大小相同,且小于 IE 模型,平均冲突因子为 3。
  • 用户历史特征: 在所有情况下,用户历史特征都使用随机哈希进行映射。

6. 实验结果与分析

6.1. 核心结果分析

6.1.1. 词元参数化性能

论文首先比较了不同词元参数化技术对模型性能的影响,以确定最佳的语义 ID 编码策略。

以下是原文 Table 2 的结果:

RQ-VAE K × L Token Parameterization Train NE Gain
[2048] × 3 Trigram −0.028%
[2048] × 4 Fourgram −0.035%
[2048] × 4 All bigrams -0.091%
[512] × 3 Prefix-3gram -0.034%
[1024] × 3 Prefix-3gram -0.097%
[2048] × 3 Prefix-3gram -0.141%
[2048] × 5 Prefix-5gram -0.208%
[2048] ×6 Prefix-6gram -0.215%

分析:

  • Prefix-ngram 的优越性: 从结果可以看出,Prefix-ngram 系列的参数化技术表现最佳,尤其当 K=2048,L=6K=2048, L=6 时,Prefix-6gram 实现了最大的训练 NE 增益(-0.215%)。这验证了将分层聚类的所有粒度信息都包含在嵌入表映射中的必要性,因为它能促进更广泛的项目间知识共享。
  • 深度与性能: 随着 Prefix-ngram 深度(即 nn 值)的增加,NE 性能持续提升。例如,从 Prefix-3gramPrefix-6gram,性能显著提高。这表明更细粒度的语义信息有助于模型捕获更精确的项目特征。
  • RQ-VAE 基数与性能: 增加 RQ-VAE 的基数(即 KK 值,码本大小)也提高了 NE 性能。例如,Prefix-3gramK=512K=512 时增益为 -0.034%,在 K=2048K=2048 时增益达到 -0.141%。更大的 KK 意味着每个层级有更多的簇,从而能更精细地划分语义空间。
  • 其他参数化: TrigramFourgram 的性能相对较差,All bigrams 表现稍好,但仍不如 Prefix-ngram。这可能是因为 Prefix-ngram 能够同时利用不同粒度的全局和局部语义信息,而其他方法可能过于关注单一粒度或局部信息。

6.1.2. 分段分析 (Segment Analysis)

为了理解印象倾斜 (impression skew) 对不同方法的具体影响,论文将项目按照训练期间的印象数量进行分段:头部 (Head, 前 0.1% 项目,贡献 25% 印象)、躯干 (Torso, 接下来 5.5% 项目,贡献 50% 印象) 和长尾 (Tail, 剩余 94.4% 项目,贡献 25% 印象)。此外,还评估了仅在评估期出现的新项目(训练期间未见)。

以下是原文 Table 3a 的结果: (a) Evaluation NE (lower is better). Semantic ID enables knowledge transfer to tail and new cold start items.

Cum. Exs. Item Percentile RH Eval NE IE SemID SemID NE Gain vs. RH IE
25% (Head) 0.1 0.80105 0.80101 0.80108 0.00% 0.01%
75% (Torso) 5.6 0.83589 0.83583 0.83580 -0.01% -0.00%
100% (Tail) 100 0.83904 0.83886 0.83872 -0.04% -0.02%
Items Seen in Training 0.82626 0.82612 0.82600 -0.03% -0.02%
New Items 0.83524 0.83453 0.83180 -0.41% -0.33%
All Items 0.82663 0.82645 0.82621 -0.05% -0.03%

分析:

  • 长尾项目 (Tail Items) 收益最大: Semantic ID 在长尾项目上实现了 -0.04% 的 NE 增益,优于随机哈希 (RH) 和独立嵌入 (IE)。这证实了语义 ID 能够通过语义相似性促进知识共享,使得训练数据较少的长尾项目也能从语义相似的头部或躯干项目那里学到有效的表示。
  • 新项目 (New Items) 上的显著优势: Semantic ID 在新项目上取得了最为显著的收益,NE 增益分别达到 -0.41% (vs. RH) 和 -0.33% (vs. IE)。这表明语义 ID 有效解决了冷启动 (cold start) 问题。新项目可以利用从训练期间语义相似项目学到的预训练权重进行预测,而不是依赖不相关的随机哈希权重或未训练的独立嵌入权重。
  • 头部 (Head) 和躯干 (Torso) 项目: Semantic ID 对头部项目的影响不大(0.00% 增益 vs. RH),对躯干项目略有益处(-0.01% 增益 vs. RH)。这是合理的,因为头部和躯干项目本身就有足够的数据来学习高质量的嵌入,知识共享的边际效应较小。
  • 总体性能: 总体而言,Semantic ID 在所有项目上都取得了 -0.05% 的 NE 增益,证明了其普遍有效性。
  • 知识共享机制: 这些结果支持了语义 ID 通过共享嵌入权重实现知识共享的假设,即语义相关的项目会共同更新这些权重。

6.1.3. 分布漂移敏感性 (Sensitivity to Distribution Shift)

为了衡量嵌入表示漂移 (embedding representation drifting) 对模型性能的影响,论文通过比较模型在训练数据不同时间段上的性能差异来评估其对分布漂移的敏感性。具体方法是计算训练期结束前 42-48 小时的 NE 与训练期最后 6 小时的 NE 之间的差异。值越小表示嵌入表示漂移对模型拟合的影响越小。

以下是原文 Table 3b 的结果: (b) Sensitivity to distribution shift: NE[t0,t1]NE[t0+42h,t1+42h]\mathrm{NE}[t_0, t_1] - \mathrm{NE}[t_0 + 42h, t_1 + 42h]. Lower is better.

Cum. Exs. RH IE SemID
25% (Head) 0.0057 0.0065 0.0059
75% (Torso) 0.0087 0.0075 0.0076
100% (Tail) 0.0128 0.0103 0.0106
All Items 0.0083 0.0074 0.0073

分析:

  • 随机哈希 (RH) 表现最差: 随机哈希在所有分段上都显示出最大的性能差距,尤其是在长尾项目上达到 0.0128。这强烈表明随机哈希模型由于 ID 漂移而遭受严重的嵌入表示漂移,导致其在表示旧项目方面的能力随时间下降。
  • 独立嵌入 (IE) 和语义 ID (SemID) 表现相似且更优: 独立嵌入和语义 ID 的性能差距更小,且彼此接近。例如,在所有项目上,IE 为 0.0074,SemID 为 0.0073,均优于 RH 的 0.0083。这表明语义 ID 学到的表示在时间上更稳定,能够更好地应对 ID 漂移。
  • 原因推测: 语义 ID 的稳定性得益于其内容驱动的特性。当旧广告下线、新广告上线时,即使原始 ID 发生变化,如果新旧广告的语义内容相似,它们将共享相同或相似的语义 ID 前缀,从而继承已学到的知识。这使得嵌入权重能够更稳定地代表语义概念,而非瞬息万变的原始 ID。

6.1.4. 长期训练 (Longer Training Durations)

论文进一步探讨了语义 ID 在更长训练周期下的表现,以验证其在 ID 漂移更明显的情况下是否能更好地泛化。

以下是原文 Table 4 的结果:

RH Semantic ID
Eval NE Gain -0.18% −0.23%

分析:

  • 语义 ID 在长期训练中表现更优: 相比于仅训练 4 天的数据,训练 20 天数据时,语义 ID 带来了更大的 NE 性能提升(-0.23%),而随机哈希仅提升 -0.18%。
  • 泛化能力增强: 这一结果支持了论文的推测:语义 ID 改进的表示稳定性使其模型能够更好地从更长时间的训练数据中泛化,即使 ID 漂移在长期训练中变得更加显著。模型能够积累并利用更长时间的语义知识,而不是因为 ID 漂移而“遗忘”旧的有效表示。

6.1.5. 项目表示空间 (Item Representation Space)

为了更深入理解项目嵌入表示,论文提取了训练模型的嵌入权重,并将随机哈希和语义 ID 视为两种不同的项目 ID 语料划分方式。目标是评估语义 ID 产生的语义划分是否比随机哈希产生的随机划分更适合推荐任务。 论文通过计算簇内嵌入方差 (intra-cluster embedding variance)簇间平均成对距离 (average pairwise distances) 来评估这些划分的有效性。一个更有效的划分应该具有更低的簇内方差(簇内项目更相似)和更高的簇间距离(不同簇的项目区分度更高)。 实验中,冲突因子设置为 5,意味着 RH 和 SemID 平均每个簇包含 5 个项目。对于 SemID,由于 RQ-VAE 的特性,簇大小差异很大,因此分别计算了包含 4-10 个项目的小簇和包含数千个项目的前 1,000 个大簇的指标。

以下是原文 Table 5 的结果:

Variance Pairwise distance
Random Hashing 1.52 × 10−3 (8.0 × 10−4) 0.22 (0.04)
SemID (small) 1.31 × 10−3 (1.0 × 10−3) 0.24 (0.09)
SemID (top 1,000) 1.23 × 10−3 (5.5 × 10−4) 0.06 (0.02)

分析:

  • 簇内方差 (Intra-cluster Variance): 语义 ID 划分产生的簇具有更低的簇内方差(SemID small 为 1.31×1031.31 \times 10^{-3},SemID top 1,000 为 1.23×1031.23 \times 10^{-3}),均低于随机哈希的 1.52×1031.52 \times 10^{-3}。这表明语义 ID 能够将语义上更相似的项目聚类在一起,从而使共享嵌入能更好地代表其簇内的所有项目。
  • 簇间成对距离 (Inter-cluster Pairwise Distance):
    • SemID 的小簇(0.24)具有与随机哈希(0.22)相似或略高的成对距离。
    • 然而,SemID 的前 1,000 个大簇的成对距离显著降低(0.06)。这表明这些大簇彼此之间不够区分。
  • 混合信号的解释: 簇内方差的改善是积极的信号,证实了语义 ID 聚类质量优于随机哈希。簇间距离的混合信号可能是由于 RQ-VAE 的工作原理:为了最小化模型损失,RQ-VAE 倾向于将多个质心放置在数据密度最高的区域。这意味着在最热门的类别中,可能会有大量语义高度相似但略有差异的簇,它们彼此之间距离很近,但每个簇内部的项目相似度极高。

6.1.6. 用户历史建模 (User History Modeling)

本节探讨了语义 ID 对用户历史建模的影响,特别是与上下文感知的聚合模块结合时。

以下是原文 Table 6 的结果:

Train NE Gain Eval NE Gain
Bypass -0.056% −0.085%
Transformer -0.071% -0.110%
PMA −0.073% −0.100%

分析:

  • 语义 ID 带来普遍增益: 使用语义 ID 后,所有三种聚合模块(旁路、Transformer、PMA)都获得了正向的 NE 增益,表明语义 ID 作为用户历史特征是有效的。

  • 对上下文感知模块的额外增益: 相比于非上下文感知的旁路 (Bypass) 模块,上下文感知的 Transformer 和 PMA 模块在使用语义 ID 时获得了更大的性能提升。Transformer 和 PMA 分别实现了 -0.110% 和 -0.100% 的评估 NE 增益,而旁路模块为 -0.085%。这表明语义 ID 能够更好地与这些能够对用户历史进行上下文化和总结的注意力机制相结合,从而带来更大的收益。

    为了进一步理解语义 ID 如何改变 Transformer 和 PMA 聚合模块中学习到的注意力模式,论文在随机子集的评估样本上计算了四个注意力分数指标:

  1. First source token attention (第一个源词元注意力): 目标序列中每个词元对源序列中第一个词元的平均注意力分数。

  2. Padding token attention (填充词元注意力): 目标序列中每个词元对源序列中填充词元的平均注意力分数。

  3. Entropy (熵): 注意力分数分布的平均熵,衡量注意力分布的扩散程度。熵越低表示注意力越集中。

  4. Token self-attention (词元自注意力): Transformer 模型中,每个词元对其自身的注意力分数。

    以下是原文 Table 7 的结果:

    First Pad Entropy Self
    Transformer + RH 0.030 0.460 2.149 0.052
    Transformer + SemID 0.043 0.418 1.967 0.045
    PMA + RH 0.071 0.351 3.075
    PMA + SemID 0.074 0.313 3.025

分析:

  • 更高的第一个源词元注意力 (First source token attention): 语义 ID 模型(Transformer + SemID 为 0.043,PMA + SemID 为 0.074)比随机哈希模型(Transformer + RH 为 0.030,PMA + RH 为 0.071)在第一个源词元上分配了更多的注意力。这可能意味着语义 ID 能够使模型更好地识别并利用序列中高信号(例如,最近或最重要的)词元。

  • 更低的填充词元注意力 (Padding token attention): 语义 ID 模型(Transformer + SemID 为 0.418,PMA + SemID 为 0.313)在填充词元上的注意力更低,而随机哈希模型更高(Transformer + RH 为 0.460,PMA + RH 为 0.351)。这表明语义 ID 使得模型能够更有效地忽略无意义的填充信息,专注于真实的用户互动。

  • 更低的熵 (Entropy): 语义 ID 模型具有更低的注意力熵(Transformer + SemID 为 1.967,PMA + SemID 为 3.025),而随机哈希模型更高(Transformer + RH 为 2.149,PMA + RH 为 3.075)。这表示语义 ID 使得注意力分布不那么分散,更集中于少数几个关键词元,表明模型能够做出更明确和有意义的注意力决策。

  • 更低的词元自注意力 (Token self-attention) (针对 Transformer): Transformer + SemID 的自注意力(0.045)低于 Transformer + RH(0.052)。这可能意味着语义 ID 的表示本身已经包含了丰富的上下文信息,使得 Transformer 倾向于更多地关注序列中的其他相关词元,而不是仅仅关注自身。

    这些注意力指标的分析结果支持了语义 ID 在用户历史建模中能够提供更稳定、更有意义的项目表示,从而帮助模型更有效地理解用户历史和上下文。

6.1.7. 生产性能提升 (Production Performance Improvement)

Semantic ID 功能已在 Meta 广告推荐系统投入生产一年多,并成为现有广告排名模型中特征重要性最高的稀疏特征。

以下是原文 Table 8 的结果:

Train NE Gain Eval NE Gain
Baseline + 6 sparse features −0.063% -0.071%
Baseline + 1 sequential feature -0.110% -0.123%

分析:

  • 显著的线上性能提升: 在 Meta 广告排名中,离线 NE 增益超过 0.02% 即被认为是显著的。本文报告了在旗舰 Meta 广告排名模型中,增加 Semantic ID 特征带来了显著的性能提升。
    • 添加 6 个稀疏的 Semantic ID 特征带来了 -0.071% 的评估 NE 增益。
    • 添加 1 个序列化的 Semantic ID 特征带来了 -0.123% 的评估 NE 增益。
  • 总体线上指标: 综合来看,在多个广告排名模型中,整合 Semantic ID 特征带来了 0.15% 的线上顶线指标性能增益。考虑到 Meta 广告推荐系统服务数十亿用户且是公司内高度优化的模型之一,0.15% 的线上性能增益被认为是非常显著的。

6.1.8. 语义与预测相似性 (Semantic and Prediction Similarity)

论文通过在线 A/B 测试来衡量预测相似性与语义相似性之间的相关性,以确保排名模型的行为与项目间的语义相似性保持一定程度的连续性。

  • 实验设置: 选择系统推荐给用户的一组项目 SS。以 50% 的概率,将 SS 变异为 SS',方法是随机将 SS 中的一个项目替换为另一个具有相同语义 ID 前缀的不同项目。

  • 指标: 计算点击损失率 (Click Loss Rate)ClickLossRate:=CTR on SCTR on SCTR on S. \mathrm{Click Loss Rate} := \frac{\mathrm{CTR \ on \ } S' - \mathrm{CTR \ on \ } S}{\mathrm{CTR \ on \ } S}.

    • 符号解释:
      • CTR on S\mathrm{CTR \ on \ } S': 变异后的项目集 SS' 的点击率 (Click-Through Rate)。
      • CTR on S\mathrm{CTR \ on \ } S: 原始项目集 SS 的点击率。
  • 结果:

    Figure 5 Click Loss Rate reduction from Semantic ID. 该图像是一个图表,展示了不同语义 ID 深度下的点击损失率。随着语义 ID 深度的增加,从 0-prefix 到 3-prefix,点击损失率逐渐降低,表明语义 ID 的优化对模型性能的提升具有积极作用。

    Figure 5 Click Loss Rate reduction from Semantic ID.

分析:

  • 预测相似性与语义相似性相关: 从 Figure 5 可以看出,随着语义 ID 前缀深度的增加(即语义变得更精细),点击损失率单调下降。这表明,如果两个项目共享更深层次的语义 ID 前缀,它们的预测点击率也越相似。这证实了模型行为与项目语义相似性之间的相关性,支持了第 6.3 节的项目表示空间分析结果。
  • 层次化代码的有效性: 语义 ID 中的代码层次结构有效地捕捉了项目语义的更细粒度细节。越深的前缀能够越精确地描述项目,因此替换一个具有更深共享前缀的项目会导致更小的点击率变化,即更低的点击损失率。

6.1.9. A/A 方差 (A/A Variance)

传统的基于随机哈希的排名模型存在固有的预测方差问题,导致下游广告投放的方差。具体来说,如果创建一个与原始项目内容完全相同的副本,但分配不同的原始 ID,由于哈希冲突,原始项目和副本将映射到不同的嵌入,从而导致模型预测和投放系统行为不同。这被称为 A/A 方差 (A/A variance),即“A/A”代表考虑的是原始项目的精确副本。这种方差是不希望的,因为它降低了广告排名顺序的鲁棒性以及系统准确目标受众的能力。

  • 语义 ID 的作用: 语义 ID 通过消除随机哈希引起的随机性来帮助减少 A/A 方差。精确的副本或非常相似的项目将通常具有相同的 kk-前缀语义 ID。
  • 衡量指标: 在线影子广告实验 (online shadow ads experiment) 中,通过测量给定模型的相对 A/A 预测差异 (AAR)。对于 A/A 对 (a1,a2)(a_1, a_2)AAR(a1,a2):=2p(a1)p(a2)p(a1)+p(a2)+ϵ, \mathrm{AAR}(a_1, a_2) := 2 \frac{p(a_1) - p(a_2)}{p(a_1) + p(a_2) + \epsilon},
    • 符号解释:
      • p(ai)p(a_i): 排名模型对项目 aia_i 的预测。
      • ϵ\epsilon: 一个小常数,用于防止分母为零。
  • 结果: 生产模型(包含六个语义 ID 稀疏特征)相比不含这些特征的相同模型,平均 AAR 降低了 43%
  • 原因推测: 这种 AAR 降低主要来自于长尾项目,这与第 6.2 节的分析一致。语义 ID 确保了语义相似的项目(包括副本)能够获得相似的嵌入表示,从而减少了由于随机哈希导致的预测波动。这对于确保广告主对 Meta 推荐系统的信任以及提高最终项目排名的稳定性至关重要。

6.2. 数据呈现 (表格)

本节已将所有表格(Table 1, 2, 3a, 3b, 4, 5, 6, 7, 8)整合到第 6.1 节的相应分析中,并严格按照 HTML <table><table> 格式(处理合并单元格)或 Markdown 格式(处理简单表格)进行了转录。

6.3. 消融实验/参数分析

论文中关于词元参数化性能 (Table 2) 的实验可以被视为一种消融实验,因为它比较了不同语义 ID 配置(如 Trigram、Fourgram、All bigrams、Prefix-ngram,以及不同 K, L 值)对模型性能的影响。通过这种比较,作者证明了 Prefix-ngram 参数化,特别是深度和基数更大的配置,对于语义 ID 的有效性至关重要。这表明了 Prefix-ngram 在捕获分层语义信息方面的优越性,是语义 ID 成功的关键组成部分。

7. 总结与思考

7.1. 结论总结

本文深入探讨了工业级推荐系统在处理高基数、动态 ID 空间和高度倾斜参与度分布时面临的挑战,并提出了语义 ID (Semantic ID) 及其增强版本 Semantic ID prefix-ngram 作为核心解决方案。研究表明,Semantic ID prefix-ngram 显著提高了推荐模型中嵌入表示的稳定性,有效缓解了随机哈希带来的数据污染和表示漂移问题。

通过在 Meta 广告排名系统上的广泛离线和在线实验,论文证实了以下关键发现:

  1. 性能显著提升: Semantic ID prefix-ngram 相比原始语义 ID 和其他基线方法,在训练和评估 NE 上均实现了显著增益,尤其在上下文感知用户历史模型中效果更佳。
  2. 增强稳定性: 语义 ID 有效减轻了由 ID 漂移引起的嵌入表示不稳定性,使得模型在更长期的训练中也能保持更好的泛化能力。
  3. 优化长尾和冷启动: 语义 ID 通过语义知识共享,极大地改善了长尾项目和新项目的建模效果,解决了推荐系统中的冷启动难题。
  4. 实际生产价值: 语义 ID 已成功集成到 Meta 生产广告排名系统,带来了高达 0.15% 的线上性能增益,并显著降低了 A/A 方差,提高了预测的稳定性和广告主对系统的信任。

7.2. 局限性与未来工作

论文虽然未设置专门的“局限性与未来工作”章节,但从其讨论中可以推断出一些潜在的局限性和启发:

  • 对内容理解模型质量的依赖: 语义 ID 的有效性高度依赖于上游内容理解模型生成高质量、语义丰富的稠密嵌入。如果内容理解模型本身存在偏差或能力不足,将直接影响语义 ID 的质量。
  • RQ-VAE 的复杂性与维护: 训练和维护像 RQ-VAE 这样复杂的模型,特别是在不断变化的项目内容和数据分布下,可能需要大量的计算资源和工程投入。例如,论文提到 RQ-VAE 在数据密度最高的区域放置多个质心可能导致大簇之间的区分度不高,这可能暗示了量化过程的一些固有挑战。
  • 参数化策略的经验性: Prefix-ngram 及其深度 nn 以及 RQ-VAE 的参数 KKLL 的选择在很大程度上是基于经验实验。如何更系统或自适应地确定这些超参数可能是一个研究方向。
  • 可解释性: 尽管语义 ID 提供了语义上的集群,但如何进一步提高整个推荐系统(特别是深度学习模型)对为什么某个项目被推荐给用户的可解释性,仍然是一个开放问题。
  • 动态调整语义 ID 空间: 尽管语义 ID 空间比原始 ID 空间稳定,但随着产品品类或用户兴趣的长期演变,语义 ID 本身也可能需要周期性更新或动态调整,以捕捉新的语义概念。如何有效且低成本地管理这种演变是一个实际挑战。

7.3. 个人启发与批判

7.3.1. 个人启发

  • “有意义的冲突”的力量: 这篇论文最核心的启发在于,并非所有冲突都是有害的。通过从“随机冲突”转向“语义上有意义的冲突”,推荐系统能够将过去被视为问题的哈希冲突,转化为促进知识共享和表示学习的强大机制。这为处理高基数和动态变化的特征提供了一个全新的视角。
  • 分层语义表示的价值: RQ-VAE 生成的分层语义代码,以及 Prefix-ngram 这种巧妙的参数化方法,使得模型能够同时从粗粒度和细粒度的语义信息中受益。这不仅提升了表示的丰富性,也极大地改善了长尾和冷启动问题,因为即使最稀有的项目也能通过其粗粒度语义前缀与更常见的项目建立联系。
  • 稳定性对生产系统的关键性: 论文通过 A/A 方差的减少,强调了表示稳定性对于在线生产系统,特别是对于广告主信任和最终排名质量的重要性。这超越了单纯的离线指标提升,直接触及了商业价值和用户体验的核心。在高度优化的系统中,即使很小的性能和稳定性提升,也能带来巨大的商业影响。
  • 内容理解与推荐系统的深度融合: 语义 ID 的成功是先进内容理解模型与推荐系统深度融合的典范。它证明了高质量的内容嵌入是构建更智能、更鲁棒推荐系统的基石。

7.3.2. 批判

  • 上游内容模型的黑盒依赖: 语义 ID 的质量直接取决于内容理解模型。如果内容模型存在偏见(例如,对某些类别或语言的数据不足),或者无法捕捉到用户真正关心的细微语义,那么语义 ID 也会继承这些问题。论文对此环节的讨论相对较少,未深入探讨内容模型自身的局限性对语义 ID 的影响。
  • RQ-VAE 的计算和存储成本: 虽然语义 ID 减少了推荐模型的嵌入表大小,但训练和维护 RQ-VAE 模型,以及存储海量项目的语义 ID 及其对应的码本,仍然需要显著的计算和存储资源。特别是对于具有数十亿甚至更多项目的系统,其整体资源开销可能依然巨大。
  • 泛化能力边界: 论文主要在 Meta 广告排名系统上验证了语义 ID 的有效性。虽然结果令人信服,但广告的性质(如生命周期短、内容驱动强)可能与其他推荐场景(如电影、新闻、电商商品)有所不同。在其他领域,用户兴趣和项目语义的动态性、粒度要求可能有所差异,语义 ID 是否能保持同等优势需要进一步验证。
  • 超参数选择的系统性: RQ-VAE 的 KKLL 值,以及 Prefix-ngram 的最大深度 nn,在论文中似乎是根据经验选择或通过试验确定的。是否能开发出更系统、自适应的方法来确定这些关键超参数,以最大化性能并最小化手动调优的工作量,值得进一步探索。
  • 语义 ID 更新机制的讨论不足: 随着时间的推移,项目的语义可能演变,或者出现全新的语义概念。论文提到了 RQ-VAE 是在过去三个月的项目内容上训练的,但对于语义 ID 本身如何定期更新、如何处理语义漂移(Semantic Drift),以及更新策略对在线系统稳定性的影响,缺乏详细讨论。

相似论文推荐

基于向量语义检索推荐的相关论文。

暂时没有找到相似论文。