目录摘要1. 引言2. TALLRec2.1. 预备知识2.2. TALLRec框架3. 实验3.1. 性能比较 (RQ1)3.2. 消融研究 (RQ2)3.3. 跨领域泛化分析 (RQ3)4. 相关工作5. 结论整体的学习路线如下从入门到工业落地生成式推荐系统学习路线 论文合集摘要大型语言模型LLM在不同领域表现出了卓越的性能从而促使研究人员探索其在推荐系统中的应用潜力。 最初的尝试利用了 LLM 的卓越能力例如通过上下文学习丰富的知识和强大的泛化能力其中涉及将推荐任务表述为提示。 然而由于LLM的训练任务和推荐任务之间存在巨大差异以及预训练期间的推荐数据不足LLM在推荐任务中的表现仍然不够理想。 为了弥补这一差距我们考虑通过使用推荐数据调整 LLM 来构建大型推荐语言模型。 为此我们提出了一个高效且有效的调整框架用于使 LLM 与建议保持一致即 TALLRec。 我们已经证明即使数据集少于 100 个样本所提出的 TALLRec 框架也可以显着增强电影和书籍领域 LLM 的推荐能力。 此外所提出的框架非常高效可以在带有 LLaMA-7B 的单个 RTX 3090 上执行。 此外经过微调的 LLM 表现出强大的跨领域泛化能力。 我们的代码和数据可在 https://github.com/SAI990323/TALLRec 获取。1. 引言大语言模型 (LLMs) 在生成逼近人类语言的文本以及执行广泛的任务方面展现出非凡的熟练度 (Zhao et al., 2023)包括自然语言处理 (Liang et al., 2022; Chowdhery et al., 2022; Wei et al., 2022)、机器人学 (Shah et al., 2022; Xiao et al., 2022; Driess et al., 2023) 和信息检索 (Jeronymo et al., 2023; Wang et al., 2023b; Jin et al., 2023; Ai et al., 2023)。 此前研究也已证明大语言模型具有丰富的知识和组合泛化能力 (Ouyang et al., 2022; Sanh et al., 2021; Wei et al., 2021)。 仅需适当的指令这些模型就能学会如何解决未见过的问题并激发自身知识以实现高水平的性能 (Lin et al., 2021)。 大语言模型上述能力为解决当前推荐领域中需要强大泛化能力和丰富知识的挑战带来了令人鼓舞的机会。 从这个角度来看探索将大语言模型集成到推荐系统中具有价值而这在以往的研究中并未受到充分关注。图1。 大语言模型在推荐中的应用说明。 根据用户的交互历史 LLM 可以通过上下文学习来预测用户是否会喜欢新项目。 However, the representative LLMs,e.g.,ChatGPT, either refuse to answer or always give positive predictions (likes) on Movie and Book recommendation tasks. 如果我们忽略被拒绝的答案并计算剩余样本的 AUC我们会发现 LLM 在随机猜测方面的表现类似AUC0.5。 有关更多实验细节请参阅第 3 节。在最近的初步尝试中Gao等人2023Wang等人2023a实现目标依赖于上下文学习Brown等人2020通常通过官方OpenAI APIBrockman等人2022来实现。 他们将LLM视为传统推荐模型例如MFKoren等人2009和LightGCNHe等人2020)的工具形成者Schick等人2023,即LLM用于对这些过滤后的候选项目进行重新排序模型。 然而这些方法只能达到与传统模型相当的性能Gao等人2023Wang等人2023a。 更糟糕的是仅使用上下文学习可能无法提出建议。 如图1所示我们发现ChatGPT要么拒绝回答要么总是给出积极的预测点赞。 因此进一步探索更有效地利用LLM推荐的适当方式至关重要。我们假设仅使用上下文学习的失败有两个原因1由于训练 LLM 和推荐的语言处理任务之间存在巨大差距LLM 可能与推荐任务无法很好地结合。 此外 LLM 的训练阶段面向推荐的语料库非常有限。 2LLM的效果受到底层推荐模型的限制由于其容量有限可能无法将目标项目纳入其候选列表中。 因此我们考虑构建一个大型推荐语言模型LRLM来弥合LLM和推荐任务之间的差距更好地激发LLM除了In-context Learning之外的推荐能力。为了实现这一目标我们专注于通过推荐任务来调整 LLM 。 考虑到指令调优是让LLM学习解决不同任务并具有强大泛化能力的核心Peng等人2023Jang等人2023Iyer等人2022我们提出了一个轻量级调优框架来适应LLM的推荐名为TALLRec。 TALLRec 精巧地将推荐数据构建为指令并通过额外的指令调优过程来调优大语言模型。 此外考虑到大语言模型的训练需要大量的计算资源TALLRec 采用了一种轻量级的调优方法以高效地将大语言模型适配到推荐任务中。具体而言我们将 TALLRec 框架应用于 LLaMA-7B 模型 (Touvron et al., 2023)并采用 LoRA (Hu et al., 2022) 架构这确保了该框架可以在 Nvidia RTX 3090 (24GB) GPU 上部署。 此外为了探究所需的最低计算资源我们在少样本设置下进行了实验仅使用了有限数量的调优示例。 我们在电影和书籍等知识丰富的推荐场景下进行了详细的实验其中调优后的 LLaMA-7B 模型在传统推荐模型和使用 GPT3.5一个比 LLaMA-7B 强大得多的 LLM的上下文学习In-context Learning方面表现更优。 实验结果验证了我们框架的效率和鲁棒性1) 我们的 TALLRec 框架可以在少样本设置下快速激发大语言模型的推荐能力。 2) 通过 TALLRec 框架训练的大语言模型在不同领域例如电影→ 书籍具有很强的泛化能力。总之我们的贡献总结如下我们研究了一个推荐领域的新问题——使大语言模型与推荐任务对齐在此过程中我们揭示了基于上下文学习的方法的局限性并强调了指令调优的重要性。我们引入了一个新的 TALLRec 框架来构建大型推荐语言模型该框架能够以低 GPU 成本和少量调优样本有效地对大语言模型进行推荐任务的调优。我们进行了广泛的实验验证了所提出框架的有效性和效率并发现了其在不同领域无缝导航的卓越鲁棒性。2. TALLRec本节首先介绍调优大语言模型的预备知识和我们的任务公式然后介绍所提出的 TALLRec 框架。2.1. 预备知识表 1。 一个翻译任务的调优样本。∙指令调优是利用人工注释的指令和响应来训练 LLM 的关键技术Ouyang 等人2022。 一般来说指令调优有四个步骤参见表2中的示例。 具体来说 步骤一 使用自然语言定义任务并阐明“任务指令”其中通常包含任务的明确定义以及解决该任务的具体解决方案。 步骤2 用自然语言制定和构造任务的输入和输出表示为“任务输入”和“任务输出”。 步骤3 对于每个调优样本将“任务指令”和“任务输入”整合在一起形成“指令输入”并将“任务输出”作为相应的“指令输出”。 第4步 基于格式化的“指令输入”和“指令输出”对 LLM 进行指令调整。表 2.微调样本。∙ 调整任务制定。 我们的目标是利用LLM表示为ℳ构建一个LRLM它可以预测用户是否会喜欢一个新项目。 为了实现这一目标我们使用推荐数据对 LLM 进行推荐调整rec-tuning。 如表2 所示我们将推荐数据格式化为指令调整的模式。 我们首先编写一个“任务指令”指导模型根据用户的历史交互来确定用户是否会喜欢目标项目并以“是”或“否”的二元答案进行响应。 为了构造“任务输入”我们根据评分将用户历史上交互过的物品分为两类用户喜欢的物品和用户不喜欢的物品其中物品按交互时间顺序排列并以文本描述例如标题和简要介绍表示。此外“任务输入”还包括用户从未见过的目标新项目。 最后我们将“任务指令”和“任务输入”合并以创建“指令输入”然后将预期的“指令输出”设置为“是”或“否”进行调整。2.2. TALLRec框架在本小节中我们介绍 TALLRec 框架该框架旨在促进 LLM 与推荐任务有效且高效的结合特别是在低 GPU 内存消耗设置中。 具体来说我们首先提出两个具有轻量级实现的 TALLRec 调整阶段然后是主干选择。 如图2所示TALLRec包含两个调优阶段alpaca调优和rec-调优。 前一阶段是LLM的通用训练过程增强LLM的泛化能力而后一阶段则模拟指令调优的模式针对推荐任务调整LLM。∙ TALLRec 调整阶段。 对于 alpaca 调优我们使用 Alpaca Taori 等人2023 提供的自指导数据来训练 LLM。 具体来说我们在 alpaca 调优过程中利用条件语言建模目标如 Alpaca 存储库1中所示。 正式地其中x和y分别表示自指令数据中的“指令输入”和“指令输出”yt是y的第t个标记yt表示yt之前的标记 Φ是ℳ 对于rec-tuning我们可以利用表2中描述的rec-tuning示例来调整LLM类似于alpaca调整。图 2.由 alpaca 调优和 re-tuning 两个阶段构建的 TALLRec 框架图示。 在重新调整期间我们使用带有由推荐数据构造的指令输入和输出的重新调整样本。 值得注意的是我们采用轻量级调优技术来提高 TALLRec 框架的效率。∙ 轻量级调整。 然而直接调整 LLM 计算量大且耗时。 因此我们建议采用轻量级调优策略来执行 alpaca 调优和 re-tuning。 轻量级调优的核心前提是当代语言模型可能拥有过多的参数并且其信息集中在较低的内在维度Hu等人2022。 因此我们可以通过仅调整一小部分参数来实现与整个模型相当的性能Li and Liang, 2021; Houlsby 等人, 2019; Lester 等人, 2021。 具体来说我们采用 LoRA (Hu 等人, 2022)其中涉及冻结预训练的模型参数并将可训练的秩分解矩阵引入到 Transformer 架构的每一层中以方便轻量级调优。 因此通过优化秩分解矩阵我们可以有效地合并补充信息同时保持原始参数处于冻结状态。 总的来说最终的学习目标可以计算为其中Θ是LoRA参数我们仅在训练过程中更新LoRA参数。 通过LoRA我们只需原始LLM参数的千分之一即可完成训练从而完成训练过程Hu等人2022。 ∙主干选择。 目前已有大量LLM发布如GPT系列、PaLM、CHinchilla、LLaMA(Brown 等人, 2020; Chowdhery 等人, 2022; Hoffmann 等人, 2022; Touvron 等人, 2023)。 其中相当多的 LLM 例如 PaLM 和 Chinchilla不提供对其模型参数或 API 的访问这使得它们难以用于研究或其他应用。 此外数据安全问题也是推荐领域的重要问题。 因此利用第三方 API例如 ChatGPT 和 text-davinci-003来利用 LLM 需要进一步讨论。 为了复制现实世界推荐场景中需要考虑的问题我们打算模拟公共 LLM 的实际使用并更新其参数以用于推荐目的。 经过深思熟虑我们选择使用LLMs-LLaMA进行实验LLMs-LLaMA是目前性能最好的开源LLM其训练数据也是公开的Touvron等人2023。3. 实验在本节中我们进行实验来回答以下研究问题RQ1 与当前基于 LLM 的传统推荐模型相比TALLRec 的表现如何RQ2 TALLRec 中的不同组件如何影响其有效性RQ3TALLRec在跨域推荐下表现如何表 3. 传统序列推荐基线和 TALLRec 在不同的少样本训练设置下的性能比较。 报告的结果是 AUC 乘以 100粗体表示最高分。 ‡显着优于 t 检验 p¡0.01 的所有基线。Few-shotGRU4RecCaserSASRecDROSGRU-BERTDROS-BERTTALLRecmovie1649.0749.6850.4350.7650.8550.2167.24‡6449.8751.0650.4851.5451.6551.7167.48‡25652.8954.2052.2554.0753.4453.9471.98‡book1648.9549.8449.4849.2850.0750.0756.366449.6449.7250.0649.1349.6448.9860.39‡25649.8649.5750.2049.1349.7950.2064.38‡图 3. 图 (a) 显示了基于 LLM 的基线零样本设置与我们的 TALLRec 之间的性能比较其中 TALLRec 仅在 64 个调整样本上进行训练(即在 64 样本训练设置中。 图 (b) 显示了 TALLRec 变体和传统序列推荐方法 w.r.t. 使用的训练样本数量范围从 1 到 256的性能趋势。 TALLRec 具有三种变体“AT”仅用于alpaca微调“RT”仅用于rec-tuning 推荐微调“TALLRec”用于完整版本。∙数据集。 我们对两个数据集进行实验。 统计数据和更多详细信息可以在我们发布的数据中找到。电影。这是来自 MovieLens100K F.Maxwell 和 Konstan2015 的处理数据集其中包含电影的用户评分以及电影的全面文本描述例如“标题”和“导演”。 由于我们在需要有限调整样本的几次训练设置中进行实验因此我们通过对最近 10,000 个交互进行采样来处理原始数据集并将它们按照 8:1:1 的比例分为训练集、验证集和测试集。 为了构建调整样本目标项之前的 10 次交互将被保留为历史交互。 按照He等人2020Zhang等人2023b我们只将评分3的互动视为“喜欢”将评分≤3的互动视为“不喜欢”。预订。 这是由 BookCrossing (Ziegler 等人, 2005) 处理的图书推荐数据集。 BookCrossing 数据集包含用户评分1-10和书籍的文本描述例如“书籍作者”和“书籍标题”信息。 对于每个用户我们随机选择该用户交互的一个项目作为预测目标并采样 10 交互的项目作为历史交互2. 随后我们将构建的调整样本以 8:1:1 的相同比例划分为训练集、验证集和测试集。 此外我们根据阈值 5 对评级进行二值化。∙ Few shot训练设置。 我们采用少样本训练设置仅从训练集中随机选择有限数量的样本进行模型训练。 它被称为“K-shot”训练设置其中K表示使用的训练样本数。 通过设置一个极小的K值例如64我们可以测试一种方法是否能够在训练数据非常有限的情况下快速从LLM中获得推荐能力。∙基线。 我们将 TALLRec 与基于 LLM 的推荐方法和传统的推荐方法进行比较。 1现有的基于LLM的方法采用In-context Learning直接生成推荐Gao等人2023Wang等人2023a。 为了公平比较我们使用相同的指令将这些方法与 TALLRec 对齐。 具体来说我们对不同的 LLM 进行情境学习1) Alpaca-LoRA、2) Text-Davinvi-002、3) Text-Daviniv-003 和 4) ChatGPT。 Alpaca-LoRA 是一个通过使用 LoRA 和 alpaca 调整来重现 LLaMA 模型的 Alpaca 结果的模型。 后三个是OpenAI的GPT系列模型。2) 传统方法。 由于我们的方法利用历史交互来预测后续交互类似于序列推荐因此我们考虑以下顺序模型(i) GRU4Rec (Hidasi 等人, 2016) 是一种基于 RNN 的顺序推荐器它利用 GRU 来编码历史交互。 (ii) Caser Tang 和 Wang2018 利用 CNN 来编码历史交互序列。 (iii) SASRec Kang 和 McAuley2018 是一种经典的基于 Transformer 的序列推荐器。 (iv) DROS (Yang 等人, 2023) 是一种最先进的顺序推荐模型它利用分布式稳健优化来实现稳健的推荐。 我们使用作者提供的 GRU4Rec 实现的版本。[3]上面的顺序模型依赖于项目 ID 特征而不考虑项目的文本描述。然而在我们的设置中我们假设项目文本描述可用于 LLM 调整。 为了确保公平比较我们进一步考虑比较 GRU4Rec 和 DROS 的以下变体(v) GRU-BERT 是 GRU4Rec 的变体它结合了预训练的 BERT (Devlin 等人2019) 来编码文本描述。 具体来说BERT 对文本描述进行编码并输出 CLS 嵌入然后将其与 GRU4Rec 的原始 ID 嵌入连接起来作为项目表示。 (vi)DROS-BERT与BERT集成类似于GRU-BERT。∙ 评估指标。 ∙ 评估指标。 由于 TALLRec 旨在预测用户对给定目标物品的偏好即一个二分类问题因此我们采用推荐领域常用的评估指标受试者工作特征曲线下面积Area Under the Receiver Operating CharacteristicAUC。∙ 实施细节。 为了确保统一的序列长度我们使用用户上次交互的项目来填充历史交互序列其长度 为阈值 10。 对于所有方法我们使用 Adam 优化参数MSE 损失和学习率为 1e-3。 我们搜索{1e-3, 1e-4, 1e-5, 1e-6, 1e-7}中所有方法的权重衰减。 继Yang等人2023之后对于基线的具体超参数我们坚持其原始设置。 对于 GRU-BERT 和 DROS-BERT我们使用 Hugging Face 发布的 BERT4同时将 GRU 层数设置为 4隐藏大小设置为 1024用于与 BERT 的嵌入大小对齐。 最后我们使用不同的随机种子运行所有方法五次并报告平均结果。3.1. 性能比较 (RQ1)我们旨在研究各种方法在少样本训练设置下的推荐性能这使我们能够评估 如何在有限的推荐微调样本下快速调整大语言模型以进行推荐。 与传统方法的评估结果呈现在表 3 中而与基于大语言模型的方法的比较则描绘在图 3 (a) 中。从图和表中我们得出以下观察结果 1) 我们的方法在传统方法和基于大语言模型的方法上都显著优越验证了通过我们的 TALLRec 框架调整大语言模型的优越性。 TALLRec 成功地释放了大语言模型在推荐领域的知识和泛化能力。 2) 基于大语言模型的方法表现与随机猜测相似 (AUC≈0.5)。 然而通过 TALLRec 训练的大语言模型取得了显著的进步。 这些结果表明推荐任务与语言任务之间存在显著差距显示了使用推荐数据对大语言模型进行推荐微调的重要性。 3) 在我们的少样本训练设置下传统的推荐方法一致地产生较低的性能这表明传统方法在有限的训练样本下无法快速学习推荐能力。 4) GRU-BERT 和 DROS-BERT 与它们的后端模型 GRU4Rec 和 DROS 相比没有显著改进。 这表明在少样本训练设置下纯粹添加文本描述并不能增强传统的推荐模型。图 4。 使用图书数据 (TALLRec (Book))、电影数据 (TALLRec (Movie)) 和两者 (TALLRec (Both)) 通过 TALLRec 训练的 LRLM 的跨领域泛化性能。 左图显示了在不同数量的推荐微调样本下在电影数据集上的测试结果而右图显示了在图书数据集上的测试结果。3.2. 消融研究 (RQ2)为了证明 TALLRec 中 alpaca 调优和推荐调优的有效性我们在 K 样本训练设置下对 K 进行不同变化的消融研究。 具体来说我们比较了 TALLRec 与两个变体 “AT” 和 “RT” 的性能其中 “AT” 仅进行 alpaca 调优而 “RT” 则仅实施 rec-tuning。 通过改变 K我们进一步研究了训练样本数量的影响。我们在图 3 (b) 中总结了结果从中我们可以得出以下观察 1) “AT” 的性能与 “RT” 和 TALLRec 相比显著下降这表明 rec-tuning 的关键作用它有效地激发了大语言模型LLM的推荐能力。 2) 在有限的 rec-tuning 样本 (≤128) 下TALLRec 通常优于 “RT”这证实了 alpaca 调优可以增强大语言模型LLM在新任务上的泛化能力尤其是在新任务的训练数据不足时。 随着 rec-tuning 样本数量的增加TALLRec 和 “RT” 的结果越来越接近。 这是有道理的因为当新任务有充足的训练数据时来自其他任务的泛化能力的重要性就会降低。 3) 随着 rec-tuning 样本数量的增加TALLRec 的性能始终优于基线。 这归因于 rec-tuning它可以利用有限的样本来激发大语言模型LLM的推荐能力。3.3. 跨领域泛化分析 (RQ3)为了进一步研究 TALLRec 的泛化能力我们在跨领域推荐上进行了实验。 具体来说我们使用不同的 rec-tuning 样本对 TALLRec 进行调优包括 1) “TALLRec (Book)”仅使用 Book 数据集中的样本2) “TALLRec (Movie)”仅使用 Movie 数据集中的样本以及 3) “TALLRec (Both)”使用 Book 和 Movie 样本进行调优。 在少样本 (few-shot) 训练设置下我们改变 K 在 {16,64,258} 中的值并分别在 Book 和 Movie 的测试集上评估模型。 结果总结在图 4 中从中我们可以发现 1) TALLRec 展现出卓越的跨领域泛化能力。 例如仅在电影样本上进行调优后“TALLRec (Movie)” 在 Book 数据上表现出良好的性能与 “TALLRec (Book)” 相当。 这是令人印象深刻的并表明 TALLRec 具有跨领域泛化能力而不是像传统的推荐系统那样只拟合单个领域。 2) 当 rec-tuning 样本数量超过 64 时“TALLRec (Both)” 在两个测试集上都优于 “TALLRec (Movie)” 和 “TALLRec (Book)”。 这一发现表明 TALLRec 可以无缝地整合来自不同领域的数据以增强其泛化性能。 在未来的工作中很有可能使用来自异构领域的、大规模的推荐数据来预训练TALLRec。4. 相关工作∙ 用于推荐的语言模型。 已经有几项尝试将语言模型LM与推荐系统集成。 尽管整合了语言模型 (Li et al., 2023b; Geng et al., 2022)但一些尝试仍然沿用传统的用户/物品ID来表示用户/物品。 因此它们忽略了语言模型如评论的语义理解能力而其他工作已经将语言信息作为用户/物品嵌入的一部分 (Hou et al., 2022)。 此外其他方法要么利用一个已经具备预备推荐能力的、未公开的模型 (Cui et al., 2022)。 要么使用小型模型在大规模下游任务数据上进行训练 (Zhang and Wang, 2023)。 此外上述模型也仅限于小型模型而本文提出的方法与如何将大型语言模型应用于推荐任务是正交的。 在推荐系统中目前很少有研究将LLM应用于推荐场景。 这些工作利用了GPT3.5系列模型的交互能力并应用了上下文学习 (Gao et al., 2023; Wang et al., 2023a)。 详细来说Chat-Rec (Gao et al., 2023) 致力于利用ChatGPT的交互能力并将ChatGPT与传统的推荐模型例如MF (Koren et al., 2009)、LightGCN (He et al., 2020)相结合从而构建一个对话推荐系统。 NIR (Wang et al., 2023a) 与Chat-Rec具有相似的概念它使用传统的推荐模型生成候选物品然后通过一个三阶段的多步提示过程进行重新排序。∙ 序列推荐。 我们的设置接近序列推荐其目标是基于用户的历史交互序列来推断用户的下一次交互 (Fang et al., 2020; Wang et al., 2019)。 早期马尔可夫链在序列推荐中发挥了重要作用 (Rendle et al., 2010; He and McAuley, 2016; Wang et al., 2015; Mahmood and Ricci, 2007)。 近年来基于深度学习的方法已成为主流。 大量工作使用不同类型的神经网络结构例如 RNN (Hidasi et al., 2016; Cui et al., 2020; Donkers et al., 2017)、CNN (Tang and Wang, 2018; Yuan et al., 2019; Yan et al., 2019) 和注意力机制 (Kang and McAuley, 2018; Zhang et al., 2019; Xu et al., 2021) 来模拟用户交互序列。 然而由于仅使用 ID 来表示用户和物品因此此类工作难以快速适应和泛化到新场景。 因此一些工作通过预训练 (Ni et al., 2018; Yuan et al., 2020)、数据增强 (Qiu et al., 2022, 2021; Wang et al., 2022a; Xie et al., 2022)、去偏 (Ding et al., 2022; Wang et al., 2022b; Zheng et al., 2021; Zhang et al., 2021) 和鲁棒优化 (Wen et al., 2022; Yang et al., 2023) 来关注序列推荐模型的泛化能力。 然而它们忽略了现有 LLM 强大的泛化能力导致探索不足。5. 结论随着 LLM 的发展人们逐渐认识到它们在推荐系统中的潜力 (Yuan et al., 2023; Li et al., 2023a; Zhang et al., 2023a)。 在这项工作中我们探讨了使用 LLM 进行推荐的可行性。 我们初步发现即使是现有最好的 LLM 模型在推荐任务上的表现也不佳。 为了解决这个问题我们提出了一个 TALLRec 框架该框架可以通过两个调优阶段alpaca 调优和 rec-tuning有效地将 LLM 与推荐任务对齐。 我们的实验结果表明使用我们的 TALLRec 框架训练的 LLM 的性能优于传统模型并表现出强大的跨领域泛化能力。 未来我们计划探索更有效的方法来激活更大模型的推荐能力并调优 LLM 以同时处理多个推荐任务。