前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >ControlRec:对齐LLM和推荐系统之间的语义差异

ControlRec:对齐LLM和推荐系统之间的语义差异

作者头像
秋枫学习笔记
发布2023-12-04 20:51:29
发布2023-12-04 20:51:29
6760
举报
文章被收录于专栏:秋枫学习笔记秋枫学习笔记

标题:ControlRec: Bridging the Semantic Gap between Language Model and Personalized Recommendation 地址:https://arxiv.org/pdf/2311.16441.pdf 学校,公司:中国科学院大学,美团

1.导读

LLM应用于推荐领域已经有很多例子了,但是从经典推荐方法向LLM过渡很重要的一个问题是LLM很难有效利用用户和item的ID,主要是因为它们在语义空间中的表征和常规的自然语言不同,因此无法直接使用LLM。为了解决这个问题,本文提出了ControlRec,用于推荐系统的对比提示学习框架。为了促进它们在语义空间中的对齐,本文设计了两个辅助对比目标:

  • (1)异构特征匹配(HFM)基于交互序列将item描述(自然语言)与对应的ID或用户的下一个偏好的ID(ID信息)对齐
  • (2)指令对比学习(ICL)对不同任务的指令进行对比学习,增强LLM对不同指令的鲁棒性

2.方法

和P5一样,ControlRec也是在5个任务上预训练和验证,包括评分预测,序列推荐,解释生成,直接推荐和评论总结。

  • 图1a是总体结构,底下两个分别对ID和文本信息进行编码,然后通过解码器对ID和本文信息的emb进行解码得到不同任务指令对应的生成内容
  • 图1b是HFM异构特征匹配,主要是用于对其ID和文本信息
  • 图1c是ICL指令对比学习,训练模型对不同指令的鲁棒性

2.1 模型结构

如图1(a)所示,ControlRec由ID编码器

\mathcal{E}_{id}

和自然语言(NL)编码器

\mathcal{E}_{nl}

,以及解码器D组成。这两个编码器之间的权重是共享的。ID和NL输入被编码成emb序列

\{h_i^{id}\}_{i=0}^{l_{id}}

\{h_j^{nl}\}_{j=0}^{l_{nl}}

其中

h_0

是的表征。在获得两个输入序列的各自表征后,将它们拼接输入到解码器中。训练目标为基于输入和之前生成的

y_{ < j}

预测后续token的概率分布

y_j

:

\mathcal{L}_{g e n}=-\sum_{j=1}^{|y|} \log P_{\Theta}\left(y_{j} \mid y_{ < j},\left[\mathbf{h}_{j}^{n l}, \mathbf{h}_{j}^{i d}\right]\right)

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之间如果是由交互的则他们在可见矩阵中是可见的,否则不可见,即不会交互。

2.2 异构特征匹配(HFM)

在通过各自的编码器获得NL和ID的表征后,作者提出异构特征匹配方法来将ID表征与语义空间中的NL对齐。在将所学习的表征输入到解码器中用于文本生成之前,HFM可以提高学习到的表征的质量。HFM当ID和NL特征具有相似的语义时,使它们在语义空间中更紧密地结合在一起,而当它们不相似时,将它们进一步分开(类似度量学习)。

问题是如何来考虑两类表征的相似性呢?假设具有相似语义的ID和NL特征应该指代相同的目标item。比如,如果系统中耐克t恤的ID为7718,则可以说说ID“item_7718”与描述“类别:t恤。品牌:耐克”匹配,将它们称为正语义对。基于这一前提,本节提出了两个子任务,称为商品描述(item description)和顺序预测(sequence predication),如图1b所示。

2.2.1 商品描述

商品描述旨在将商品ID与其相应的描述相关联,该描述可以是评论或特征,例如名称、类别、品牌或其他相关属性。以对比的方式对模型进行预训练,首先随机采样K个描述和一个正描述,以构建候选集

S^{id}

。为了处理任务的NL输入,将指令(例如,“描述与所提供的内容匹配吗?”)与商品描述相结合。然后计算ID emb和K+1个NL emb的相似度

s(I, N)=\mathcal{E}_{i d}\left(w_{c l s}\right)^{T} \cdot \mathcal{E}_{n l}\left(w_{c l s}\right)

同样的,对于每个描述,采用相同的过程来生成包含K +1个不同的ID,计算它们之间的相似性得分。对于每对,ID-to-NL和NL-to-ID的相似性得分通过softmax进一步归一化。然后通过交叉熵损失函数来训练。

\begin{gathered} p_{k}^{i2n}=\frac{\exp(s(I,N_{k})/\tau)}{\sum_{\boldsymbol{m}=1}^{K+1}\exp(s(I,N_{\boldsymbol{m}})/\tau)} \\ p_{k}^{\boldsymbol{n}2i}=\frac{\exp(s(I_{k},N)/\tau)}{\sum_{\boldsymbol{m}=1}^{K+1}\exp(s(I_{\boldsymbol{m}},N)/\tau)} \\ \begin{aligned}\mathcal{L}_{HFM1}&=\frac{1}{K+1}\sum_{k=1}^{K+1}-(y_k^{i2n}\log p_k^{i2n}+y_k^{n2i}\log p_k^{n2i})\end{aligned} \end{gathered}

2.2.2 顺序预测

顺序预测利用交互历史来匹配用户的下一个偏好的item的描述,这要求模型具备序列推荐能力和ID与描述匹配的能力。使用交互历史作为ID输入。NL输入类似于上述商品描述任务,但使用特定的指令提示模型执行顺序预测(例如,用户的下一个偏好是否与提供的描述一致?)。采样方式和相似度计算方式和“商品描述”一节中的方式一样(举个例子:对于输入的交互序列,随机采样K个描述和一个正描述,然后计算相似度和softmax构造交叉熵损失)。最后,HFM损失是两种损失的组合,即

L_{HFM}=L_{HFM1}+L_{HFM2}

2.3 指令对比学习

传统的提示学习依赖于单一的、特定任务的自然语言指令来指导模型解决不同的任务。但当训练轮次很少或没有提示时,通常会导致模型崩溃和过拟合。当使用相同的ID输入执行推荐任务时,该模型可能缺乏区分不同任务指令之间的语义差异的能力。因此,即使表达式的微小变化也会导致下游任务性能的显著变化。为了缓解这个问题,本节提出了对生成序列的表征进行指令对比学习(ICL),增强LLM对提示的鲁棒性,而且通过使模型能够区分各种提示,促进了ID和NL输入的有效混合。

ICL以对比的方式对各种提示模式的LLM进行预训练,这需要大量的提示,作者通过chatgpt来生成任务指令,从而进行数据扩充,如图3所示。

  • 为每个任务构造对应的prompt模板,称之为trigger
  • 结合对应的指令(绿色部分)和上下文学习,让chatgpt生成丰富的相似含义的文本
  • 生成的文本就是用于指令对于学习的指令

图2(c)是ICL的整个流程,它包括使用目标指令和M+1个候选指令。这些候选指令包括一个与目标提示属于同一任务的正样本,和M个从不同的任务组中选择的负样本。ControlRec将它们作为输入并生成M+1个序列表征

\{H_i\in \mathbb{R}^{l_i \times d_m}\}_{i=1}^{M+1}

,其中

l_i

是生成的序列的长度。对每个序列中的token emb进行平均池化

u_i=\frac{1}{l_i}\sum_{j=1}^{l_i}{h_{i,j}}

,其中

h_{i,j}

是的生成的序列表征中第j个token。接下里的流程和上面"商品描述"一节中就一样了, 有正样本, 负样本, 再结合相似度函数和交叉熵损失就可以构造损失函数了训练模型了.

\begin{gathered} p_i^{ICL}=\frac{\exp((\mathbf{u}_0^T\cdot\mathbf{u}_i)/\tau)}{\sum_{j=1}^{M+1}\exp((\mathbf{u}_0^T\cdot\mathbf{u}_i)/\tau)} \\ \begin{aligned}\mathcal{L}_{ICL}&=\frac{1}{M+1}\sum_{i=1}^{M+1}-y_i^{ICL}\log p_i^{ICL}\end{aligned} \end{gathered}

总的损失函数如下式, 其中

\lambda_1,\lambda_2=1

。ICL对LLM生成的序列进行操作,它需要LLM的生成能力,这在早期训练阶段可能受到限制,。直接用ICL训练模型可能会导致学习过程的低效和不稳定。因此,

\lambda_3

在训练过程中逐渐增大

\lambda_3=\lambda_3^{\prime}+\frac{1-\lambda_3^{\prime}}T\cdot t

, T是总轮次, t为当前轮次,

\lambda'_3=0

是初始值。

\mathcal{L}=\lambda_1\mathcal{L}_{gen}+\lambda_2\mathcal{L}_{HFM}+\lambda_3\mathcal{L}_{ICL}

3.结果

在5个任务上的结果如下所示

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.导读
  • 2.方法
    • 2.1 模型结构
    • 2.2 异构特征匹配(HFM)
      • 2.2.1 商品描述
      • 2.2.2 顺序预测
    • 2.3 指令对比学习
  • 3.结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档