【论文阅读】LLM4RS:TALLRec: An Effective and Efficient Tuning Framework to Align Large Language Model w RS

【论文阅读】LLM4RS:TALLRec: An Effective and Efficient Tuning Framework to Align Large Language Model w RS

0. 来源

1. 介绍

大型语言模型(llm)在不同的领域中都表现出了显著的性能,从而促使研究人员探索它们在推荐系统中的应用潜力。最初的尝试利用了llm的特殊能力,如丰富的通过丰富的知识和上下文学习的强泛化,这包括将推荐任务措辞为提示。

  • 然而,由于llm的训练任务和推荐任务之间存在显著差异,以及训练前的推荐数据不足,llm在推荐任务中的表现仍然不理想。为了弥补这一差距,作者考虑通过使用推荐数据调优llm来构建一个大型推荐语言模型。
  • 在最近的初始尝试中,实现目标依赖于上下文学习,这通常是通过官方的OpenAI API 实现的。他们将LLM视为传统推荐模型(如MF [25]和LightGCN [14])的工具生成器[41],即,LLM用于对这些模型过滤过的候选项目进行重新排序。然而,这些方法只能达到与传统模型[11,46]相当的性能。更糟糕的是,只使用上下文学习可能无法提出建议。如图1所示,作者发现ChatGPT要么拒绝回答,要么相信用户会喜欢这个新项目。因此,在建议中进一步探索一种更有效地利用llm的适当方法是至关重要的。

在这里插入图片描述

作者假设仅使用上下文学习的失败有两个原因:

  • 训练llm与推荐的语言处理任务之间的巨大差距,llm可能与推荐任务不能很好地保持一致。此外,在llm的训练阶段,面向推荐的语料库也非常有限。
  • 2)llm的影响受到基础推荐模型的限制,由于基础推荐模型的容量有限,可能无法在其候选列表中包含目标项目。

因此,作者考虑建立一个大型推荐语言模型(LRLM)来弥合llm和推荐任务之间的差距,除了上下文学习之外,还能更好地刺激llm的推荐能力。为此,作者提出了一个高效和有效的调优框架来调整llm与推荐值,即TALLRec。作者已经证明,所提出的TALLRec框架可以显著提高llm在电影和图书领域的推荐能力,即使是在有限的数据集少于100个样本中。此外,所提出的框架是高效的,并且可以在具有LLaMA-7B的一个RTX 3090上执行。此外,微调后的LLM具有鲁棒的跨域泛化。

贡献:

  • 作者将TALALRec架构应用于LLaMA-7B模型[45],采用LoRA [19]架构,确保该框架可以部署在Nvidia RTX 3090(24GB)GPU上。
  • 作者在电影和书籍中知识丰富的推荐场景中进行了详细的实验,其中调优的LLaMA-7B模型优于传统的推荐模型和GPT3.5的上下文学习,这是一个比LLaMA-7B更强的LLM。
  • 此外,结果还验证了作者的框架的效率和鲁棒性: 1)作者的TALLRec框架可以通过几个例子(小于100)快速激发推荐能力;2)通过作者的框架训练的模型在不同领域也具有很强的泛化能力(例如,电影→书)。

2. 前置工作

2.1 指令调优

指令调优是LLM训练过程中的一个关键组成部分。它是一种被广泛使用的技术,通过微调一组不同的人工注释的指令和响应来促进llm的能力。这一阶段赋予了模型一个强大的泛化能力,从而赋予其熟练地处理未知任务的能力,并确保其对新场景和挑战的适应性。具体来说,指令调优有四个一般步骤(参见表1中的示例):
在这里插入图片描述

  • 步骤1:识别一个任务,并使用自然语言表达一个指令,以有效地解决任务。该指令可以包括对任务的明确定义,以及解决它的具体解决方案。这些描述在整个研究中被称为“任务指导”。
  • 步骤2:用自然语言表示任务的输入和输出,并将其定义为“任务输入”和“任务输出”。
  • 步骤3:将“任务指令”和“任务输入”整合在一起,形成“指令输入”,对每个数据点以“任务输出”作为对应的“指令输出”。
  • 步骤4:基于格式化的“指令输入”和“指令输出”对数据训练LLM。

2.2 任务公式

本研究的主要目的是促进llm与推荐任务的对齐,以释放它们对推荐的潜力。为了实现这一目标,作者将作者的任务概念化为快速和有效地培训一个推荐模型,利用有限数量的用户历史交互数据来预测用户对新项目的偏好。

  • 由用户交互的历史项目被表示为一个由 [ i t e m 1 , i t e m 2 , . . . , i t e m n ] [item_1, item_2, ...,item_n] [item1,item2,...,itemn] 表示的序列。序列中的每个项目都包含 ID 和 文本信息(例如,电影名称或书名)。
  • 此外,该序列还伴有一个用户反馈序列,表示为 [ r a t e 1 , r a t e 2 , . . . , r a t e n ] [rate_1,rate_2,...,rate_n] [rate1,rate2,...,raten],其中 r a t e i rate_i ratei∈{1,0} 表示用户是否喜欢 i t e m i item_i itemi
  • 在作者的设置中,作者的任务是利用表示为 M 的 LLM 来构建一个表示为 M r e c M_{rec} Mrec 的 LRLM,它可以根据用户的推荐任务指令和用户的历史交互来预测用户是否会喜欢一个新项目(表示为 i t e m n + 1 item_{n+1} itemn+1)。
  • 符号表示:
    • 与新项组合的历史序列表示为“Rec Input”,
    • LRLM 的预测表示为“Rec output”,
    • 推荐任务的“任务指令”表示为 “Rec Instruction”。

3. 方法框架

在本小节中,作者将介绍TALLRec框架,该框架旨在促进LLM与建议的有效和高效的对齐,特别是在低GPU内存消耗设置下。具体来说,作者首先介绍了调优方法,然后是主干网的选择。

在这里插入图片描述

3.1 TALLRec调优阶段

TALLRec包括两个调优阶段:指令调优和推荐调优(rec-tuning)。

  • 前一阶段是LLM常用的常见训练过程,提高了LLM的泛化能力,
  • 后一阶段模拟指令调优模式,针对推荐任务对模型进行微调。

1)对于前者,作者使用Alpaca 提供的自指导数据来训练作者的模型。具体来说,作者在指令调优过程中使用了条件语言建模目标,如羊驼所述:
在这里插入图片描述
其中,𝑥 和 𝑦 分别表示自指令数据中的“指令输入”和“指令输出”, y t y_t yt 是 𝑦 的第 𝑡 个令牌, y < t y_{<t} y<t 表示 𝑦𝑡 之前的令牌,Φ 是 M 的原始参数,Z是训练集。

3)对于推荐调优,作者将推荐数据格式化为指令调优的模式。如图2所示,

  • 作者首先编写一个“Rec指令”,指导模型根据用户表达的偏好和不喜欢来确定用户是否对目标项目有良好的倾向,并使用“是”或“否”的二进制回答。
  • 其次,作者将“Rec输入”数据转换为一种自然语言格式。详细地,
    • 首先根据其评级将历史交互项目分为两组:用户喜欢的项目和用户不喜欢的项目。
    • 然后,作者将这两组与要推荐的目标项目结合起来。最后,作者用自然语言表达这些信息,以格式化最终的“Rec输入”——“用户偏好:𝑖𝑡𝑒𝑚1,𝑖𝑡𝑒𝑚4,𝑖𝑡𝑒𝑚𝑛用户不偏好:𝑖𝑡𝑒𝑚2,𝑖𝑡𝑒𝑚3,…,𝑖𝑡𝑒𝑚𝑛−1。用户是否会喜欢目标电影/书籍:𝑖𝑡𝑒𝑚𝑛+1,如图2所示。
    • 然后,作者将用户的反馈到新项目转换为“Yes./No.”作为一个“推荐输出”。最终,作者将前面提到的“Rec指令”和“Rec输入”合并,以创建一个用于重新调整的“指令输入”。
    • 然后,作者利用生成的“Rec输出”作为“指令输出”进行指令调优,并以类似于指令调优阶段的方式对LLM进行这些Rec调优样本的LLM训练,以构建一个LRLM。

3.2 轻量级微调

在训练LLM时,直接微调模型是计算密集型和耗时的。考虑到这些因素,作者建议采用一种轻量级的微调策略来同时执行指令调优和指令控制调优。轻量级微调的中心前提是,当代语言模型可能拥有过多的参数,而它们的信息集中在一个较低的内在维度上。因此,作者可以通过只微调参数的一小部分子集来获得与整个模型相当的性能。

  • 具体来说,作者使用了LoRA ,它涉及到冻结预先训练过的模型参数,并在变压器架构的每一层中引入可训练的秩分解矩阵,以促进轻量级的微调。因此,通过优化秩分解矩阵,作者可以在保持原始参数处于冻结状态的同时有效地合并补充信息。总之,最终的学习目标可以计算为:
    在这里插入图片描述
    其中Θ是LoRA参数,并且在训练过程中作者只更新LoRA参数。通过LoRA,作者可以只用原始LLM参数的千分之一来完成训练,从而完成训练过程。

3.3 backbone选择

目前,有大量的LLMs被提出,如 GPT series, PaLM, CHinchilla, and LLaMA等。其中,相当数量的 llm(如PaLM和CHinchilla)不提供对它们的模型参数或api的访问,这使得它们在研究或其他应用中具有挑战性。此外,数据安全问题是推荐领域中的重要问题。因此,利用第三方api(如ChatGPT和text-davinci-003)来利用llm需要进行进一步的讨论。为了复制在现实世界的推荐场景中需要考虑的问题,作者打算模拟公共LLM的实际使用,并更新其参数以供推荐使用。经过仔细考虑,作者选择了使用LLM-Llama进行实验,这是目前表现最好的开源LLM,其训练数据也是公开可用的。

4. 实验

在本节中,作者进行了实验来回答以下研究问题:

  • RQ1:在训练交互有限的情况下,所提出的方法与目前基于llm的传统推荐方法相比的性能如何?
  • RQ2:拟议的TALLRec的组成部分如何影响其有效性?
  • RQ3:所提出的方法如何使推荐者能够推广到不同的(甚至是看不见的)领域?

4.1 实验设置

4.1.1数据集

作者在来自电影和书籍领域的两个独立数据集上进行了实验,以评估推荐方法。

  • 电影。这是一个来自MovieLens100K基准数据集的精炼数据集,其中包括用户对1到5的电影的评分,以及对电影的全面文本描述,如“标题”和“导演”。具体来说,作者通过采样最近的10,000个交互作用作为预测目标,并将它们以8:1:1的比例分配到训练、验证和测试集中。为了为用户的每个预测目标项构建一个完整的数据样本,将保留前10个用户交互作为历史交互。此外,作者使用阈值3将评级转换为二进制标签,其中超过3的评级被标记为“喜欢”(“1”),而低于它的则被标记为“不喜欢”(“0”)。
  • 书。这与从图书交叉数据集[67]中获得的图书推荐的数据集有关。图书交叉数据集包括用户对1-10级的书籍的评分,以及对书籍的文本描述,如“图书作者”和“书名”的信息。为了创建所利用的数据集,作者随机选择一个由用户交互的项目作为用户的预测目标项目,并抽取剩余的10个与用户交互的项目作为目标项目2的历史交互。对原始数据集中的每个用户都重复这个采样过程。随后,作者将结果数据以相同的8:1:1的比例划分为训练、验证和测试集。此外,作者通过应用阈值5来将评级进行二值化。
4.1.2 少样本训练设置

为了评估在训练数据严重有限的情况下不同方法的推荐性能,作者采用了少样本训练范式,只从训练集中随机选择有限数量的样本进行模型训练。这个设置被称为“𝐾-shot”训练设置,其中𝐾表示所使用的训练样本的数量。通过为K设置一个极小的值,如64,作者可以测试一种方法是否可以在严重有限的训练数据的情况下快速获得推荐能力。

4.1.3 基线

为了对作者的TALLRec进行全面的评估,作者将其与基于llm和传统的推荐方法进行了比较:

  • 基于大模型的方法。作者将作者的方法与当前基于llm的推荐方法进行了比较,这些方法使用上下文学习直接生成推荐,如[11]和[46]等工作中得到了演示。为了确保公平的比较,作者通过使用与TALLRec相同的指令,将这些方法与作者的任务对齐。具体来说,作者在不同的llm上进行上下文学习: 1)羊驼-LoRA,2)文本-Davinvi-002,3)文本-daviniv-003,和4) ChatGPT,其中羊驼-LoRA是基于使用LoRA和指令调整的LLaMA模型再现羊驼结果的模型,后三个模型是由OpenAI提供的GPT系列模型。
  • 传统的方法。由于作者的方法利用历史交互来预测后续的交互,这类似于顺序推荐,因此作者打算将其与以下顺序推荐方法进行比较:
    • GRU4Rec [15]。这是一个基于RNN的顺序推荐器,它利用GRU对历史序列进行编码。
    • Caser [43]。这是一个基于cnn的顺序推荐器,它将一系列最近的项目嵌入为一个“图像”,并使用水平和垂直卷积滤波器学习顺序模式。水平过滤器的数量固定在16个,其高度在{2、3、4}范围内搜索,垂直过滤器的数量设置为1。
    • SASRec [24].这是一种基于注意力的顺序推荐器,它采用了一种类似于变压器译码器的多头自注意模型架构来捕获用户的偏好。根据SASRec的论文,作者将头数设为1。
    • DROS [60].这是目前最先进的顺序推荐方法,它处理各种分布外的推荐问题,通过利用所有分布来提高生成性能。

这些方法的默认实现仅依赖于项目ID信息来构建推荐模型。然而,在作者的设置中,作者假设项目文本描述是可用的,并且作者的方法将利用这些文本描述来生成建议。为了确保作者的方法和基线方法之间的公平比较,作者进一步考虑比较了GRU4Rec和DROS的以下变体:

  • GRU-BERT。这是GRU4Rec的一个变体,它包含了一个预先训练过的LLM模型BERT [6],以利用项的文本描述。具体来说,作者将项目文本描述输入BERT,并将生成的CLS嵌入与GRU4Rec的初始项目嵌入连接起来。作者将组合嵌入作为GRU4Rec用于生成推荐预测的项目表示。
  • DROS-BERT。DROS的这种变体也被类似地修改以合并BERT,允许它利用项的文本信息。
4.1.4 评估度量

考虑到作者的设置与明确推荐之间的相似性,这涉及到预测用户对给定目标项目的兴趣,作者采用明确推荐的传统评估度量:接收者工作特征下面积(AUC)作为作者的评估度量。具体来说,作者使用Scikit-learn软件包[35]来计算AUC分数。

4.1.5 实施细节

作者使用Python 3.10和PyTorch 2.0 [34]来实现所有的方法。

  • 为了确保统一的序列长度,作者对历史交互长度低于预定阈值(10)的序列应用填充,使用最后一个交互项作为填充项。
  • 作者的方法利用历史上交互的项目和相应的用户反馈作为模型输入来捕获用户偏好。
  • 为了实现公平的比较,对于基线,作者为每个反馈分配一个嵌入,并将其与项目嵌入连接起来,从而能够在模型输入时直接利用用户反馈信息进行用户兴趣建模。
  • 对于所有的方法,作者使用Adam优化器优化模型参数,默认学习率为1e-3,MSE损失作为优化目标。作者对所有的方法都使用权重衰减,搜索范围分别在[1e-3、1e-4、1e-5、1e-6、1e-7]范围内的值。
  • 关于基线的特定超参数,作者坚持了他们各自的论文的设置。
    • 对于GRU-BERT和DROS-BERT,作者利用HuggFace4发布的BERT-base版本提取文本信息,将GRU层数设置为4,并采用大的隐藏大小1024,旨在与BERT的嵌入大小对齐。
    • 此外,假设预测的标签是二进制的,作者将符号激活函数应用于基线的输出,以确定用户偏好的概率。
  • 最后,作者用不同的随机种子运行所有方法5次,并报告平均结果。

4.2 性能对比

在这里插入图片描述

4.3 消融研究

  • “IT”表示只执行初始指令调优的,
  • “RT”只实现Rec调优,
  • 而“IT+RT”表示both实现

在这里插入图片描述

4.4 跨域泛化分析

在这里插入图片描述

5. 总结

在本文中,作者首先尝试通过微调方法来提高LLM的推荐能力,并研究了使用LLM进行推荐的可行性。作者的初步发现表明,即使是现有的最好的LLM模型也不能在推荐任务中表现不佳。

  • 为了解决这个问题,作者提出了一个TALLRec框架,该框架可以通过两个阶段有效地将LLM与推荐任务对齐:指令调优和rec调优。
  • 作者的实验结果表明,使用作者的TALLRec框架训练的LRLM优于传统模型,并表现出很强的跨域传输能力。
  • 接下来,作者首先计划探索更有效的方法来激活大型模型的推荐能力,并开发一个能够同时处理多个推荐任务的LLM。作者也将遵循之前的工作[50],并致力于探索生成建议的新方向。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋冬无暖阳°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值