Recommender Systems with Generative Retrieval

516 阅读9分钟

proceedings.neurips.cc/paper_files…

github:

Summary

本文提出了一种名为 TIGER(Transformer Index for GEnerative Recommenders)的生成式检索推荐框架。该框架的核心是为每个物品创建语义ID,将序列推荐转化为生成式检索任务。通过基于 Transformer 的seq2seq模型预测下一个物品的语义ID。

Introduction

Traditional Method

  • 检索 - 排序” 策略
    • 检索阶段选择一组可行的候选物品,然后使用排序模型对这些候选物品进行排序
  • 检索模型构建
    • 矩阵分解架构
      • 把“用户-物品交互”记录成一个矩阵
      • 训练模型,让用户低维向量和物品低维向量内积预测用户对物品兴趣
    • 双编码器架构(query tower+candidate tower)
      • 利用候选塔创建一个存储所有物品嵌入的索引
      • 使用查询塔获得query的嵌入
      • 使用近似最近邻(ANN)算法进行检索
    • 序列推荐
      • Query Tower 是由用户的行为序列(点击、浏览、购买记录)编码成向量。
image.png

Propose

  • End2End预测物品id
  • Transformer的记忆(参数)作为推荐系统中检索的E2E索引
  • 为每个物品分配语义 ID,并训练检索模型预测用户可能交互的物品的语义 ID。。
    • 给定物品的文本特征,使用预训练的文本编码器(SentenceT5)生成密集的内容嵌入
    • 对物品的嵌入应用量化方案,形成一组有序的标记 / 码字,我们将其称为物品的语义ID
    • 这些语义ID用于在序列推荐任务上训练Transformer模型。
  • 优势:
    • 解决传统推荐系统用“随机ID”表示物品,不具备语义,无法很好泛化且占用大量内存的问题
    • 语义相似物品之间可以共享信息
    • 直接预测下一个物品的语义 ID,无需大规模计算内积搜索
image.png

Framework

  • 利用内容特征生成语义ID(物品的内容特征->嵌入向量->语义ID)(fig 2a)
  • 基于语义 ID 训练生成式推荐系统
image.png

语义ID生成

语义 ID 定义

长度为P的码字元组,每个码字来自不同码本,能表示的物品数量为各码本大小乘积,且相似物品的语义ID应具有重叠性。

RQ-VAE 生成语义 ID

作为多级向量量化器,通过对残差进行量化生成语义 ID。

  1. 先编码输入得到潜在表示 z:=E(x)

  2. 再从 0 级开始递归计算残差并在对应码本中找到最接近嵌入,得到各码字(索引号);

    1. 量化过程一共m层,每层有独立codebook CdC_d,初始残差r0r_0=z
    2. 第x层量化结果:c0=argminir0eic_{0}=\arg \min _{i}\left\|r_{0}-e_{i}\right\|,即为选中的codebook索引(codebook C0={ek}k=1KC_0=\{e_k\}^K_{k=1})
    3. 新的残差:r1=r0ec0,ec0C0r_1=r_0-e_{c0}, e_{c0} \in C_0(ecie_{ci}即为codebookicodebook_i在索引为c0c_0的embedding)
    4. 重复m次得到m个码字构成语义ID
    5. 每个codebook的大小可能不同且相互独立
  3. 同时通过特定损失函数联合训练编码器、解码器和码本,并采用 k-means 聚类初始化码本以防止码本崩溃。

    1. z~:=d=0m1eci\widetilde{z} := \sum_{d=0}^{m-1} e_{c_{i}}
    2. z~ \widetilde{z}传给decoder重新生成x
    3. RQ-VAE 的损失为L(x):=Lrecon+LrqvacL(x):=L_{recon}+L_{rqvac}
      1. Lrecon:=xx^2L_{recon}:=∥x−\hat{x}∥^2
      2. Lrqvae:=d=0m1sg[ri]eci2+βrisg[eci]2L_{\text{rqvae}} := \sum_{d=0}^{m-1} \left| \text{sg}\left[r_{i}\right] - e_{c_{i}} \right|^{2} + \beta \left| r_{i} - \text{sg}\left[e_{c_{i}}\right] \right|^{2},sg为stop gradient,sg[x]表示不更新x
    4. 码本崩溃:codebook 随机初始化,某些 codeword 可能一开始就离所有输入样本较远,采用k-means 聚类的码本初始化方法。
      1. 取出 第一个训练批次的潜在表示 zj=E(xj){z_j=E(x_j)}

      2. 对这些向量执行 k-means 聚类,将训练数据划分成K个簇

      3. 用这K个簇的质心作为 codebook 初始化

  4. 其他量化方案对比:LSH 表现不如 RQ-VAE,层次化 k-means 会丢失聚类间语义信息,VQ-VAE 缺乏 ID 的层次结构。

  5. 冲突处理:在有序语义码的末尾附加额外标记以确保唯一性。例如,若两个物品共享语义 ID(12, 24, 52),则将它们表示为(12, 24, 52, 0)和(12, 24, 52, 1)

image.png

2 基于语义 ID 的生成式检索

  1. 序列构建:按时间顺序整理用户的物品交互历史,形成物品序列。Useru:(item1,item2,,itemn)itemi即为语义ID序列User_u:(item_1,item_2,…,item_n),item_i即为语义ID序列
  2. 生成式预测任务:将上述构建的物品序列,训练seq2seq模型直接预测下一个物品的语义 ID。
  3. 特殊情况说明:由于生成式框架的特性,可能出现生成的语义 ID 与语料库中物品不匹配的情况,e.g.:如果物品库中只有 (1, 5, 3)(2, 4, 6) 这样的 Semantic ID,模型有可能生成 (1, 4, 6),这不是任何真实物品。(应对:)

实验(解释)

  • 数据集选择:选取亚马逊产品评论数据集中的三个类别(“美妆”“运动与户外”“玩具与游戏”),这些数据集包含丰富的用户交互和物品元数据,能有效验证推荐模型在不同场景下的表现。
  • 评估指标:采用 Recall@K 和 NDCG@K,其中 Recall@K 衡量模型检索到相关物品的能力,NDCG@K 则考虑了物品的相关性排序质量,两者结合可全面评估推荐性能。
  • RQ-VAE 实现细节
    • 利用物品的内容特征(如标题、价格、品牌和类别)构建一个句子,然后将其输入预训练的 Sentence-T5 模型,得到 768 维的物品语义嵌入
    • RQ-VAE 模型由三个部分组成:DNN 编码器、残差量化器,DNN 解码器。
    • 编码器
      • 三个中间层,大小分别为 512、256 和 128,采用 ReLU 激活函数,最终的潜在表示维度为 32。
    • 残差量化:
      • 为了量化该表示,我们进行三级残差量化。每一级都有一个基数K为 256 的码本,码本中的每个向量维度为 32。
    • 计算总损失时,我们使用β=0.25。RQ-VAE 模型训练 20k 个 epoch,以确保较高的码本使用率(≥80%)。我们使用 Adagrad 优化器,学习率为 0.4,批大小为 1024。
    • 训练完成后,使用学习到的编码器和量化组件为每个物品生成一个 3 元组的语义 ID。为避免多个物品映射到相同的语义 ID,我们为共享前三个码字的物品添加一个唯一的第 4 个码,例如,与元组(7,1,4)相关联的两个物品分别被分配为(7,1,4,0)和(7,1,4,1)(如果没有冲突,我们仍将第 4 个码字分配为 0)。这使得推荐语料库中的每个物品都有一个长度为 4 的唯一语义 ID。
  • 序列到序列模型实现细节
    • 使用开源的 T5X 框架。
    • 序列到序列模型的词汇表包含每个语义ID的标记,即 1024 个(256×4)来表示语料库中的物品。
    • 我们还在词汇表中添加了 2000 个用户 ID 标记。
      • 使用哈希技巧 将原始用户 ID 映射到 2000 个用户 ID 标记中的一个。
    • 最终构建的输入序列:用户 ID 标记,后跟其交互物品的语义 ID 标记序列。

Performance

所有基线模型(除 P5 外)都使用双编码器学习高维向量空间,将用户过去的物品交互和候选物品编码为高维表示,并使用最大内积搜索(MIPS)检索用户可能交互的下一个候选物品。

image.png

物品表示

  • 对于物品的某个语义 ID((c_1, c_2, c_3)),有(0 ≤ c_1 ≤ 3),(0 ≤ c_2 ≤ 15),(0 ≤ c_3 ≤ 255),分析各码字的语义

image.png

  • 随机 ID 与 RQ-VAE 和 LSH 语义 ID 的比较

image.png

新能力

  1. 冷启动推荐能力

    • 背景:现实中推荐语料库新物品不断增加,现有模型因新物品缺乏交互记录难以推荐,而 TIGER 利用物品语义信息可实现冷启动推荐。
    • 实验设计:在 “美妆” 数据集上,移除 5% 测试物品作为未见过的新物品,训练模型后生成包括新物品在内的所有物品的语义 ID,通过超参数(\epsilon)控制新物品在推荐结果中的最大比例。
    • 结果:TIGER 在不同ϵ\epsilon设置下(尤其是ϵ\epsilon ≥0.1)时),在 Recall@K 指标上均优于基于语义空间近邻搜索的 Semantic_KNN 方法。

image.png

image.png

  1. 推荐多样性控制能力

    • 背景:推荐多样性对用户长期参与很重要,TIGER 可通过解码时的温度采样控制推荐多样性。
    • 机制:借助 RQ-VAE 语义 ID 的层次特性,可在不同层级采样(如粗粒度类别或类别内物品),基于温度的采样能调节多样性。
    • 结果:通过 Entropy@K 指标可知,温度越高(如 T=2.0),预测物品的类别分布熵越大,多样性越高,定性分析也验证了这一点。

image.png

image.png

消融研究(翻译)

  • 序列到序列模型中层数变化带来的影响:随着网络规模的增大,各项指标略有提升。

image.png

  • 提供用户信息带来的影响

image.png

无效 ID

  1. 无效 ID 的产生原因:由于模型自回归解码语义 ID 的特性,可能生成无法对应数据集中任何物品的无效 ID,但这种情况发生的概率极低。
  2. 无效 ID 的比例:实验中语义 ID 组合涵盖的可能 ID 数量极大(约 4 万亿),而数据集物品仅 1 万 - 2 万,即便如此,top-10 预测中无效 ID 比例仅为 0.1%-1.6%。
  3. 处理方式:可通过增大束搜索大小并过滤无效 ID,确保获取有效的 top-K 推荐结果;未来可探索前缀匹配扩展方法,利用语义 ID 的层次结构检索相似语义物品,进一步提升性能。
  4. 结论:尽管存在无效 ID,TIGER 仍能保持最先进的推荐性能,且无效 ID 问题可通过简单方法缓解。

image.png