CLLM4Rec论文阅读笔记

Collaborative Large Language Model for Recommender Systems论文阅读笔记

Abstract

提出存在的问题:

​ 自然语言和推荐任务之间的语义差距仍然没有得到很好的解决,导致了多个问题,如用户/项目描述符的虚假相关、对用户/项目数据进行的语言建模无效、通过自动回归的低效推荐。

解决方案:

​ 在本文中,我们提出了CLLM4Rec,这是第一个紧密集成了LLM范式和ID范式的生成式RS,旨在同时解决上述挑战。我们首先使用用户/项目ID令牌扩展预先训练的llm的词汇表,以忠实地建模用户/项目协作和内容语义。因此,我们提出了一种新颖的 "软+硬 "提示策略,通过在 RS 特定语料库上进行语言建模,有效地学习用户/项目协作/内容标记嵌入,其中每篇文档都分为由异构软(用户/项目)标记和硬(词汇)标记组成的提示和由同构项目标记或词汇标记组成的正文,以促进稳定有效的语言建模。

​ 此外,我们还引入了一种新颖的相互正则化策略,以鼓励 CLLM4Rec 从嘈杂的用户/项目内容中捕捉与推荐相关的信息。最后,我们为 CLLM4Rec 提出了一种新颖的以推荐为导向的微调策略,即在预训练的 CLLM4Rec 主干网中添加一个具有多叉似然的项目预测头,以根据从被遮蔽的用户与项目交互历史中建立的软+硬提示来预测留出的项目,从而在不产生幻觉的情况下高效地生成多个项目的推荐。

Introduction

​ 已经进行了一些初步的研究来探索LLMs对RSs的适应性。通常,这些方法可以概括为两个步骤:

​ (i)首先,将具有连续ID嵌入的用户/项目,推理用户兴趣和生成建议所需的相关信息,例如交互项、用户/项目特性和候选项,转换为离散的基于自然语言的提示。

​ (ii)然后,使用Prompt查询LLM,从LLM的文本输出中检索到与推荐相关的信息,生成推荐(直观的示例见图1)

pk8kwfe.png

​ 上述过程可以以零镜头方式执行,其中推荐决策直接从预先训练的LLM获得(例如,我们将关于用户和一个项目的所有相关信息输入到ChatGPT的聊天框中,并询问用户是否将与项目交互),或者,如果可以对预先训练的LLM对交互和特性数据进行微调,以便可以合并rs特定的知识以获得更准确的推荐。

​ 然而,基于描述的方法对用户项语义相似性引入了很强的归纳偏差,这可能不能忠实地捕获真实的语义。引入真正的用户/项目ID令牌,不幸的是,通常被认为是不可行的,因为直接进行语言建模(LM)序列与异构的令牌可能是无效的和不稳定的,特别是当大多数LLMs的词汇表可以稀释由大量随机初始化的用户/项目嵌入。

​ 即使可以通过 LLM 有效地学习用户/项目 ID 标记嵌入,但仍存在更多的挑战,阻碍了使用 LLM 进行有效和高效的推荐。首先,由于交互顺序对于直接推荐通常并不重要,而人类语言自然有顺序,因此在将用户历史交互转化为文本句子时,可能会为放置在不同位置的项目引入虚假的时间相关性。此外,对于内容建模而言,由于预训练的 LLM 并不以推荐为导向,因此它们很容易捕捉到与推荐目的无关的用户/项目文本特征中的噪声。

​ 此外,由于llm以自回归的方式生成下一个标记,与基于id的方法相比,通过基于llm的RSs进行多个推荐可能会低效。最后,对于基于伪id和基于描述的索引方法,通常需要在提示中显式地提供候选项,以避免产生幻觉。这些问题阻碍了基于llm的RSs的实际应用。因为在这种情况下,候选项库规模很大,而低延迟非常重要。

​ 为了解决上述挑战,我们提出了CLLM4Rec,这是第一个将RS的ID范式与基于llm的范式紧密结合的生成式RS。我们首先使用用户/项目ID令牌扩展预训练的llm的词汇表,以忠实地建模用户/项目协作/内容语义,其中令牌嵌入分两个阶段学习。

​ 预训练阶段包括相互正则化的协作式或内容式 LLM,这些 LLM 通过对根据用户/项目交互和文本特征建立的 RS 特定语料库进行语言建模来学习用户/项目标记嵌入。具体来说,为了对具有异构标记的文档进行有效的语言建模,提出了一种新颖的 "软+硬 "提示策略,即每篇文档被分解为由软标记(用户/项目)和硬标记(词汇)组成的提示和由同构项目标记(用于协作建模)或词汇标记(用于内容建模)组成的主文本。通过这种策略,两个 LLM 的预测头可以只关注协作信息和内容信息,从而大大提高语言建模的稳定性和有效性。此外,还提出了一种针对协同LLM的随机项目重排序策略,即忽略项目标记的顺序,而不对词汇标记产生负面影响。最后,我们为 CLLM4Rec 提出了一种新颖的以推荐为导向的微调策略,即在预训练的协作 LLM 骨干上添加一个具有多项式似然的项目预测头,以根据从屏蔽的用户交互历史中建立的软+硬提示来预测留出的项目,从而在不产生幻觉的情况下高效地生成多个项目的推荐。

​ 本文的主要贡献如下:

  • 我们提出了CLLM4Rec,这是第一个紧密结合ID范式和LLM范式的生成RS,其中引入了与LLM vocab空间对齐的用户/项目ID令牌嵌入,以很好地捕获用户的内在兴趣和项目属性。
  • 提出了一种新的软+硬提示策略,有效地对相互规范的异构令牌的CLLM4Rec进行预训练,其中用户/项目令牌嵌入可以有效地学习协作和内容信息。
  • 提出了一种面向推荐的微调策略,该策略基于通过多项可能性项目预测头从掩码交互建立的软+硬提示预测保留项目,可以有效地生成多个项目的推荐而不产生幻觉。

Method

​ 我们的目标是设计一种新的生成式 RS,通过引入用户/物品 ID 标记(和标记嵌入),将 LLM 与推荐任务紧密结合起来,从而准确地模拟用户/物品语义(如用户对物品的兴趣),实现高效的推荐,同时充分利用预训练 LLM 的编码知识和推理能力。

用户/项目令牌的扩展

vocab的扩展

​ 这里就是通过添加用户/项目ID令牌来描述内在的用户/项目语义来扩展LLM的词汇表

Token embedding

​ 这部分就是把上个部分引入的用户项目令牌(token)转换为嵌入,并且对于新引入的令牌,引入两种类型的令牌嵌入。具体方法如下:

​ 首先采样用户/物品协作令牌的嵌入

\(\mathbf{z}_i^{l,u},\mathbf{z}_j^{l,v}\sim\mathcal{N}\left(\mathbf{0},\lambda_l^{-1}\cdot\mathbf{I}_K\right),\)

​ 为了将内容语义与面向推荐的内容建模的协作语义对齐,我们从以下条件先验对用户/项目内容标记嵌入进行采样:

\(\mathbf{z}_i^{c,u}\sim\mathcal{N}\left(\mathbf{z}_i^{l,u},\lambda_c^{-1}\cdot\mathbf{I}_K\right),\mathbf{z}_j^{c,v}\sim\mathcal{N}\left(\mathbf{z}_j^{l,v},\lambda_c^{-1}\cdot\mathbf{I}_K\right)\)

​ 最后我们获取了几个令牌嵌入的矩阵,分别是vocab的,协作的和基于内容的:

\(\mathbb{Z}^t,\mathbb{Z}^{l,\{u,v\}},\mathrm{~and~}\mathbb{Z}^{c,\{u,v\}}\)

CLLM4Rec的基础模型

​ 也就是将一个token序列映射为一个隐空间。这里只有用户/项目标记嵌入是可训练的,而vocab嵌入Z𝑡以及主干LLM的其他部分是固定的,以保留预先训练好的知识。

互正则化的预训练

​ 互正则化的目的是学习用户,项目协作和内容标记的嵌入

pk8Ejy9.png

推荐特定的语料库

​ 将用户的交互以及用户/项目的内容特性转换为用户/项目/vocab令牌序列

pk8ZG9O.png

​ 但是直接进行语言原始语料库建模是不可行的,因为有意义的词汇标记数量可能会被大量新引入的用户/项目标记稀释,而这些用户/项目标记是随机初始化嵌入的

软+硬提示

​ 为了解决上述挑战,我们提出了一种新的软+硬提示策略,以促进对具有异构用户/项目/vocab标记的rs特定语料库进行语言建模。这里的软就是用户/项目。硬是词汇。

​ 然后说一个文档能够分为两个部分,

  • 一个由软性(用户/项目)和硬性(词汇)标记组成的异构部分,提供有关文档要点的上下文信息;

  • 一个由同构的项目/词汇标记组成的正文部分。

​ 因此,我们可以将第一部分视为软+硬提示,只对第二部分进行语言建模。这鼓励了模型只关注协作信息和内容信息,这样就可以大大提高语言建模的有效性和稳定性。

​ 对于协同建模,从用户的历史交互转换而来的文档可以分解为软+硬提示和同质项目标记序列,如下所示:

pk8eFrd.png

​ 然后添加一个物品预测头来引入协作LLM。将最后一层隐藏表示映射到物品概率空间来预测下一个物品令牌

\(\mathbf{x}_{i,k+1}^{r,m}\sim p_{l\hat{lm}_l}^{f_l}\left(\mathbf{x}_{i,k+1}^{r,m}|\mathbf{x}_{i,1:k}^{r,m},\mathbf{x}_i^{r,p}\right),\)

​ 这里说是会使用户的标记嵌入以及对应的互动的物品标记嵌入相互接近,从而能够捕捉到推荐中的用户/项目协作语义。

​ 类似地,对于从用户/项目内容转换的文档,也可以自然地分为软+硬提示和正文

pkGCoAU.png

​ 接下来,通过添加一个vocab预测头来引入内容LLM,与协作LLM类似,将最后一层隐藏表示映射到vocab概率空间。(这里应该是预测vocab seq的下一个token)这里的内容LLM与协作LLM用的预训练的LLM是一致的,只是用来解码用户/项目令牌的令牌嵌入不一样。内容LLM可以表示为:

\(\mathbf{x}_{ij,k+1}^{uv,m}\sim p_{l\hat{lm}_{c}}^{f_{c}}\left(\mathbf{x}_{ij,k+1}^{uv,m}|\mathbf{x}_{ij,1:k}^{uv,m},\mathbf{x}_{ij}^{uv,p}\right),\)

​ 这里解释说使用内容LLM的目的是将vocab sequence的内容信息编码到用户和物品的内容标记嵌入中,可以充分利用LLM的预训练知识。

互正则化

​ 先介绍了一下存在的问题:LLM不以推荐为导向,只优化上面提到的等式会捕获到噪声信息。然后因为稀疏性,所以会存在过拟合的情况。为了解决这些问题就提出了一个互正则化的训练策略。要达到的目的是:协作 LLM 可以引导内容 LLM 从用户/项目内容中捕捉与推荐相关的信息,而内容 LLM 则可以反过来引入辅助信息来支持协作过滤。

​ 实际上是加了一些正则化项,具体实现细节看不太懂,感兴趣可以读原文。

随机项目重排

​ 这里的思路就是因为物品的交互顺序对推荐是不重要的,因为用户的长期兴趣可以被视为固定的。解决方法就是把物品交互重新排列一下。

面向推荐的微调

​ 这里总结一下前面的内容,前面提出的预训练LLM主要是要训练生成用户、物品以及内容的嵌入。但是仅仅这样还不够,还需要用于推荐,于是提出了一个微调的方法。

使用多项式预测头来掩码Prompt

​ 我们首先设计了一个掩码提示策略,为CLLM4Rec微调生成面向推荐的提示和目标。具体是这样的:

​ 对于一个用户,我们随机掩码掉一些物品,我们使用掩码后的物品来生成用于推荐的prompt作为输入,预测留出的物品

pkGiIW4.png

​ 留出项目的生成可以表示为:

\(\mathbf{r}_i^{hold}\sim multi\left(f_{rec}\left(\mathbf{h}_{l,i,-1}^{rec}\right),N_i^{hold}\right),\mathrm{~where~}\mathbf{h}_{l,i}^{rec}=l\hat{l}m_l\left(\mathbf{x}_i^{rec,p}\right),\)

使用CLLM4Rec来进行预测

​ 可以将用户的整个历史交互转化为面向推荐的提示,将其输入fine-tune后的模型。所以物品的预测概率为:

\(\hat{\mathbf{r}}_i=multi\left(f_{rec}\left(\hat{\mathbf{h}}_{i,-1}^{rec}\right)\right),\hat{\mathbf{h}}_i^{rec}=l\hat{lm}_l\left(\hat{\mathbf{x}}_i^{rec,p}\right)\)

总结

​ 看完后总结一下,主要思路就是在预训练阶段,利用评论信息来生成相关的内容,利用交互信息来生成下一个物品。在微调阶段,使用mask的形式来进行微调。以及提到了解决交互顺序的问题

posted @ 2024-06-01 20:50  ANewPro  阅读(206)  评论(0)    收藏  举报