论文状态:已完成

Generative Sequential Recommendation with GPTRec

发表:2023/06/20
原文链接PDF 下载
价格:0.100000
价格:0.100000
价格:0.100000
已有 3 人读过
本分析由 AI 生成,可能不完全准确,请以原文为准。

TL;DR 精炼摘要

本文提出基于GPT-2的GPTRec生成式序列推荐模型,采用SVD子ID词元化减少大词汇表问题,并引入Next-K生成策略优化推荐列表的复杂目标。实验表明,GPTRec在MovieLens-1M上推荐质量与SASRec相当,嵌入表规模缩小40%。

摘要

Sequential recommendation is an important recommendation task that aims to predict the next item in a sequence. Recently, adaptations of language models, particularly Transformer-based models such as SASRec and BERT4Rec, have achieved state-of-the-art results in sequential recommendation. In these models, item ids replace tokens in the original language models. However, this approach has limitations. First, the vocabulary of item ids may be many times larger than in language models. Second, the classical Top-K recommendation approach used by these models may not be optimal for complex recommendation objectives, including auxiliary objectives such as diversity, coverage or coherence. Recent progress in generative language models inspires us to revisit generative approaches to address these challenges. This paper presents the GPTRec sequential recommendation model, which is based on the GPT-2 architecture. GPTRec can address large vocabulary issues by splitting item ids into sub-id tokens using a novel SVD Tokenisation algorithm based on quantised item embeddings from an SVD decomposition of the user-item interaction matrix. The paper also presents a novel Next-K recommendation strategy, which generates recommendations item-by-item, considering already recommended items. The Next-K strategy can be used for producing complex interdependent recommendation lists. We experiment with GPTRec on the MovieLens-1M dataset and show that using sub-item tokenisation GPTRec can match the quality of SASRec while reducing the embedding table by 40%. We also show that the recommendations generated by GPTRec on MovieLens-1M using the Next-K recommendation strategy match the quality of SASRec in terms of NDCG@10, meaning that the model can serve as a strong starting point for future research.

思维导图

论文精读

中文精读

1. 论文基本信息

1.1. 标题

Generative Sequential Recommendation with GPTRec

1.2. 作者

Aleksandr V. Petrov (University of Glasgow, United Kingdom) 和 Craig Macdonald (University of Glasgow, United Kingdom)

1.3. 发表期刊/会议

该论文发表于 arXiv (预印本),发布时间为 2023 年 6 月 19 日。作为一个预印本,它尚未经过同行评审,但通常代表了研究领域的前沿工作和新颖思想。

1.4. 发表年份

2023

1.5. 摘要

序列推荐 (Sequential recommendation) 是一项重要的推荐任务,旨在预测序列中的下一个物品。近期,语言模型的变体,特别是基于 Transformer 的模型,如 SASRec 和 BERT4Rec,在序列推荐任务中取得了最先进的 (state-of-the-art) 结果。这些模型通过用物品 ID 替换原始语言模型中的词元 (token) 来实现。然而,这种方法存在局限性:首先,物品 ID 的词汇量可能比语言模型中的词汇量大很多倍;其次,这些模型使用的经典 Top-K 推荐方法对于复杂推荐目标(包括多样性、覆盖率或连贯性等辅助目标)可能不是最优的。生成式语言模型 (generative language models) 的最新进展启发作者重新审视生成式方法以应对这些挑战。

本文提出了 GPTRec 序列推荐模型,该模型基于 GPT-2 架构。GPTRec 通过使用一种新颖的 SVD Tokenisation 算法将物品 ID 拆分为子 ID 词元 (sub-id tokens),该算法基于用户-物品交互矩阵的奇异值分解 (SVD decomposition) 得到的量化物品嵌入 (quantised item embeddings),从而解决了大词汇量问题。论文还提出了一种新颖的 Next-K recommendation 策略,该策略逐项生成推荐,并考虑了已推荐的物品。Next-K 策略可用于生成复杂的相互依赖的推荐列表。

作者在 MovieLens-1M 数据集上对 GPTRec 进行了实验,结果表明,通过使用子项词元化 (sub-item tokenisation),GPTRec 在推荐质量上可以与 SASRec 媲美,同时将嵌入表的大小减少了 40%。论文还展示了 GPTRec 在 MovieLens-1M 上使用 Next-K recommendation 策略生成的推荐在 NDCG@10 方面与 SASRec 的质量相当,这意味着该模型可以作为未来研究的有力起点。

1.6. 原文链接

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

2. 整体概括

2.1. 研究背景与动机

序列推荐系统关注用户与物品交互的顺序,这在许多场景中至关重要(例如,看剧集时有明确的顺序)。当前,基于 Transformer 的模型,如 SASRec 和 BERT4Rec,通过将物品 ID 视为语言模型中的词元 (token) 来适应序列推荐任务,并取得了最先进的 (state-of-the-art) 性能。

然而,这种适应面临两个主要挑战:

  1. 大规模词汇量问题 (Large Vocabulary Problem): 物品 ID 的数量可能远超自然语言中的词元 (token) 数量,导致巨大的物品嵌入表 (item embedding table),这会消耗大量 GPU 内存,使得模型训练在物品数量庞大的数据集上变得不切实际。

  2. Top-K 策略的局限性 (Limitations of Top-K Strategy): 传统的 Top-K 推荐方法独立地对每个物品进行评分和排序。这种方法难以优化多样性、覆盖率、连贯性等复杂推荐目标,因为相似物品往往得分相似,导致推荐列表缺乏多样性。

    生成式语言模型(如 GPT 系列)在多种任务上的成功启发研究者重新审视生成式方法,以期解决序列推荐中的这些挑战。

2.2. 核心贡献/主要发现

本文通过引入 GPTRec 模型,并提出两种创新机制,有效应对了上述挑战:

  1. 提出 SVD Tokenisation 算法以解决大词汇量问题:

    • 将物品 ID 拆分为多个子项词元 (sub-item tokens),而不是为每个物品 ID 分配一个独立的词元 (token)。
    • 该算法基于用户-物品交互矩阵的 SVD 分解获得的量化物品嵌入 (quantised item embeddings) 来生成子项词元。
    • 主要发现: 在 MovieLens-1M 数据集上,GPTRec 使用 SVD Tokenisation 可以将嵌入表大小减少 40%,同时保持与 SASRec 相当的推荐质量。对于更大的数据集,这种内存效率的优势将更加显著。
  2. 提出 Next-K recommendation 策略以实现复杂推荐目标:

    • 这是一种生成式推荐策略,逐项生成推荐,并在生成第 kk 个物品时,会考虑之前已生成的 1,,k11, \dots, k-1 个物品。
    • 这种策略能够更好地处理推荐物品之间的相互依赖关系,从而有望优化多样性、覆盖率和连贯性等辅助目标。
    • 主要发现: 即使未经专门为 Next-K 生成优化的训练,GPTRec 在 Next-K 模式下的 NDCG@10 性能也能与 SASRec 媲美,这表明其作为未来强化学习微调的起点潜力巨大。
  3. 提出 GPTRec 模型:

    • 基于 GPT-2 架构,并采用 Language Modelling 目标和 Cross-Entropy 损失函数。

    • 主要发现:one-token-per-item (每个物品一个词元) 模式下,GPTRec-TopK 的性能与 BERT4Rec 相当,并优于 SASRec,这间接证明了 Cross-Entropy 损失对于下一个物品预测任务的有效性优于 Binary Cross-Entropy

      总而言之,该论文为生成式序列推荐提供了一个有前景的框架,解决了现有模型在处理大规模物品和复杂推荐目标时的内存效率和灵活性问题,并为未来结合强化学习等技术进一步优化推荐质量奠定了基础。

3. 预备知识与相关工作

3.1. 基础概念

为了更好地理解 GPTRec 模型及其创新点,我们需要了解以下几个基础概念:

  • 序列推荐 (Sequential Recommendation): 这是一种推荐系统任务,旨在根据用户过去与物品交互的顺序(即历史序列)来预测用户接下来最可能交互的物品。它强调交互的动态性和时序性。
  • Transformer 模型 (Transformer Model): 一种由 Vaswani 等人于 2017 年提出的深度学习模型架构,最初用于自然语言处理 (NLP)。它完全依赖于自注意力 (self-attention) 机制来捕捉序列中的长距离依赖关系,而不是循环神经网络 (RNN) 或卷积神经网络 (CNN)。Transformer 模型通常包含编码器 (Encoder) 和解码器 (Decoder) 两部分。
    • 自注意力机制 (Self-Attention Mechanism): Transformer 的核心。它允许模型在处理序列中的每个元素时,都能考虑到序列中所有其他元素的重要性,并计算出一个加权和作为当前元素的表示。其计算公式为: Attention(Q,K,V)=softmax(QKTdk)V \mathrm{Attention}(Q, K, V) = \mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V 其中,
      • QQ (Query): 查询矩阵,由输入序列转换而来。
      • KK (Key): 键矩阵,由输入序列转换而来。
      • VV (Value): 值矩阵,由输入序列转换而来。
      • dkd_k: 键向量的维度,用于缩放,防止内积过大导致 softmax 函数梯度过小。
      • softmax: 归一化指数函数,将注意力权重转换为概率分布。
      • QKTQK^T: 计算查询与所有键的点积,表示每个查询对每个键的关注程度。
      • softmax(...)V: 将注意力权重应用于值矩阵,得到加权的上下文表示。
  • GPT-2 架构 (GPT-2 Architecture): 是一种基于 Transformer 解码器 (Decoder) 部分的生成式预训练语言模型。它采用单向注意力机制,即在生成当前词元 (token) 时,只能关注其前面的词元 (token),而不能关注后面的词元 (token)。这种架构非常适合自回归 (autoregressive) 任务,例如文本生成。
  • 语言模型 (Language Model, LM): 一种用于预测文本序列中下一个词元 (token) 的概率分布的模型。训练目标通常是最大化给定历史序列下下一个词元 (token) 的似然 (likelihood)。
  • 交叉熵损失 (Cross-Entropy Loss): 在分类任务中常用的损失函数,用于衡量模型预测的概率分布与真实标签的概率分布之间的差异。在语言建模中,它衡量模型预测的下一个词元 (token) 的概率分布与实际下一个词元 (token) 之间的距离。其公式为: L=c=1Myclog(pc) \mathcal{L} = -\sum_{c=1}^{M} y_c \log(p_c) 其中,
    • MM: 类别数量(在这里是词汇量大小)。
    • ycy_c: 如果类别 cc 是真实类别,则为 1,否则为 0。
    • pcp_c: 模型预测类别 cc 的概率。
  • 奇异值分解 (Singular Value Decomposition, SVD): 一种矩阵分解技术,可以将一个矩阵分解为三个矩阵的乘积。在推荐系统中,常用于降维和生成物品或用户的隐式嵌入 (implicit embeddings)。对于用户-物品交互矩阵 MM,SVD 可以将其分解为 M=UΣVTM = U \Sigma V^T,其中 UUVV 是正交矩阵,Σ\Sigma 是对角矩阵,对角线上的元素是奇异值。在本文中,作者使用了截断 SVD (truncated SVD) 来获取物品嵌入。
  • 量化 (Quantisation): 将连续值映射到有限离散值的过程。在本文中,用于将连续的物品嵌入维度转换为离散的子项词元 (sub-item tokens)。

3.2. 前人工作

本文的 GPTRec 模型站在了序列推荐和生成式语言模型研究的肩膀上。

  • 基于 Transformer 的序列推荐模型:

    • SASRec [13]: 最早将 Transformer 架构引入序列推荐的代表性工作之一。它使用 Transformer 的解码器 (Decoder) 部分,并以 Language Modelling (LM) 任务进行训练,即预测序列中的下一个物品。其训练目标是预测给定历史序列的下一个物品,损失函数通常是 Binary Cross-Entropy
    • BERT4Rec [26]: 另一项重要的基于 Transformer 的序列推荐模型。它借鉴了 BERT 的思想,使用 Transformer 的编码器 (Encoder) 部分,并采用 Masked Language Modelling (MLM) 任务进行训练,即恢复序列中被遮掩 (masked) 的物品。它使用 Cross-Entropy 损失。
    • 其他 Transformer 变体:DuoRec [19]、CBiT [7]、ALBERT4Rec [18] 等,它们通常在架构或训练任务上进行微调,但核心仍是 Transformer。
  • 生成式语言模型在推荐系统中的应用:

    • 大型语言模型 (LLMs) 作为通用问题解决器: T5 [22] 和 GPT 系列 [1, 16, 20, 21] 已经证明了预训练的文本生成模型可以成功应用于广泛的任务,如文本摘要、情感分析、机器翻译等。
    • 将推荐视为文本生成任务:
      • P5 [8] 模型通过文本生成直接生成物品 ID 和用户 ID 作为字符串。
      • M6-Rec [5] 模型直接生成物品标题作为推荐。
      • TIGER [23] 引入了语义 ID 的概念,其中物品通过其辅助信息(如产品类别)派生的词元 (token) 集合来表示。
      • 本文与这些工作的区别: 这些生成式推荐模型通常依赖于预训练的大型语言模型和丰富的辅助信息(如物品描述、评论等)。而 GPTRec 则关注更经典的序列推荐设置,仅使用交互序列数据,不依赖于外部辅助信息,以便更好地理解生成式方法本身的特性,并将其与辅助信息的益处解耦。
  • 生成式信息检索 (Generative IR) 中的词汇量问题:

    • Generative IR 任务中,直接为给定查询生成文档 ID (docids) 时,大量的文档 ID (类似于推荐系统中的物品 ID) 也是一个核心问题 [29, 36]。
    • sub-docid tokenisation (子文档 ID 词元化) [15, 27] 已经成为 Generative IR 领域的一个研究方向,这启发了本文开发类似的推荐系统技术。

3.3. 技术演进

序列推荐系统从早期的基于马尔可夫链 (Markov Chains) 的模型,发展到使用循环神经网络 (RNN)(如 GRU4Rec [11]),再到近年来由 Transformer 架构主导。Transformer 架构凭借其强大的并行处理能力和捕捉长距离依赖的优势,迅速成为序列推荐的基石。

本文的工作代表了这一技术演进中的一个新方向:从传统 Transformer 模型的判别式 (discriminative) 或填空式 (cloze-style) 预测(如 SASRec 预测下一个,BERT4Rec 预测被遮掩的)向更纯粹的生成式 (generative) 预测发展。它试图将 GPT-2 这类纯粹的生成式语言模型引入序列推荐,并解决其面临的特定挑战(大规模词汇量和复杂推荐目标)。

3.4. 差异化分析

GPTRec 与现有方法的差异主要体现在以下几点:

  • 与 SASRec 的主要区别:

    • 损失函数: SASRec 使用 Binary Cross-Entropy,而 GPTRec 使用 Cross-Entropy (或 Softmax Loss)。论文实验证明 Cross-Entropy 效果更好。
    • 生成策略: SASRec 只支持 Top-K 推荐的 one-token-per-item 模式。GPTRec 除了支持 Top-K 外,还引入了 Next-K 生成策略,提供了更大的灵活性,可用于优化更复杂的推荐目标。
    • 内存效率: SASRec 没有解决大词汇量导致的内存问题。GPTRec 通过 SVD Tokenisation 引入 multi-token-per-item 模式,显著降低了嵌入表的内存消耗。
  • 与 BERT4Rec 的主要区别:

    • 架构: BERT4Rec 使用 Transformer 的编码器 (Encoder) 部分,并采用双向注意力。GPTRec 使用 Transformer 的解码器 (Decoder) 部分,采用单向注意力,更适合自回归生成任务。
    • 训练任务: BERT4Rec 采用 Masked Language Modelling (MLM),即预测被遮掩的物品。GPTRec 采用 Language Modelling (LM),即预测下一个物品。虽然 BERT4Rec 也使用 Cross-Entropy 损失,但其 MLM 任务与直接的下一个物品预测任务的对齐程度不如 LM 任务。
    • 生成策略和内存效率: BERT4Rec 同样只支持 Top-K 推荐的 one-token-per-item 模式,没有 GPTRecNext-K 策略和 SVD Tokenisation 带来的内存优势。
  • 与其他生成式推荐模型的区别:

    • 许多生成式推荐模型依赖于预训练的大型语言模型和丰富的辅助信息。GPTRec 则专注于仅使用交互序列数据,在更传统的序列推荐设置下探索生成式方法的潜力,使得其发现更具普适性,不依赖于特定领域或辅助信息的可用性。

4. 方法论

本节将详细拆解 GPTRec 模型的技术方案,包括其架构、核心的 SVD Tokenisation 算法、训练目标及损失函数,以及如何使用它生成推荐。

4.1. 方法原理

GPTRec 的核心思想是将序列推荐任务视为一个生成式序列预测问题,借鉴了 GPT-2 这种生成式语言模型的强大能力。它通过预测下一个词元 (token) 的方式来生成推荐物品。为了解决传统基于 Transformer 的推荐模型面临的大规模物品词汇量和 Top-K 推荐策略的局限性,GPTRec 引入了两大创新:

  1. SVD Tokenisation: 通过将每个物品 ID 拆分成多个“子项词元 (sub-item tokens)”,并利用 SVD 降维和量化技术,大大减少了词元 (token) 词汇量和嵌入表的内存消耗,从而使得模型可以处理更大规模的物品库。
  2. Next-K recommendation 策略: 提出一种逐项、序列式生成推荐列表的方法,每次生成都考虑之前已推荐的物品,这为优化多样性、连贯性等复杂推荐目标提供了可能,超越了传统 Top-K 独立评分的局限性。

4.2. 核心方法详解

GPTRec 是一个基于 GPT-2 架构的生成式序列推荐模型。

4.2.1. 架构

GPTRec 基于 GPT-2 架构 [21],而 GPT-2 又基于 Transformer 模型的解码器 (Decoder) 部分 [30]。这意味着 GPTRec 采用单向注意力机制,允许模型在预测序列中下一个元素时,只能关注其前面的元素。与原始 Transformer 相比,GPT-2 及其继承者 GPTRec 有一些微小但重要的修改:

  • 层归一化 (Layer Normalisation) 前置: 将层归一化移动到 Transformer 块的开头。
  • 缩放残差权重 (Scaled Residual Weights) 的初始化: 采用修改后的初始化方法,对残差连接的权重进行缩放。
  • 可学习的位置编码 (Learnable Positional Encodings): 使用可学习的位置编码,而非基于正弦函数的位置编码,以捕捉序列中元素的位置信息。

4.2.2. 词元化 (Tokenisation)

这是 GPTRec 解决大规模物品词汇量问题的关键。传统方法(如 SASRec 和 BERT4Rec)为每个物品 ID 分配一个词元 (token),导致物品数量大时嵌入表巨大 (one-token-per-item 模式)。GPTRec 借鉴语言模型中将单词拆分为子词词元 (sub-word tokens) 的思想(如 Word PieceBytePair 编码),提出将物品拆分为子项词元 (sub-item tokens),称为 multi-token-per-item 模式。

SVD Tokenisation 算法步骤如下,图 1 提供了直观示例,算法 3 提供了伪代码:

Figure 1: Step-by-step example of the SVD Tokenisation algorithm 该图像是论文中展示的SVD Tokenisation算法示意图,展示了通过奇异值分解对用户-物品交互矩阵进行分解,再对物品嵌入进行归一化、加噪声、量化和偏移处理,最终生成子项token的步骤。

Figure 1: Step-by-step example of the SVD Tokenisation algorithm

以下是原文 Algorithm 3 的伪代码:

Algorithm 3 SVD Tokenisation Algorithm   
Require: M is the user-item interaction matrix   
Require: t is the number of tokens per item   
Require: v is the number of alternatives per token   
Ensure: Sub-item token representation of items   
1: procedure SVDTOKENISE(M, t, v) EY   
2: Compute item embeddings E with truncated SVD on M   
3: for i = 1 to t do   
4: Normalise Ei to range [0, 1]   
5: Add small Gaussian noise to Ei 
6: Quantise Ei into v bins   
7: Offset quantised values by (i - 1) * v   
8: end for   
9: Concatenate quantised components for sub-item tokens   
10: return Sub-item token representation   
11: end procedure

SVD Tokenisation 算法详解:

  1. 构建用户-物品交互矩阵并进行截断 SVD (Step 1 of Figure 1, Line 2 of Algorithm 3):

    • 算法首先构建一个用户-物品交互矩阵 MM。矩阵 MM 的行代表用户,列代表物品,矩阵元素通常表示用户对物品的交互(如评分、点击等)。
    • 然后,对该矩阵 MM 执行截断奇异值分解 (truncated SVD),分解为: MU×Σ×ET \boldsymbol { M } \approx \boldsymbol { U } \times \boldsymbol { \Sigma } \times \boldsymbol { E } ^ { T } 其中,
      • M\boldsymbol{M}: 用户-物品交互矩阵。
      • U\boldsymbol{U}: 用户嵌入矩阵 (matrix of user embeddings),其行对应用户,列对应潜在维度。
      • Σ\boldsymbol{\Sigma}: 对角矩阵 (diagonal matrix),包含 tt 个最大的奇异值,这些奇异值衡量了每个潜在维度的重要性。
      • E\boldsymbol{E}: 物品嵌入矩阵 (matrix of item embeddings),其行对应物品,列对应潜在维度。本文关注的是这个 EE 矩阵,每个物品的嵌入是一个 tt 维向量。
      • tt: 截断 SVD 所保留的潜在成分 (latent components) 数量,也即每个物品的子项词元 (sub-item tokens) 数量。
    • 通过 SVD,我们得到了一个低维度的物品嵌入表示 EE,其中每个物品被表示为一个 tt 维向量。
  2. 物品嵌入的归一化、加噪与量化 (Step 2 of Figure 1, Line 3-6 of Algorithm 3):

    • 对于物品嵌入矩阵 EE 中的每个维度(对应 fori=1totfor i = 1 to t 循环):
      • 归一化 (Normalise EiE_i to range [0, 1]): 将当前维度 EiE_i 的值归一化到 [0, 1] 范围,使得所有物品在该维度上的嵌入值都在一个统一的尺度上。
      • 添加高斯噪声 (Add small Gaussian noise to EiE_i): 归一化后,加入少量高斯噪声(例如,均值为 0,标准差为 10510^{-5})。这主要是为了防止两个物品拥有完全相同的嵌入,从而导致在后续量化步骤中产生相同的子项词元 (sub-item tokens)。
      • 量化 (Quantise EiE_i into vv bins): 将归一化并加噪后的连续值范围 [0, 1] 离散化为 vv 个等宽的区间(或“桶”),每个区间对应一个离散值。例如,如果 v=4v=4,则 [0, 0.25) 映射到 0,[0.25, 0.5) 映射到 1,以此类推。这个离散值就代表了该维度上的一个子项词元 (sub-item token)。
      • vv: 每个维度(子项词元 (sub-item token))可能取值的数量。
  3. 偏移量化值 (Offset quantised values by (i1)v(i - 1) * v, Step 3 of Figure 1, Line 7 of Algorithm 3):

    • 为了确保不同维度上的子项词元 (sub-item tokens) 不会混淆,对每个维度的量化值进行偏移。
    • 具体来说,第 ii 个维度的量化值会加上 (i1)×v(i-1) \times v。例如,如果 v=4v=4
      • 第一个维度 (i=1i=1) 的量化值范围是 [0,v1][0, v-1]
      • 第二个维度 (i=2i=2) 的量化值范围是 [v,2v1][v, 2v-1]
      • 第三个维度 (i=3i=3) 的量化值范围是 [2v,3v1][2v, 3v-1]
    • 通过这种方式,每个维度都有其独立的词元 (token) 范围,从而形成一个全局的子项词元 (sub-item token) 词汇表。
  4. 拼接子项词元 (Concatenate quantised components for sub-item tokens, Line 9 of Algorithm 3):

    • 最终,每个物品的 tt 个维度各自生成的量化、偏移后的子项词元 (sub-item tokens) 被拼接起来,形成该物品的完整子项词元 (sub-item token) 表示。

内存效率分析 (结合 Table 1):

通过 SVD Tokenisation,模型不再需要存储每个物品一个大型嵌入向量,而是存储一个共享的、相对较小的词元 (token) 嵌入表。这个词元 (token) 嵌入表的大小只取决于 tokens per item (tt) 和 values per token (vv) 的乘积,即 t×vt \times v

以下是原文 Table 1 的结果:

DatasetNum ItemsGPU Memory (one-token-per-item mode)t=2 v=128 (256 embs; 0.25 MB)t=2 v=512 (1024 embs; 1.00 MB)t=2 v=2048 (4096 embs;t=4 v=128 (512 embs;t=4 v=512 (2048 embs;t=4 v=2048 (8192 embs;t=8 v=128 (1024 embs;t=8 v=512 (4096 embs;t=8 v=2048 (16384 embs;
MovieLens-1M3,4163.34 MB7.494%29.977%4.00 MB) 119.906%0.50 MB) 14.988%2.00 MB) 59.953%8.00 MB) 239.813%1.00 MB) 29.977%4.00 MB) 119.906%16.00 MB) 479.625%
MovieLens-20M138,493135.25 MB0.185%0.739%2.958%0.370%1.479%5.915%0.739%2.958%11.830%
Yelp150,346146.82 MB0.170%0.681%2.724%0.341%1.362%5.449%0.681%2.724%10.898%
Gowalla1,280,9691.22 GB0.020%0.080%0.320%0.040%0.160%0.640%0.080%0.320%1.279%
Amazon Books5,264,3075.02 GB0.005%0.019%0.078%0.010%0.039%0.156%0.019%0.078%0.311%
LastFM-1b32,291,13430.80 GB0.001%0.003%0.013%0.002%0.006%0.025%0.003%0.013%0.051%

Table 1: 不同数据集上,使用 one-token-per-item 模式和 multi-token-per-item 模式下嵌入表所需的 GPU 内存对比。括号中显示了 multi-token-per-item 配置的词汇量(即 t×vt \times v 词元)和内存大小。假设每个嵌入存储为 256 个 float32 数字。

从 Table 1 可以看出,对于大型数据集(如 Amazon Books 或 LastFM-1b),one-token-per-item 模式下嵌入表可能需要数 GB 甚至数十 GB 的 GPU 内存。而 multi-token-per-item 模式下,即使是 t=8,v=2048t=8, v=2048 这样相对较大的配置,所需的内存也仅为几十 MB,与原始大小相比,内存占用比例极小,大幅缓解了 GPU 内存瓶颈。

4.2.3. 训练目标与损失函数

GPTRec 遵循 GPT-2 [21],采用 Language Modelling (LM) 目标进行训练,并使用 Cross-Entropy 损失。

  • 语言建模目标: LM 目标是将一个词元 (token) 序列 S={s1,s2,,sn}S = \{s_1, s_2, \dots, s_n\} 的概率分解为条件概率的乘积: P(S)=i=1np(sis1,s2,...si1) \mathcal { P } ( S ) = \prod _ { i = 1 } ^ { n } p ( s _ { i } | s _ { 1 } , s _ { 2 } , . . . s _ { i - 1 } ) 其中,

    • SS: 序列,在 GPTRec 中,它代表一个物品序列或一个子项词元 (sub-item token) 序列。
    • sis_i: 序列中的第 ii 个词元 (token)。
    • p(sis1,s2,,si1)p(s_i | s_1, s_2, \dots, s_{i-1}): 在给定前 i-1 个词元 (token) 的情况下,预测第 ii 个词元 (token) 的条件概率。
  • 损失函数: 损失函数通过最大化对数似然 (Maximum Log-likelihood) 原理推导而来 [9, Ch.5],即 Cross-Entropy 损失: LLM=1ni=1nlog(p(sis1,s2,...si1)) \mathcal { L } _ { L M } = - \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \log ( p ( s _ { i } | s _ { 1 } , s _ { 2 } , . . . s _ { i - 1 } ) ) 其中,

    • nn: 序列的长度。

    • log(p(sis1,s2,,si1))\log(p(s_i | s_1, s_2, \dots, s_{i-1})): 模型预测的正确词元 (token) 的对数概率。模型的目标是最小化这个负对数似然。

      GPTRec 模型通过 softmax 操作输出第 ii 个位置的词元 (token) 概率分布,因此,模型被训练来预测其输入序列向左移动一个位置后的下一个词元 (token)。这个“向左移动一个位置”的序列可以再次作为模型的输入,从而实现 Next-K 推荐和 multi-token-per-item 模式的 GPU 效率。

4.2.4. 生成推荐

GPTRec 可以支持多种生成推荐列表的策略:

  1. Top-K 生成,one-token-per-item 模式:

    • 这是最直接的生成方式,类似于 SASRec。

    • 模型输出下一个词元 (token) 的概率分布 p(sis1,s2,,si1)p(s_i | s_1, s_2, \dots, s_{i-1})。在 one-token-per-item 模式下,这个分布直接对应于下一个最可能物品的概率。

    • GPTRec 使用序列中最后一个位置的概率分布作为物品得分,然后应用标准的 Top-K 评分策略(参见 Algorithm 1),选择得分最高的 KK 个物品作为推荐。

      以下是原文 Algorithm 1 的伪代码:

    Algorithm 1 Top-K Recommendation Strategy
    Require: user is the target user for recommendations Require: items is the set of all available items
    Require: K is the number of recommendations to generate
    Require: f is an existing scoring model 1: procedure TopKRecoMMEND(user, items, K, f )
    2: item_scores ← empty list
    3: for item  items do 4: score ← f (user, item)
    5: item_scores.append((item, score))
    
    6: end for
    7: sorted_items ← sorted(item_scores,
    8: key = score, reverse = True)
    
    9: recommended_items ← [item 10: for (item, score) in sorted_items[: K]] 11: return recommended_items
    

    Algorithm 1 (Top-K 推荐策略) 详解:

    • 输入: 目标用户 (user)、所有可用物品集合 (items)、要生成的推荐数量 KK、以及一个评分模型 ff(在序列推荐中,ff 通常基于用户历史交互序列来计算物品得分)。
    • 过程:
      • 初始化一个空列表 item_scores
      • 遍历所有可用物品:对每个物品,使用评分模型 ff 计算其与用户之间的相关性得分。
      • 将每个物品及其得分作为一个元组 (item, score) 添加到 item_scores 列表中。
      • 根据得分对 item_scores 进行降序排序。
      • 从排序后的列表中选择前 KK 个物品作为推荐列表 recommended_items
      • 返回推荐列表。
  2. Top-K 生成,multi-token-per-item 模式:

    • 在这种模式下,模型使用标准的 GPT-2 自回归 (autoregressive) 生成方式来输出 KK 个候选物品。
    • 生成过程: 模型每次预测下一个词元 (token) 的概率分布,然后从中采样一个词元 (token)。这个词元 (token) 会被添加到输入序列的末尾,这个过程会重复进行,直到生成了每个物品表示所需的 tt 个子项词元 (sub-item tokens)。
    • 物品评分: 生成一个完整的候选物品(即 tt 个子项词元 (sub-item tokens))后,使用链式法则 (chain rule)(即公式 (2))来计算该物品的整体概率(作为其得分)。
    • 筛选: 并非所有生成的子项词元 (sub-item tokens) 序列都对应有效的物品 ID,模型会忽略这些无效序列。同时,也可能生成重复的候选物品。
    • 最终推荐: 假定未生成的物品得分为 -\infty,然后对所有生成的有效候选物品,应用标准的 Top-K 策略(Algorithm 1)。
    • 注意: 为了获得足够数量的有效候选物品,实际操作中需要生成的候选物品数量 KK 远大于最终所需的推荐物品数量。例如,论文中提到需要生成 50 个候选物品才能得到 10 个推荐物品。
  3. Next-K 生成,one-token-per-item 模式:

    • 这种策略遵循 Next-K 过程(参见 Algorithm 2),逐项生成推荐列表。

    • 生成过程: 在每一次迭代中,模型将用户的历史交互序列与已生成的推荐序列拼接起来作为输入。然后,模型预测下一个最可能的物品(一个词元 (token)),并将其添加到已推荐物品列表中。

    • Next-K 策略等同于语言模型中的贪婪搜索 (greedy search) 词元 (token) 生成策略。

      以下是原文 Algorithm 2 的伪代码:

    Algorithm 2 Next-K Recommendation Strategy
    Require: user is the target user for recommendations
    Require: items is the set of all available items Require: K is the number of recommendations to generate
    Require: f is an existing scoring model
    1: procedure NexTKRecoMMEND(user, items, K, f)
    2: recommended_items ← empty list
    3: for k = 1 to K do
    4: max_score ← −∞
    5: best_item ← None
    6: for item  items \ recommended_items do
    7: score ← f(user,recommended_items, item)
    8: if score > max_score then
    
    9: max_score ← score
    10: best_item ←item
    11: end if
    12: end for
    13: recommended_items.append(best_item)
    
    14: end for
    15: return recommended_items
    16: end procedure
    

    Algorithm 2 (Next-K 推荐策略) 详解:

    • 输入: 目标用户 (user)、所有可用物品集合 (items)、要生成的推荐数量 KK、以及一个评分模型 ff
    • 过程:
      • 初始化一个空列表 recommended_items
      • 循环 KK 次,每次生成一个推荐物品:
        • 初始化 max_score 为负无穷,best_itemNone
        • 遍历所有未被推荐的物品 (items recommendeditemsitems \ recommended_items):
          • 使用评分模型 ff 计算当前物品的得分。注意,这里的评分模型 ff 不仅考虑用户和当前物品,还会考虑已推荐的物品列表 recommended_items
          • 如果当前物品的得分高于 max_score,则更新 max_scorebest_item
        • 将找到的 best_item 添加到 recommended_items 列表中。
      • 返回推荐列表。
    • 注意: 这种策略的计算成本较高,因为它需要在 KK 轮迭代中,每轮都对所有未推荐物品进行评分。同时,训练任务与生成过程可能存在偏差(模型训练是预测下一个单一词元 (token),而不是生成一个序列),可能需要 强化学习 (reinforcement learning) 等更复杂的调优技术来完全对齐。

5. 实验设置

本节将详细描述 GPTRec 模型的实验设置,包括使用的数据集、评估指标以及用于比较的基线模型。

5.1. 数据集

实验主要使用了 MovieLens-1M 数据集。

以下是原文 Table 2 的结果:

Number of users6040
Number of items3416
Number of interactions999611
Average sequence length165.49
Median sequence length96

Table 2: MovieLens-1M 数据集的主要特征

MovieLens-1M 数据集特点:

  • 用户数量 (Number of users): 6040

  • 物品数量 (Number of items): 3416

  • 交互数量 (Number of interactions): 999611

  • 平均序列长度 (Average sequence length): 165.49

  • 中位数序列长度 (Median sequence length): 96

    数据集选择原因: 尽管 MovieLens-1M 数据集存在一些已知问题(例如,用户在数据集中评价电影的顺序可能与实际观看顺序不一致),但它在许多推荐系统论文中被广泛使用,这使得不同研究的结果可以相互比较。

数据划分策略:

  • 留一法 (Leave-one-out strategy):
    • 对于每个用户,其最新的交互行为被用作测试集 (test set)
    • 对于 128 个随机选择的用户,他们的倒数第二个交互行为被用作独立的验证集 (validation set)。这个验证集主要用于早停 (early stopping) 机制和监控模型训练期间的质量,以确保模型在新数据上的泛化能力。

模型配置:

  • Transformer 深度: 使用相对较浅的 Transformer 模型,包含三个 Transformer 块。
  • 最大序列长度 (Maximum sequence length): 设置为 100。如果用户的交互序列超过 100 个物品,则只截取最近的 100 个交互。
  • 词元嵌入维度 (Token embedding dimension): 使用 256 维的词元嵌入。
  • 早停机制 (Early stopping mechanism): 如果验证集上的 NDCG@10 指标在 300 个 epoch 内没有改善,训练就会终止。

5.2. 评估指标

论文主要使用 Recall@KNDCG@K 这两个常用的推荐系统评估指标来衡量模型性能。

5.2.1. Recall@K (召回率@K)

  • 概念定义 (Conceptual Definition): Recall@K 衡量的是推荐系统在推荐列表前 KK 个物品中,成功找出用户实际感兴趣的物品的比例。它关注的是模型“找全”相关物品的能力,即在推荐的 Top-K 列表中有多少真实相关的物品被召回。
  • 数学公式 (Mathematical Formula): Recall@K=RecommendedKRelevantRelevant \text{Recall}@K = \frac{|\text{Recommended}_K \cap \text{Relevant}|}{|\text{Relevant}|}
  • 符号解释 (Symbol Explanation):
    • RecommendedK\text{Recommended}_K: 模型推荐给用户的 KK 个物品的集合。
    • Relevant\text{Relevant}: 用户实际感兴趣(或在测试集中交互)的物品的集合。
    • |\cdot|: 集合中元素的数量。

5.2.2. NDCG@K (Normalized Discounted Cumulative Gain@K, 归一化折损累积增益@K)

  • 概念定义 (Conceptual Definition): NDCG@K 是一个综合性的评估指标,它不仅考虑了推荐列表中相关物品的数量,还考虑了它们在列表中的位置相关性等级。相关性越高的物品如果排在越靠前的位置,NDCG@K 值就越高。它通过折损因子 (discount factor) 来降低列表靠后位置物品的相关性贡献。归一化 (Normalized) 意味着它将计算出的 DCG 值除以理想情况下的 DCG 值(即 IDCG),从而使得不同查询或用户之间的结果具有可比性,值域在 0 到 1 之间。
  • 数学公式 (Mathematical Formula): 首先计算 折损累积增益 (Discounted Cumulative Gain, DCG)DCG@K=i=1K2reli1log2(i+1) \text{DCG}@K = \sum_{i=1}^K \frac{2^{\text{rel}_i} - 1}{\log_2(i+1)} 然后计算 理想折损累积增益 (Ideal Discounted Cumulative Gain, IDCG)IDCG@K=i=1Relevant2reli1log2(i+1) \text{IDCG}@K = \sum_{i=1}^{|\text{Relevant}|} \frac{2^{\text{rel}_i} - 1}{\log_2(i+1)} 最后计算 NDCG@KNDCG@K=DCG@KIDCG@K \text{NDCG}@K = \frac{\text{DCG}@K}{\text{IDCG}@K}
  • 符号解释 (Symbol Explanation):
    • KK: 推荐列表的截断长度,即考虑前 KK 个推荐物品。
    • ii: 推荐列表中物品的排名位置,从 1 开始。
    • reli\text{rel}_i: 排名第 ii 的物品的相关性得分。在二元相关性(即物品是否相关,0 或 1)的场景中,如果物品相关则为 1,否则为 0。如果存在多级相关性,则可以是更细粒度的得分(例如,0-5 星评分)。
    • log2(i+1)\log_2(i+1): 折损因子,使得排名越靠后的物品对 DCG 的贡献越小。
    • Relevant|\text{Relevant}|: 实际相关物品的总数量。在 IDCG 的计算中,假设所有相关物品都按照最高相关性得分降序排列,并且都出现在前 KK 个位置(如果 KK 足够大)。通常,IDCG 是通过将所有相关物品按其真实相关性排序,然后计算其 DCG 值来得到的。

5.3. 对比基线

论文将 GPTRec 模型与以下两种最受欢迎的基于 Transformer 的序列推荐模型进行了比较:

  1. SASRec [13] (Self-Attentive Sequential Recommendation):

    • 架构: 使用 Transformer 的解码器 (Decoder) 部分。
    • 训练任务: Language Modelling (LM),即预测序列中的下一个物品。
    • 损失函数: Binary Cross-Entropy
    • 推荐策略: 仅支持 Top-K 推荐的 one-token-per-item 模式。
    • 代表性: 它是序列推荐领域中具有里程碑意义的模型,被广泛用作基线。
  2. BERT4Rec [26] (Sequential Recommendation with Bidirectional Encoder Representations from Transformer):

    • 架构: 使用 Transformer 的编码器 (Encoder) 部分。

    • 训练任务: Masked Language Modelling (MLM) (又称 ClozeItem Masking),即恢复序列中被遮掩 (masked) 的物品。

    • 损失函数: Cross-Entropy (又称 Softmax Loss)。

    • 推荐策略: 仅支持 Top-K 推荐的 one-token-per-item 模式。

    • 代表性: 借鉴了 BERT 的双向上下文建模能力,在许多序列推荐任务中取得了优异性能。

      这些基线模型代表了当时最先进的 (state-of-the-art) 基于 Transformer 的序列推荐方法,与它们进行比较能够有效验证 GPTRec 在不同生成策略和内存效率改进下的性能。

6. 实验结果与分析

本节将详细分析 GPTRec 在 MovieLens-1M 数据集上的实验结果,并回答前述的研究问题。

6.1. 核心结果分析

6.1.1. RQ1: one-token-per-id 模式下 GPTRecBERT4RecSASRec 的性能对比

此研究问题旨在评估 GPTRec 在传统 one-token-per-item 模式下,采用 Top-KNext-K 生成策略时,与现有 Transformer 基线模型的性能。

以下是原文 Table 3 的结果:

Model nameGeneration StrategyArchitectureTraining TaskLossRecall@10NDCG@10
BERT4RecTopKEncoderMLM (Item Masking)Cross Entropy (Softmax Loss)0.2820.152
GPTRec-TopKTopKDecoderLM (Sequence Shifting)Cross Entropy (Softmax Loss)0.2540.146
SASRecTopKDecoderLM (Sequence Shifting)Binary Cross-Entropy0.1990.108
GPTRec-NextKNextKDecoderLM (Sequence Shifting)Cross Entropy (Softmax Loss)0.1570.105

Table 3: GPTRec 与最先进的 Transformer 模型的性能对比。所有模型均在 one-token-per-item 模式下运行。NDCG@10 和 Recall@10 是在 MovieLens-1M 数据集上计算的。最佳结果以粗体显示,次佳结果以下划线表示。SASRec 和 BERT4Rec 的结果从可复现性研究 [18] 中复制。

分析:

  • GPTRec-TopK vs. BERT4RecSASRec

    • GPTRec-TopKNDCG@10 上达到 0.146,略低于 BERT4Rec (0.152),但显著高于 SASRec (0.108)。
    • Recall@10 上,GPTRec-TopK 达到 0.254,也略低于 BERT4Rec (0.282),但远超 SASRec (0.199)。
    • 这表明 GPTRec-TopK 的性能与 BERT4Rec 相当,并且优于 SASRec
    • 值得注意的是,GPTRec-TopKSASRec 的主要区别在于损失函数 (Cross-Entropy vs. Binary Cross-Entropy)。GPTRec-TopK 表现更好,印证了 Cross-Entropy 损失对于下一个物品推荐任务更为有效。
  • GPTRec-NextK 性能:

    • GPTRec-NextKNDCG@10 为 0.105,Recall@10 为 0.157。

    • 其性能低于 GPTRec-TopKBERT4Rec。这在预期之中,因为模型在训练时是针对单一的下一个词元 (token) 预测目标,而非为复杂的 Next-K 序列生成任务专门调优。

    • 然而,GPTRec-NextKNDCG@10 (0.105) 已经与 SASRec (0.108) 非常接近。这表明即使没有专门的调优(例如,使用强化学习),GPTRecNext-K 模式下也能提供与 SASRec 相当的推荐质量,为其在未来研究中通过进一步调优实现复杂推荐目标奠定了坚实基础。

      结论 (RQ1): GPTRec-TopKone-token-per-item 模式下表现出色,与 BERT4Rec 性能相当并优于 SASRecGPTRec-NextK 虽然性能略差,但其 NDCG@10 仍与 SASRec 持平,是一个有潜力的研究起点。

6.1.2. RQ2: multi-token-per-item 模式下词元数量和每个词元值数量的影响

此研究问题探讨了 SVD Tokenisation 带来的 multi-token-per-item 模式对 GPTRec 性能和内存效率的影响。

该图像是展示了GPTRec模型在MovieLens-1M数据集上,使用不同Tokens per Item和Values per Token参数时,Recall@10和NDCG@10的实验结果对比图。两张子图分别展示了Recall@10和NDCG@10指标与标杆SASRec及GPTRec-TopK的水平对比。 该图像是展示了GPTRec模型在MovieLens-1M数据集上,使用不同Tokens per Item和Values per Token参数时,Recall@10和NDCG@10的实验结果对比图。两张子图分别展示了Recall@10和NDCG@10指标与标杆SASRec及GPTRec-TopK的水平对比。

Figure 2: GPTRec 在 multi-token-per-item 模式下的性能。图中包括 SASRec 的性能作为对比,以及 one-token-per-item 模式下的 GPTRec

分析:

  • 性能下降但仍具竞争力:

    • GPTRec 切换到 multi-token-per-item 模式时,其性能相对于 one-token-per-item 模式下的 GPTRec-TopK (NDCG@10 为 0.253) 有所下降。
    • 然而,在某些配置下,它仍然可以与 SASRec 保持竞争力。例如,当每个物品有 4 个词元 (tokens per item) 且每个词元有 512 个可能的值 (values per token) 时,GPTRecNDCG@10 为 0.108,与 SASRec 完全匹配。但在 Recall@10 上,GPTRec (0.182) 略逊于 SASRec (0.199)。
  • 离散化粒度 (values per token) 的影响:

    • Recall@10NDCG@10 均随每个词元可能值的数量 (vv) 增加而提高。
    • 例如,当 tokens per item 为 2 时,values per token 从 128 增加到 2048,NDCG@10 从 0.0914 显著提高到 0.124,甚至超越了 SASRec。这表明更细粒度的离散化可以更好地保留物品嵌入的信息,从而提高推荐质量。
  • 每个物品词元数量 (tokens per item) 的影响:

    • 通常情况下,每个物品有 4 个词元 (4 tokens per item) 的性能优于 2 个词元 (2 tokens per item)。
    • 但在 values per token 达到 2048 时,2 个词元和 4 个词元的性能相当。这可能表明,在足够高的离散化粒度下,增加词元数量带来的信息增益不再明显。
  • 内存效率:

    • multi-token-per-item 模式的主要优势在于显著降低 GPU 内存消耗。例如,当每个物品 4 个词元、每个词元 512 个值时,嵌入表仅需存储 2048 个嵌入,比 one-token-per-item 模式减少了 40% (参见 Table 1)。对于大型数据集,这种内存优势将更为显著。

      结论 (RQ2): GPTRecmulti-token-per-item 模式下的性能略低于 one-token-per-item 模式,但在某些配置下仍可与 SASRec 匹敌。重要的是,这种模式大幅减少了 GPU 内存占用,这对于处理大规模数据集至关重要。增加每个词元可能值的数量 (离散化粒度) 有助于提高性能。

6.1.3. RQ3: Next-K 推荐模式下截断水平 KK 的影响

此研究问题分析了 Next-K 策略在不同截断长度 KK 下的性能变化,并与 Top-K 策略进行对比。

该图像是论文中图3的图表,展示了Next-K和Top-K推荐策略在NDCG@K指标上的绝对值和相对值表现。左图(a)显示Top-K方法在NDCG@K上优于Next-K,右图(b)展示Next-K的相对性能随着K增大而下降。 该图像是论文中图3的图表,展示了Next-K和Top-K推荐策略在NDCG@K指标上的绝对值和相对值表现。左图(a)显示Top-K方法在NDCG@K上优于Next-K,右图(b)展示Next-K的相对性能随着K增大而下降。

Figure 3: GPTRec 在 Top-KNext-K 推荐策略下的性能。左图 (a) 显示了不同截断 KKNDCG@K 指标的绝对值。右图 (b) 显示了 Next-K 策略相对于 Top-K 策略在相同截断 KK 下的 NDCG@K 归一化质量(百分比)。

分析:

  • 低截断 K (K=1) 的表现:

    • 从 Figure 3b 可以看出,当 K=1K=1 时,GPTRecNext-K 策略和 Top-K 策略表现相同 (100% 相对质量)。这是因为在 K=1K=1 时,两种策略都只是简单地生成概率最高的下一个物品。
  • 高截断 K (K>1) 的表现:

    • 随着 KK 的增加,Next-K 策略的性能相对于 Top-K 策略逐渐下降。
    • K=10K=10 时,Next-K 的质量下降到 Top-K 质量的约 75%。这符合预期,因为模型在训练时是为预测下一个单一物品而优化,而非为生成一个相互依赖的序列而优化。训练目标与生成过程之间存在偏差。
  • SASRec 的对比:

    • 尽管 Next-K 策略的性能有所下降,但从 Figure 3a 可以看到,在 K=10K=10 时,GPTRecNext-K 策略的 NDCG@10 (约为 0.105) 仍然与 SASRec (0.108) 的性能非常接近。

    • 这意味着,即使未经专门调优,GPTRecNext-K 策略仍能提供具有竞争力的推荐质量,为未来通过强化学习或其他高级技术进行调优以优化复杂目标(如多样性、覆盖率)提供了有力的起点。

      结论 (RQ3): 在低截断 KK 值时,Next-KTop-K 策略的性能相似。然而,随着 KK 值的增加,Next-K 策略的质量逐渐下降,这主要是由于训练目标与生成任务的不完全对齐。尽管如此,在 K=10K=10 时,GPTRecNext-K 策略仍能保持与 SASRec 相当的推荐质量,表明其作为未来强化学习或其他高级调优技术的起点具有强大潜力。

6.2. 数据呈现 (表格)

本小节汇总了实验中使用的表格数据。

以下是原文 Table 1 的结果:

DatasetNum ItemsGPU Memory (one-token-per-item mode)t=2 v=128 (256 embs; 0.25 MB)t=2 v=512 (1024 embs; 1.00 MB)t=2 v=2048 (4096 embs;t=4 v=128 (512 embs;t=4 v=512 (2048 embs;t=4 v=2048 (8192 embs;t=8 v=128 (1024 embs;t=8 v=512 (4096 embs;t=8 v=2048 (16384 embs;
MovieLens-1M3,4163.34 MB7.494%29.977%4.00 MB) 119.906%0.50 MB) 14.988%2.00 MB) 59.953%8.00 MB) 239.813%1.00 MB) 29.977%4.00 MB) 119.906%16.00 MB) 479.625%
MovieLens-20M138,493135.25 MB0.185%0.739%2.958%0.370%1.479%5.915%0.739%2.958%11.830%
Yelp150,346146.82 MB0.170%0.681%2.724%0.341%1.362%5.449%0.681%2.724%10.898%
Gowalla1,280,9691.22 GB0.020%0.080%0.320%0.040%0.160%0.640%0.080%0.320%1.279%
Amazon Books5,264,3075.02 GB0.005%0.019%0.078%0.010%0.039%0.156%0.019%0.078%0.311%
LastFM-1b32,291,13430.80 GB0.001%0.003%0.013%0.002%0.006%0.025%0.003%0.013%0.051%

Table 1: 不同数据集上,使用 one-token-per-item 模式和 multi-token-per-item 模式下嵌入表所需的 GPU 内存对比。括号中显示了 multi-token-per-item 配置的词汇量(即 t×vt \times v 词元)和内存大小。假设每个嵌入存储为 256 个 float32 数字。

以下是原文 Table 2 的结果:

Number of users6040
Number of items3416
Number of interactions999611
Average sequence length165.49
Median sequence length96

Table 2: MovieLens-1M 数据集的主要特征

以下是原文 Table 3 的结果:

Model nameGeneration StrategyArchitectureTraining TaskLossRecall@10NDCG@10
BERT4RecTopKEncoderMLM (Item Masking)Cross Entropy (Softmax Loss)0.2820.152
GPTRec-TopKTopKDecoderLM (Sequence Shifting)Cross Entropy (Softmax Loss)0.2540.146
SASRecTopKDecoderLM (Sequence Shifting)Binary Cross-Entropy0.1990.108
GPTRec-NextKNextKDecoderLM (Sequence Shifting)Cross Entropy (Softmax Loss)0.1570.105

Table 3: GPTRec 与最先进的 Transformer 模型的性能对比。所有模型均在 one-token-per-item 模式下运行。NDCG@10 和 Recall@10 是在 MovieLens-1M 数据集上计算的。最佳结果以粗体显示,次佳结果以下划线表示。SASRec 和 BERT4Rec 的结果从可复现性研究 [18] 中复制。

6.3. 消融实验/参数分析

论文没有明确提及“消融实验”这个词,但 RQ2RQ3 的分析可以被视为对 SVD Tokenisation 参数 (ttvv) 以及 Next-K 策略在不同截断水平 KK 下性能的参数分析。

  • SVD Tokenisation 参数 (ttvv) 的影响 (RQ2):

    • 每个物品的词元数量 (tt): 实验比较了 t=2t=2t=4t=4 的情况。结果显示,大多数情况下 t=4t=4 的性能优于 t=2t=2,这表明更多的词元 (token) 可以编码更丰富的信息。但在 v=2048v=2048 时,两者性能持平,暗示在足够精细的量化下,少量词元 (token) 也可能足够。
    • 每个词元可能值的数量 (vv): 实验比较了 v=128,512,2048v=128, 512, 2048 的情况。结果清晰地表明,随着 vv 的增加,推荐质量(Recall@10NDCG@10)显著提高。这说明,提高量化粒度(即允许每个子项词元 (sub-item token) 有更多的可能取值)能够更好地保留 SVD 嵌入中的信息,从而获得更好的性能。这是在内存效率和推荐质量之间进行权衡的关键参数。
  • Next-K 策略中截断 KK 的影响 (RQ3):

    • 性能随 KK 增长而下降: 实验证实,随着推荐列表长度 KK 的增加,Next-K 策略的性能相对于 Top-K 策略有所下降。这是因为模型在训练时是基于 Language Modelling 任务(预测下一个单一物品),而不是针对生成整个序列的复杂 Next-K 任务进行优化。

    • 作为起点: 尽管性能有所下降,但 Next-KK=10K=10 时仍能达到与 SASRec 相当的 NDCG@10,表明它是一个有前景的起点,可以通过强化学习等方法进一步优化以处理复杂的推荐目标。

      这些分析有效地揭示了 GPTRec 关键组件和参数对模型性能和内存效率的影响,为未来的研究和应用提供了指导。

7. 总结与思考

7.1. 结论总结

本文提出了 GPTRec,一个基于 GPT-2 架构的生成式序列推荐模型,旨在解决现有 Transformer-based 推荐模型在处理大规模物品词汇量和复杂推荐目标时的挑战。主要结论如下:

  1. 性能优势:one-token-per-item 模式下,GPTRec-TopK 在 MovieLens-1M 数据集上的性能与 BERT4Rec 相当,并且优于 SASRec。这表明 Cross-Entropy 损失函数对于下一个物品预测任务比 Binary Cross-Entropy 更有效。

  2. 内存效率改进: 引入了创新的 SVD Tokenisation 算法,将物品 ID 拆分为多个子项词元 (sub-item tokens)。这使得 GPTRecmulti-token-per-item 模式下能够将嵌入表大小显著减少(例如,减少 40%),同时保持与 SASRec 相当的推荐质量。对于具有海量物品的大型数据集,这种内存优势至关重要。

  3. 灵活的生成策略: 提出了 Next-K recommendation 策略,该策略逐项生成推荐,并在生成过程中考虑已推荐的物品。尽管在未经专门调优的情况下,Next-K 策略的性能略低于 Top-K,但其 NDCG@10 仍能与 SASRec 匹敌,表明其作为未来优化多样性、覆盖率等复杂推荐目标的有力起点。

    总而言之,GPTRec 证明了生成式方法在序列推荐领域的巨大潜力,尤其是在解决内存瓶颈和提供更灵活的推荐生成机制方面。

7.2. 局限性与未来工作

论文作者指出了以下局限性及未来的研究方向:

  1. 数据集和评估范围: 目前的实验主要在 MovieLens-1M 数据集上进行,这是一个相对中等规模的数据集。未来计划将模型评估扩展到更大的数据集,以更充分地展示 multi-token-per-item 模式在内存节省方面的巨大优势。
  2. 生成技术优化: 针对 multi-token-per-item 模式下的生成,未来计划探索更高级的生成技术,例如束搜索 (Beam Search),以缓解可能出现的多样性问题。
  3. Next-K 策略的调优: Next-K 策略在目前的实验中并未进行专门的调优,其训练目标与生成过程存在偏差。未来工作将研究更先进的调优技术,例如 强化学习 (reinforcement learning)(借鉴 InstructGPT [16] 中的方法),以更好地对齐训练和生成任务,并优化模型以实现多样性、覆盖率和连贯性等复杂推荐目标。
  4. 超参数设置: 计划在更广泛的超参数设置下评估模型,以找到最优配置。
  5. 跨领域应用: 提出的方法,特别是 SVD Tokenisation,有望应用于 Generative IR 领域,解决大规模文档 ID 词汇量问题。GPTRecNext-K 策略也可为 Generative IR 中的复杂搜索结果多样性和公平性问题提供解决方案。

7.3. 个人启发与批判

7.3.1. 个人启发

  1. 生成式范式的潜力: 论文让我深刻认识到,将推荐任务从传统的“预测下一个”或“填充空白”的判别式或填空式范式,转向更全面的“生成序列”的生成式范式,具有巨大的潜力。这不仅仅是技术上的转变,更是思维方式的转变,打开了优化多样性、公平性等复杂推荐目标的大门。
  2. 跨领域知识的借鉴: SVD Tokenisation 算法是语言模型中子词词元化 (sub-word tokenisation) 思想在推荐系统领域的巧妙应用。这提醒我们,在解决领域特定问题时,不应局限于本领域的技术,而应积极从其他成熟领域(如 NLP)借鉴和适配思想。尤其是当两个领域(如语言和推荐)的数据都具有序列性时,这种借鉴尤为有效。
  3. 内存与性能的权衡艺术: multi-token-per-item 模式在大幅减少内存占用的同时,仍能保持与 SASRec 相当的推荐质量。这展示了在资源受限场景下,通过创新的数据表示方式,仍能取得实用性能的艺术。对于实际工业界的大规模推荐系统而言,内存效率往往是决定模型能否落地的关键因素。
  4. Next-K 策略的未来价值: 尽管 Next-K 策略在目前表现平平,但其核心思想——在生成后续推荐时考虑先前推荐——是解决推荐列表整体优化问题的根本途径。结合强化学习等技术,它有望成为构建真正“智能”推荐列表(而非仅仅是独立高质量物品集合)的基础。

7.3.2. 批判

  1. SVD Tokenisation 的局限性与泛化性:
    • SVD 作为一种线性模型,在捕捉用户-物品交互的非线性、复杂模式方面可能不如深度学习模型强大。其生成的物品嵌入(尤其是截断 SVD)可能不足以完全代表物品的细粒度特征。当数据集稀疏或物品长尾分布严重时,SVD 嵌入的质量可能会受影响。
    • SVD Tokenisation 的性能很大程度上依赖于 tt (词元数量) 和 vv (每个词元值数量) 的选择。虽然论文进行了初步探索,但这些参数的最优选择可能高度依赖于数据集特性。
    • SVD 需要处理完整的用户-物品交互矩阵,这对于极度大规模、动态变化的工业级数据集可能存在计算挑战和实时性问题。
  2. Next-K 策略的训练与生成鸿沟: 论文明确指出,模型训练目标 (LM) 与 Next-K 生成过程存在偏差。虽然这是一个有待未来研究解决的问题,但目前的结果确实显示了性能下降。在实际应用中,这种性能下降是否可以接受,或者强化学习的调优成本(复杂性、训练时间、收敛性)是否值得,需要进一步评估。
  3. 多样性、公平性等复杂目标的具体实现: 论文多次提及 Next-K 策略可以用于优化多样性、覆盖率等复杂目标。然而,本文并未展示如何具体实现这些目标(例如,通过在损失函数中引入多样性惩罚项或通过强化学习奖励)。这部分仍停留在理论潜力层面,而非实际验证。
  4. MovieLens-1M 数据集的问题: 论文提到了 MovieLens-1M 存在用户评分顺序与实际观看顺序不一致的问题。这可能会影响序列推荐模型的评估真实性。尽管这是为了与其他论文对齐,但在验证 Next-K 这种强调序列依赖性的策略时,选择一个时序性更强、更真实的序列数据集可能会提供更有说服力的证据。
  5. 生成式模型的潜在风险: 虽然生成式模型潜力巨大,但也可能带来一些风险,例如生成“幻觉”推荐(即生成一个不存在或意义不明的物品 ID 序列),或者在未充分调优时生成低质量、低相关性的推荐。论文中提到了会忽略无效序列,但并未深入探讨其发生频率和影响。

相似论文推荐

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

暂时没有找到相似论文。