标题:ControlRec: Bridging the Semantic Gap between Language Model and Personalized Recommendation 地址:https://arxiv.org/pdf/2311.16441.pdf 学校,公司:中国科学院大学,美团
LLM应用于推荐领域已经有很多例子了,但是从经典推荐方法向LLM过渡很重要的一个问题是LLM很难有效利用用户和item的ID,主要是因为它们在语义空间中的表征和常规的自然语言不同,因此无法直接使用LLM。为了解决这个问题,本文提出了ControlRec,用于推荐系统的对比提示学习框架。为了促进它们在语义空间中的对齐,本文设计了两个辅助对比目标:
和P5一样,ControlRec也是在5个任务上预训练和验证,包括评分预测,序列推荐,解释生成,直接推荐和评论总结。
如图1(a)所示,ControlRec由ID编码器
和自然语言(NL)编码器
,以及解码器D组成。这两个编码器之间的权重是共享的。ID和NL输入被编码成emb序列
和
其中
是的表征。在获得两个输入序列的各自表征后,将它们拼接输入到解码器中。训练目标为基于输入和之前生成的
预测后续token的概率分布
:
ID输入是用户ID和商品ID的组合。对于打分预测、解释生成和评论总结,它们指的是任务主要关注的item。而在序列推荐和直接推荐的上下文中,它们分别表示交互历史和候选item的ID序列。在传统的推荐系统中,每个ID都被视为一个独立的标识符,如果涉及大量ID,则需要维护一个庞大的emb表,可以将ID细分为多个子单词。如“item_1471”可以拆分为“item”,“_”,“14”,“17”。通过这种方式,将ID拆分为不同的子单词,从而让LLM可以将其作为文本进行处理。
然而,Transformer缺乏准确建模用户和item之间交互的能力,user-item的交互可以看作是二分图,通常是采用GNN来处理。一般两个item不会直接相互交互,而是通过与同一用户的交互来推断它们的关系。但传统的Transformer结构允许token和同一序列中的任何其他token交互。因此,作者在传统的自注意力机制中引入了一个可见矩阵,这确保了在表征学习过程中只有相关的token对彼此可见,如图2所示。
简单理解就是;两个item之间如果是由交互的则他们在可见矩阵中是可见的,否则不可见,即不会交互。
在通过各自的编码器获得NL和ID的表征后,作者提出异构特征匹配方法来将ID表征与语义空间中的NL对齐。在将所学习的表征输入到解码器中用于文本生成之前,HFM可以提高学习到的表征的质量。HFM当ID和NL特征具有相似的语义时,使它们在语义空间中更紧密地结合在一起,而当它们不相似时,将它们进一步分开(类似度量学习)。
问题是如何来考虑两类表征的相似性呢?假设具有相似语义的ID和NL特征应该指代相同的目标item。比如,如果系统中耐克t恤的ID为7718,则可以说说ID“item_7718”与描述“类别:t恤。品牌:耐克”匹配,将它们称为正语义对。基于这一前提,本节提出了两个子任务,称为商品描述(item description)和顺序预测(sequence predication),如图1b所示。
商品描述旨在将商品ID与其相应的描述相关联,该描述可以是评论或特征,例如名称、类别、品牌或其他相关属性。以对比的方式对模型进行预训练,首先随机采样K个描述和一个正描述,以构建候选集
。为了处理任务的NL输入,将指令(例如,“描述与所提供的内容匹配吗?”)与商品描述相结合。然后计算ID emb和K+1个NL emb的相似度
同样的,对于每个描述,采用相同的过程来生成包含K +1个不同的ID,计算它们之间的相似性得分。对于每对,ID-to-NL和NL-to-ID的相似性得分通过softmax进一步归一化。然后通过交叉熵损失函数来训练。
顺序预测利用交互历史来匹配用户的下一个偏好的item的描述,这要求模型具备序列推荐能力和ID与描述匹配的能力。使用交互历史作为ID输入。NL输入类似于上述商品描述任务,但使用特定的指令提示模型执行顺序预测(例如,用户的下一个偏好是否与提供的描述一致?)。采样方式和相似度计算方式和“商品描述”一节中的方式一样(举个例子:对于输入的交互序列,随机采样K个描述和一个正描述,然后计算相似度和softmax构造交叉熵损失)。最后,HFM损失是两种损失的组合,即
传统的提示学习依赖于单一的、特定任务的自然语言指令来指导模型解决不同的任务。但当训练轮次很少或没有提示时,通常会导致模型崩溃和过拟合。当使用相同的ID输入执行推荐任务时,该模型可能缺乏区分不同任务指令之间的语义差异的能力。因此,即使表达式的微小变化也会导致下游任务性能的显著变化。为了缓解这个问题,本节提出了对生成序列的表征进行指令对比学习(ICL),增强LLM对提示的鲁棒性,而且通过使模型能够区分各种提示,促进了ID和NL输入的有效混合。
ICL以对比的方式对各种提示模式的LLM进行预训练,这需要大量的提示,作者通过chatgpt来生成任务指令,从而进行数据扩充,如图3所示。
图2(c)是ICL的整个流程,它包括使用目标指令和M+1个候选指令。这些候选指令包括一个与目标提示属于同一任务的正样本,和M个从不同的任务组中选择的负样本。ControlRec将它们作为输入并生成M+1个序列表征
,其中
是生成的序列的长度。对每个序列中的token emb进行平均池化
,其中
是的生成的序列表征中第j个token。接下里的流程和上面"商品描述"一节中就一样了, 有正样本, 负样本, 再结合相似度函数和交叉熵损失就可以构造损失函数了训练模型了.
总的损失函数如下式, 其中
。ICL对LLM生成的序列进行操作,它需要LLM的生成能力,这在早期训练阶段可能受到限制,。直接用ICL训练模型可能会导致学习过程的低效和不稳定。因此,
在训练过程中逐渐增大
, T是总轮次, t为当前轮次,
是初始值。
在5个任务上的结果如下所示