《Recommender Systems with Generative Retrieval》
现代推荐系统通过将 queries
和 item candidates
嵌入到同一个统一空间中来执行大规模检索,然后通过 approximate nearest neighbor : ANN
搜索来选择给定 query embedding
的 top candidates
。在本文中,我们提出了一种新颖的生成式检索(generative retrieval
)方法,其中 retrieval model
自回归地解码 target candidates
的标识符(identifiers
)。为此,我们创建了语义上有意义的 tuple of codewords
,作为每个 item
的 Semantic ID
。给定 user session
中 items
的 Semantic IDs
,Transformer-based
的 sequence-to-sequence
模型经过训练之后,可以预测用户将与之交互的 next item
的Semantic ID
。
我们表明,使用所提范式来训练的推荐系统在各种数据集上的表现都明显优于当前的 SOTA
模型。此外,我们表明,将 Semantic IDs
纳入 sequence-to-sequence
模型可增强其泛化能力,这一点可以从 items with no prior interaction history
的检索性能得到改善中看出。
推荐系统帮助用户发现感兴趣的内容,在视频、apps
、商品、以及音乐等各种推荐领域中无处不在。现代推荐系统采用 retrieve-and-rank
策略,在 retrieval
阶段选择一组可行的 candidates
,然后使用 ranker model
对其进行排序。由于 ranker model
只对所收到的 candidates
起作用,因此希望 retrieval
阶段提供高度相关的 candidates
。
构建 retrieval
模型有标准且成熟的方法。矩阵分解(Matrix factorization: MF
)在同一空间中学习 query embeddings
和 candidate embeddings
。为了更好地捕获数据中的非线性,双编码器(dual-encoder
)架构(即一个塔用于 query
,另一个塔用于 candidate
)使用内积从而将 query embeddings
和 candidate embeddings
嵌入到同一空间中,近年来变得流行起来。要在推理过程中使用这些模型,需要使用 candidate tower
创建一个存储所有 items
的索引。对于给定的 query
,使用 query tower
获得其 embedding
,并使用 Approximate Nearest Neighbor: ANN
算法进行检索。近年来,双编码器架构也得到了扩展,用于序列推荐(sequential recommendation
),这些推荐显式地考虑了 user-item interactions
的顺序。
我们提出了一种新范式来构建生成式检索模型从而用于序列推荐。我们的方法不使用传统的 query-candidate matching
方法,而是使用端到端的生成式模型,直接预测 candidate IDs
。我们建议利用 Transformer memory (parameters)
作为端到端的索引从而用于推荐系统中的检索,这让人想起 《Transformer memory as a differentiable search index》
使用 Transformer memory
进行 document retrieval
的做法。我们将我们的方法称为 Transformer Index for GEnerative Recommenders: TIGER
。TIGER
的高级概述如 Figure 1
所示。TIGER
的独特之处在于它具有一种称为 "Semantic ID"
的 semantic representation of items
,即从每个 item
的内容信息中派生出的 a sequence of tokens
。具体来说,给定一个 item
的文本特征,我们使用 pre-trained text encoder
(例如 SentenceT5
)来生成 dense content embeddings
。然后将量化(quantization
)方案应用于 embedding of an item
以形成 ordered tokens/codewords
的集合,我们将其称为 item
的 Semantic ID
。最终,这些 Semantic IDs
用于在序列推荐任务上训练 Transformer
模型。
将 items
表示为 a sequence of semantic tokens
有许多优点。在语义上有意义的数据上训练 Transformer memory
允许在 similar items
之间共享知识。这使我们能够放弃以前在推荐模型中用作 item features
的 atomic and random item Ids
。使用 items
的 semantic token representations
,该模型不太容易受到推荐系统中固有的 feedback loop
的影响,从而使模型可以推广到语料库中新添加的 items
。此外,针对 item representation
使用 a sequence of tokens
,有助于缓解与 item corpus
规模相关的挑战:能够用 tokens
来表达的 items
的数量,等于序列中每个token
的 cardinality
的乘积。通常,item corpus size
可以达到数十亿的数量级,并且为每个 item
学习 unique embedding
可能会占用大量内存。虽然可以采用 random hashing-based
的技术来减少 item representation space
,但在本研究中,我们表明使用语义上有意义的 tokens
来用于 item representation
是一种有吸引力的替代方案。本研究的主要贡献总结如下:
1)
:我们提出了 TIGER
,这是一种新颖的 generative retrieval-based
的推荐框架,它为每个 item
分配 Semantic IDs
,并训练一个检索模型来为给定用户预测可能与之交互的 item
的 Semantic ID
。
2)
:我们表明,根据召回率和 NDCG
指标的衡量标准,TIGER
在多个数据集上的表现优于现有的 SOTA
推荐系统。
3)
:我们发现,这种生成式检索的新范式为序列推荐系统带来了两种额外的能力:
a)
:能够推荐新 items
的和低频的 items
,从而改善冷启动推荐。
b)
:能够使用一个 tunable parameter
来生成多样化的推荐。
我们提出的框架包括两个阶段:
1)
:使用内容特征生成 Semantic ID
:这涉及将 item content features
编码为 embedding vectors
,并将 embedding
量化为 semantic codewords
的元组。生成的 codewords
的元组称为 item
的 Semantic ID
。
如何评估第一阶段
Semantic ID
的质量?
在 Semantic ID
上训练生成式推荐系统:在序列推荐任务上使用 Semantic IDs
的序列训练一个 Transformer
模型。
在本节中,我们描述了 recommendation corpus
中 items
的 Semantic ID generation
过程。我们假设每个 item
都关联了内容特征,这些特征可以捕获有用的语义信息(例如标题、描述、或图像)。此外,我们假设我们可以访问一个 pre-trained content encoder
来生成 semantic embedding
pre-trained text encoders
(如 Sentence-T5
和 BERT
)可用于转换 item
的文本特征以获得 semantic embedding
。然后,为每个 item
来量化 semantic embeddings
以生成 Semantic ID
。Figure 2a
给出了该过程的 high-level
概述。
我们将 Semantic ID
定义为长度为 tuple of codewords
。元组中的每个 codeword
来自不同的 codebook
。因此,Semantic IDs
可以唯一表达的 items
数量等于 codebook sizes
的乘积。虽然生成 Semantic IDs
的不同技术会导致所生成的 Semantic IDs
具有不同的语义属性,但我们希望它们至少具有以下属性:相似的 items
(具有相似内容特征、或者 semantic embeddings
接近的 items
)应具有重叠(overlapping
)的 Semantic IDs
。例如, Semantic ID (10, 21, 35)
的 item
与 Semantic ID (10, 21, 40)
的 item
之间的相似性,应该比 Semantic ID (10, 21, 35)
的 item
与 Semantic ID (10, 23, 32)
的 item
之间的相似性更加相似。接下来,我们讨论用于 Semantic ID generation
的量化方案。
用于 Semantic IDs
的 RQ-VAE
:Residual-Quantized Variational AutoEncoder: RQ-VAE
是一种 multi-level vector quantizer
,它在残差(residuals
)上应用量化(quantization
)来生成 a tuple of codewords
(又称 Semantic IDs
)。Autoencoder
通过更新 quantization codebook
和 DNN encoder-decoder parameters
进行联合训练。Figure 3
说明了通过 residual quantization
来生成 Semantic IDs
的过程。
RQ-VAE
的输入是embedding
,该embedding
是来自预训练好的模型。这里
DNN Encoder
和DNN Decoder
采用什么架构?论文实验部分采用的是MLP
。
RQ-VAE
首先通过 encoder
latent representation
在 0-th level
(initial residual
)简单定义为 level
codebook
codebook size
。然后,通过将 level
的 codebook
的最近 embedding
来量化它。
例如:
对于 codeword
为
对于下一个级别 codeword
为
对于下一个级别 codeword
为
此过程递归重复 Semantic ID
的长度为 tuple of codewords
。这种递归方法从粗到细的粒度来近似input
。请注意,我们选择对 levels
中的每个 level
使用大小为 separate codebook
,而不是使用一个共享的大小为 codebook
。这样做是因为 residuals
的范数往往会随着 levels
的增加而下降,因此允许不同 levels
的不同粒度。
一旦我们有了 Semantic ID
quantized representation
decoder
,decoder
尝试使用 input
RQ-VAE loss
定义为:
其中:
decoder
的 output
。
stop-gradient
操作。
该 loss
联合训练 encoder
、decoder
和 codebook
。
如 《Soundstream: An end-to-end neural audio codec》
中所述,为了防止 RQ-VAE
出现 codebook collapse
(即大部分 input
仅映射到少数 codebook vectors
),我们对 codebook
使用 k-means clustering-based
的初始化。具体来说,我们在第一个 training batch
上应用 k-means
算法,并使用质心(centroids
)作为初始化。
quantization
的其他替代方案:
生成 Semantic IDs
的一个简单替代方法是使用局部敏感哈希 (Locality Sensitive Hashing: LSH
)。我们在实验章节中进行了一项消融研究,发现 RQ-VAE
确实比 LSH
效果更好。
另一种选择是分层地使用 k-means clustering
,但它会失去不同 clusters
之间的语义意义(semantic meaning
)(《A neural corpus indexer for document retrieval》
)。
我们还尝试了 VQ-VAE
,虽然它在检索过程中 generating the candidates
的性能与 RQ-VAE
类似,但它失去了 IDs
的 hierarchical nature
,而 hierarchical nature
赋予了许多新能力,这些新能力将在实验章节中讨论。
处理冲突:根据 semantic embeddings
的分布、codebook size
的选择、以及 length of codewords
,可能会发生语义冲突 semantic collisions
(即多个 items
可以映射到相同的 Semantic ID
)。为了消除冲突,我们在有序的 semantic codes
的末尾附加一个额外的 token
以使其唯一。
例如,如果两个 items
共享 Semantic ID (12, 24, 52)
,我们会附加额外的 tokens
来区分它们,将这两个 items
表示为 (12,24,52, 0)
和 (12, 24, 52, 1)
。为了检测冲突,我们维护一个 lookup table
,将 Semantic IDs
映射到相应的 items
。请注意,在训练好 RQ-VAE
模型后,仅进行一次冲突的检测和修复。此外,由于 Semantic IDs
是整数元组,因此与高维 embeddings
相比,lookup table
在存储方面更高效。
我们通过按时间顺序对用户交互的 items
进行排序来为每个用户构建 item sequences
。然后,给定形式为 next item
next item
的 Semantic ID
。
正式地,令 Semantic ID
。然后,我们将 item sequence
转换为序列 sequence-to-sequence
模型来预测 Semantic ID
,即 decoder
所生成的 Semantic ID
可能与 recommendation corpus
中的 items
不匹配。但是,正如我们在附录(Figure 6
)中所示,发生此类事件的概率很低。我们将在附录 E
中进一步讨论如何处理此类事件。
数据集:我们在 Amazon Product Reviews
数据集中三个公开的真实的 benchmarks
上对所提出的框架进行了评估,其中包含 1996
年5
月至 2014
年 7
月的用户评论和 item metadata
。具体来说,我们将 Amazon Product Reviews
数据集的三个类别用于序列推荐任务:“美容”(Beauty
)、“运动和户外”(Sports and Outdoors
)、以及“玩具和游戏”(Toys and Games
)。
Table 6
总结了数据集的统计数据。我们使用用户的 review history
创建按时间戳排序的 item sequences
,并过滤掉评论数少于 5
的用户。遵循标准评估协议(《Self-attentive sequential recommendation》
、《Recommendation as language processing (rlp): A unified pretrain, personalized prompt & predict paradigm (p5)》
),我们使用 leave-one-out
进行评估。对于每个 item sequence
,最后一个 item
用于测试,倒数第二个 item
用于验证,其余 items
用于训练。在训练期间,我们将用户历史行为序列中的 items
数量限制为 20
个。
评估指标:top-k Recall (Recall@K)
和 Normalized Discounted Cumulative Gain (NDCG@K)
,其中
RQ-VAE
的实现细节:如前所述,RQ-VAE
用于对 item
的 semantic embedding
进行量化。我们使用 pre-trained Sentence-T5
模型来获取数据集中每个 item
的 semantic embedding
。具体来说,我们使用 item
的内容特征(例如标题、价格、品牌、以及 category
)来构造一个句子,然后将其传递给 pre-trained Sentence-T5
模型以获取 768
维的 item’s semantic embedding
。
RQ-VAE
模型由三个组件组成:
一个 DNN encoder
:将 input semantic embedding
编码为 latent representation
。
residual quantizer
:输出 quantized representation
。
一个 DNN decoder
:将 quantized representation
解码回 semantic input embedding space
。
encoder
有三个中间层,大小分别为 512
、256
和128
,具有 ReLU
激活函数,final latent representation
的维度为 32
。
为了量化final latent representation
,进行了三个级别的 residual quantization
。对于每个级别,我们维护一个 cardinality 256
的 codebook
,其中 codebook
中的每个向量的维度为 32
。
在计算 total loss
时,我们使用 RQ-VAE
模型经过 20k epochs
的训练,以确保高的 codebook usage
(≥ 80%
)。
我们使用 Adagrad
优化器,学习率为 0.4
,batch size = 1024
。训练后,我们使用学到的 encoder
和 quantization component
为每个 item
生成一个 3-tuple Semantic ID
。为了避免多个 items
被映射到同一个 Semantic ID
,我们为共享相同的 first three codewords
的 items
添加一个 unique 4th code
,即与元组(7, 1, 4)
相关的两个 items
分别被分配为 (7, 1, 4, 0)
和 (7, 1, 4, 1)
(如果没有冲突,我们仍然将0
分配为第四个 codeword
)。这会导致 recommendation corpus
中每个 item
都有一个长度为 4
的唯一的 Semantic ID
。
Sequence-to-Sequence Model
实现细节:
我们使用开源的 T5X
框架来实现基于 Transformer
的 encoder-decoder
架构。
为了允许模型处理序列推荐任务的输入,sequence-to-sequence
模型的 vocabulary
包含每个 semantic codeword
的 tokens
。具体来说,vocabulary
包含 1024
(256 × 4
)个 tokens
来表示语料库中的 items
。
除了 items
的 semantic codewords
之外,我们还将 user-specific tokens
添加到 vocabulary
中。为了限制 vocabulary
的大小,我们只添加了 2000 tokens
用于 user IDs
。我们使用哈希技巧(Hashing Trick
)将原始 user ID
映射到 2000 user ID tokens
之一。
我们将输入序列构造为:user Id token
,后面跟着与给定用户的 item interaction history
相对应的 sequence of Semantic ID tokens
。我们发现,将 user ID
添加到输入中,可以让模型个性化 retrieved items
。
我们对基于Transformer
的 encoder and decoder models
分别使用 4
层,每层有 6
个 self-attention heads
,维度为 64
。我们对所有层都使用了 ReLU
激活函数。MLP
维度和 input
维度分别设置为 1024
和 128
。
我们使用了 0.1
的 dropout
。
总体而言,该模型有大约 13 million
个参数。
我们针对 “美容” 和 “运动和户外” 数据集对该模型进行了 200k steps
训练。由于 “玩具和游戏” 数据集较小,因此仅进行了 100k steps
训练。我们使用的 batch size = 256
。前 10k steps
的学习率为 0.01
,然后遵循平方根倒数的衰减计划。
baseline
:
GRU4Rec
:是第一个基于 RNN
的方法,它使用定制的GRU
进行序列推荐任务。
Caser
:使用 CNN
架构通过应用水平卷积和垂直卷积运算来捕获高阶马尔可夫链,从而用于序列推荐。
HGN
:Hierarchical Gating Network
通过新的门控架构捕获长期用户兴趣和短期用户兴趣。
SASRec
:Self-Attentive Sequential Recommendation
使用一个 causal mask Transformer
来建模用户的序列交互。
BERT4Rec
:BERT4Rec
通过使用双向自注意力 Transformer
来解决单向架构的局限性,从而用于序列推荐任务。
FDSA
:Feature-level Deeper Self-Attention Network
除了 item embeddings
之外,还结合了 item features
作为 Transformers
中 input sequence
的一部分。
S3-Rec
:Self-Supervised Learning for Sequential Recommendation
提出在自监督任务上预训练一个双向的 Transformer
从而改进序列推荐。
P5
:P5
是一种最近的方法,它使用 pretrained Large Language Model
将不同的推荐任务统一在单个模型中。
值得注意的是,所有基线(P5
除外)都使用双编码器(dual encoder
)学习高维向量空间,其中用户过去的 item interactions
和 candidate items
被编码为高维 representation
,并使用 Maximum Inner Product Search: MIPS
来检索用户可能与之交互的 next candidate item
。相比之下,我们新颖的生成式检索框架使用 sequence-to-sequence
模型直接 token-by-token
地预测 item
的 Semantic ID
。
我们对我们提出的 TIGER
在序列推荐任务上进行了广泛的分析,并与上述基线进行了比较。除 P5
之外,所有基线的结果均取自 《S3-rec: Self-supervised learning for sequential recommendation with mutual information maximization》
提供的可公开访问的结果。对于 P5
,我们使用作者提供的源代码。但是,为了进行公平的比较,我们更新了数据预处理方法,以与其他基线和我们的方法保持一致。我们在附录 D
中提供了更多详细信息。
结果显示在 Table 1
中。我们观察到 TIGER
的表现始终优于现有基线。我们看到我们考虑的所有三个基准都有显著的改进。特别是,与第二好的基线相比,TIGER
在 Beauty
基准上的表现要好得多,与 SASRec
相比,NDCG@5
提高了29%
,与 S3-Rec
相比,Recall@5
提高了17.3%
。同样,在玩具和游戏数据集上,TIGER
在 NDCG@5
和 NDCG@10
中分别提高了 21%
和15%
。
我们在 Table 9
中显示,对于 TIGER
,指标的标准差并不显著。
附录 D
:P5
源代码对Amazon
数据集进行预处理:首先为每个用户创建 sessions
,其中包含用户评论过的按时间顺序排列的 items
的列表。创建这些 sessions
后,数据集中的原始 item IDs
将重新映射到整数 1, 2, 3, ...
。因此,第一个 session
中的第一个 item
的 ID
为 “1”
,第二个 item
(如果之前未见过)的 ID
为 “2”
,依此类推。值得注意的是,此预处理方案在创建 training and testing splits
之前应用的。这将创建一个序列的数据集,其中许多序列的形式为 a, a + 1, a + 2, ...
。鉴于 P5
使用 Sentence Piece tokenizer
,user session
中的 test and train items
可能会共享 sub-word
,并可能导致推理过程中的信息泄露。
为了解决泄漏问题,我们不再为 items
分配按顺序增加的整数 ID
,而是分配随机整数 ID
,然后创建 splits
以进行训练和评估。P5
的其余代码与论文中提供的源代码保持一致。此数据集的结果在 Table 7
中报告为 ‘P5’
行。我们还从头开始自己实现了一个 P5
版本,并仅在序列推荐任务上训练模型。我们实施的结果被描述为 “P5-ours”
。我们还能够在 P5
实施中验证,使用 consecutive integer
的序列作为 item IDs
有助于我们获得与 P5
中报告的指标相同或更好的指标。
在本节中,我们将分析 RQ-VAE Semantic IDs
的几个重要特征。具体来说:
我们首先进行定性分析,以观察 Semantic IDs
的层次特性(hierarchical nature
)。
接下来,我们通过与另一种 hashing-based quantization
方法进行性能对比,从而评估 using RQ-VAE for quantization
的设计选择的重要性。
最后,我们通过将 TIGER
与使用 Random ID
进行 item representation
的sequence-to-sequence
模型进行比较,进行消融研究从而探讨 using Semantic IDs
的重要性。
定性分析:在 Figure 4
中,我们分析了针对 Amazon Beauty
数据集学到的 RQ-VAE Semantic IDs
。为了便于说明,我们将 RQ-VAE levels
数量设置为 3
、codebook size
分别为 4
、16
和 256
。即,对于给定的一个 item
的 Semantic ID
在 Figure 4a
中,我们使用 item
的 category
,从而在数据集的 overall category distribution
中可视化 categories
。如 Figure 4a
所示,item
的 high-level category
。例如,Hair
)相关的大多数商品。类似地,items
是用于面部、嘴唇和眼睛的“化妆品”(Makeup
)和“皮肤” (Skin
)的商品。
在 Figure 4b
中,我们还通过固定 possible values
来可视化 category distribution
从而可视化 RQ-VAE Semantic IDs
的层次特性。
我们再次发现第二个 codeword
high-level semantics
进一步分类为细粒度 categories
。RQ-VAE
学到的 hierarchical nature of Semantic IDs
开启了广泛的新能力,这些功能将在后续章节中讨论。与基于随机的原子的 IDs
上学习 item embeddings
的现有推荐系统相反,TIGER
使用 Semantic IDs
,其中相似的 items
具有 overlapping codewords
,这使模型能够有效地从数据集中语义相似的items
来共享知识。
Hashing vs. RQ-VAE Semantic IDs
:我们通过将 RQ-VAE
与局部敏感哈希(Locality Sensitive Hashing: LSH
)在 Semantic ID generation
方面进行比较来研究 RQ-VAE
在我们的框架中的重要性。LSH
是一种流行的哈希技术,可以轻松适应我们的 setting
。
为了生成 LSH Semantic IDs
,我们使用 embedding
向量 integer code
,即 codewords
LSH Semantic ID
。
在 Table 2
中,我们将 LSH Semantic ID
的性能与我们提出的 RQ-VAE Semantic ID
进行了比较。在此实验中,对于 LSH Semantic IDs
我们使用了 RQ-VAE
具有可比的 cardinality
。超平面的参数是从标准正态分布中随机采样的,这确保了超平面是球对称的。
我们的结果表明,RQ-VAE
的表现始终优于LSH
。这说明,在给定相同的 content-based semantic embedding
的情况下,通过非线性的 Deep Neural Network: DNN
架构来学习 Semantic IDs
,要比使用随机投影可以产生更好的 quantization
。
Random ID vs. Semantic ID
:我们还评估了 Semantic IDs
在我们的生成式检索推荐系统中的重要性。具体来说,我们将随机生成的 IDs
与 Semantic IDs
进行比较。为了生成 Random ID baseline
,我们为每个 item
分配 codewords
。item
的长度为 Random ID
为 Random ID baseline
,我们设置 RQ-VAE Semantic IDs
具有可比的 cardinality
。
Table 2
显示了 Random ID
与 RQ-VAE and LSH Semantic IDs
的比较。我们看到 Semantic IDs
的表现始终优于 Random ID baseline
,凸显了利用 content-based
的语义信息的重要性。
我们描述了我们所提出的生成式检索框架直接产生的两个新能力,即冷启动推荐(cold-start recommendations
)和推荐多样性(recommendation diversity
)。我们将这些功能称为“新”,因为现有的序列推荐模型(参见前面实验章节中的 baselines
)不能直接用于满足这些 real-world use cases
。这些能力源于 RQ-VAE based Semantic IDs
与我们框架的生成式检索方法之间的协同作用。我们将在以下章节中讨论如何在这些 settings
中使用 TIGER
。
Cold-Start Recommendation
:在本节中,我们将研究我们提出的框架的冷启动推荐的能力。由于现实世界 recommendation corpus
的快速变化性质,新 items
不断被引入。由于新添加的 items
在 training corpus
中缺乏 user impressions
,使用 random atomic ID
来表示 item
的现有推荐模型无法检索 new items
作为潜在的 candidates
。相比之下,TIGER
框架可以轻松执行冷启动推荐,因为它在预测 next item
时利用了 item semantics
。
对于该项分析,我们考虑了来自 Amazon Reviews
的 Beauty
数据集。为了模拟新添加的 items
,我们从 training data split
中删除了 5%
的 test items
。我们将这些被删除的 items
称为 unseen items
。从 training split
中删除 items
可确保不存在关于 unseen items
的数据泄漏。与之前一样,我们使用长度为 4
的 Semantic ID
来表示 items
,其中 first 3 tokens
是使用 RQ-VAE
来生成的,第 4
个 token
用于确保所有 seen items
都存在一个独一无二的 ID
。我们在 training split
上训练 RQ-VAE quantizer
和 sequence-to-sequence
模型。训练完成后,我们使用 RQ-VAE model
为数据集中的所有 items
生成 Semantic IDs
,包括 item corpus
中的任何 unseen items
。
给定模型所预测的 Semantic ID
ID
的 seen item
。请注意,根据定义,模型所预测的每个 Semantic ID
最多可以匹配 training dataset
中的一个 item
。此外,具有相同 first three semantic tokens
(即 unseen items
将包含在 retrieved candidates
的列表中。最后,在检索 top-K candidates
时,我们引入了一个超参数 unseen items
的最大比例。
在 Figure 5
中,我们在 cold-start recommendation setting
上比较了 TIGER
与 k-Nearest Neighbors: kNN
方法的性能。对于 KNN
,我们使用 semantic representation space
来执行最近邻搜索。我们将 KNN-based baseline
称为 Semantic_KNN
。
Figure 5a
显示,对于所有 Recall@K
指标,我们的框架(Semantic_KNN
。
在 Figure 5b
中,我们对各种 Semantic_KNN
进行了比较。对于所有 settings
,我们的方法均优于基线。
Recommendation diversity
:虽然 Recall
和 NDCG
是评估推荐系统的主要指标,但 predictions
的多样性是另一个关键目标。多样性较差的推荐系统可能不利于用户的长期 engagement
。在这里,我们讨论如何使用我们的生成式检索框架来预测多样化的 items
。我们表明,解码过程中 temperature-based sampling
可以有效地用于控制 model predictions
的多样性。虽然 temperature-based sampling
可以应用于任何现有的推荐模型,但由于 RQ-VAE Semantic IDs
的属性,TIGER
允许跨各个 levels of hierarchy
进行采样。例如,sampling the first token of the Semantic ID
允许从 coarse-level categories
中检索 items
,而 sampling a token from second/third token
允许 sampling items within a category
。
我们使用 Entropy@K
指标来定量地测量 predictions
的多样性,其中 entropy
是根据模型所预测的 top-K items
的 distribution of the ground-truth categories
来计算的。我们在 Table 3
中报告了各种温度值的 Entropy@K
。我们观察到,解码阶段的 temperature-sampling
可有效用于增加 items
的 ground-truth categories
的多样性。我们还在 Table 4
中进行了定性分析。
我们在 Table 5
中测量了当 sequence-to-sequence model
中改变层的数量时的效果。我们发现,随着网络规模的扩大,指标略有改善。我们还测量了提供 user information
的效果,结果列于 Table 8
中。
由于模型以自回归的方式解码 codewords of the target Semantic ID
,因此模型可能会预测无效的 IDs
(即,未映射到 recommendation dataset
中任何 item
的 IDs
)。在我们的实验中,我们使用长度为 4
的 semantic IDs
,每个 codeword
的 cardinality
为 256
(即,每个 level
的 codebook size = 256
)。此组合能够覆盖的 possible IDs
数量为 4 trillion
。另一方面,数据集中我们所考虑的 items
的数量为 10K-20K
(参见 Table 6
)。
即使 valid IDs
的数量只是所有完整 ID space
的一小部分,然而我们观察到模型几乎总是预测 valid IDs
。在 Figure 6
中,我们将 TIGER
所生成的 invalid IDs
的比例可视化为 number of retrieved items
top-10 predictions
(即,invalid IDs
的比例从 ~0.1% − 1.6%
不等。为了抵消 invalid IDs
的影响并始终获得 top-10 valid IDs
,我们可以增加 beam size
并过滤 invalid IDs
。
值得注意的是,尽管生成了 invalid IDs
,但与其他用于序列推荐的流行方法相比,TIGER
实现了 SOTA
的性能。处理 invalid tokens
的一个扩展可能是:当模型生成了 invalid tokens
时候执行 prefix matching
。Prefix matching of Semantic IDs
将允许我们检索出与模型生成的 tokens
相似语义含义的 items
。鉴于我们的 RQ-VAE tokens
的 hierarchical nature
, prefix matching
可以被认为是模型预测 item category
而不是 item index
。请注意,这样的扩展可以进一步提高 recall/NDCG
指标。我们将这种扩展留作未来的工作。
Semantic ID length and codebook size
的影响:我们尝试改变 Semantic ID length
和 codebook size
,例如让 ID
由 6 codewords
组成,每个 codebook
的大小为 64
。我们注意到,TIGER
的性能对这些变化很鲁棒。但是,请注意,input sequence length
会随着 ID
的增加而增加(即每个 item ID
需要更多的 codewords
),这使得 transformer-based
的 sequence-to-sequence
模型的计算成本更高。
可扩展性:为了测试 Semantic IDs
的可扩展性,我们进行了以下实验:我们将所有三个数据集组合起来,并为来自这三个数据集的entire set of items
生成 Semantic IDs
。然后,我们将这些 Semantic IDs
用于 Beauty
数据集上的推荐任务。我们将此实验的结果与仅从 Beauty
数据集来生成 Semantic IDs
的原始实验进行比较。结果列于 Table 10
中。我们发现这里的性能仅略有下降。
推理成本:尽管我们的模型在序列推荐任务上取得了显著的成功,但我们注意到,由于使用 beam search
进行自回归地解码,我们的模型在推理过程中的计算成本可能比 ANN-based
的模型更高。我们强调,优化 TIGER
的计算效率并不是这项工作的主要目标。相反,我们的工作开辟了一个新的研究领域:Recommender Systems based on Generative Retrieval
。作为未来工作的一部分,我们将考虑如下的方法:缩小模型、或探索其它方法来提高推理效率。
lookup tables
的内存成本:我们为 TIGER
维护两个 lookup hash tables
:一个 Item ID to Semantic ID table
、以及一个Semantic ID to Item ID table
。请注意,这两个表都只生成一次,然后冻结:它们是在 RQ-VAE-based Semantic ID generation model
完成训练后所生成的,之后,它们被冻结以进行 sequence-to-sequence transformer model
的训练。每个 Semantic ID
由 a tuple of 4 integers
组成,每个整数以 8 bits
存储,因此每个 item
总共 32 bits
。每个 item
都由一个Item ID
来表示,存储为一个 32 bit integer
。因此,每个 lookup table
的大小将为 bits
的量级,其中 items
的数量。
embedding tables
的内存成本:与传统推荐系统相比,TIGER
使用的 embedding tables
要小得多。这是因为传统推荐系统为每个 item
存储一个 embedding
,而 TIGER
仅为每个 semantic codeword
存储一个 embedding
。在我们的实验中,我们使用 4 codewords
(每个 codeword
的 cardinality
为 256
)来表示 Semantic ID
,从而得到 1024 embeddings
(1024 = 256×4
)。对于传统推荐系统,embeddings
的数量为 items
的数量。在我们的实验中,10K
到 20K
,具体取决于数据集。因此,TIGER
的 embedding table
的内存成本为 embedding
的维度,而传统推荐系统中 embedding lookup tables
的内存成本为