论文标题:“Adapting Large Language Models by Integrating Collaborative Semantics for Rec”
论文地址https://ieeexplore.ieee.org/abstract/document/10597986论文于2024年发表于顶会ICDE
友情提示:看这篇文章之前建议先把 TIGER 这篇文章看了,要不然很多步骤都看不太懂,具体论文解读移步下面这条链接~
(边学边写系列)生成式检索推荐模型:TIGER--Google-CSDN博客
①文章概述
文章要解决的核心问题:
语义鸿沟:LLM擅长“语言语义”,而推荐系统依赖用户与物品交互所蕴含的“协同语义”。实际推荐物品时常用离散的 item ID 表示,其既不在 LLM 词表中,又难与语言空间对齐,限制了 LLM 在推荐系统中的能力。
提出的主要方法:
针对item ID:用 LLM 读取物品的文本内容,得到一个连续的语义向量,通过向量量化把连续向量编码成一串“码字”(看到这是不是很眼熟,其实就是 TIGER 的方法)。但为了防止冲突,论文提出了均匀语义映射的方法。
针对对齐微调:论文设计了一系列专项调优任务,来增强语言语义与协作语义的融合度。
②模型框架
图片左下角主要讲了如何生成语义id
图片右下角主要讲了如何对 LLM 进行调优
③模型的主要创新
(1)生成语义 id (semantic id)
这部分整体流程与我发的 TIGER 论文解读部分相同,感兴趣可以看一下我的上篇文章。大致流程:首先使用 LLM 对项目文本进行编码,然后将嵌入通过 RQ-VAE 进行量化生成语义 id。
在这里,论文引入创新点:
通过统一语义映射来缓解冲突
语义冲突(碰撞):当不同物品被分配相同的语义 id ,这时就出现了冲突。
在 TIGER 中我们知道是通过末尾加一位额外标记来防止语义碰撞,但这样的坏处是:直接“加一层补编号”会在最后一层制造与语义无关的分裂,并干扰原有表示。
论文借助最优传输思想,提出用现有的最后一层做“均匀且不破坏语义”的重分配公式:
其中,B代表一个批次,代表第H层(原有的最后一层)的残差向量,
代表最后一层的码本向量,k代表码本中所有的向量编号,
代表选到的码本编号
这里的 就很清晰了,代表最终选择编号k的概率;
代表残差向量与码本向量的语义距离,我也做了一个图帮大家理解一下:
再写一遍重分配的公式:
文章还为上式加入约束条件: 行约束:每个物品的分配概率和为 1
列约束:均匀分配,每个码字分配额相同
因此上述公式就等价于:在代价矩阵 下,寻找满足行列边际的最小代价分配。
(2)调整LLM中语言和协作语义
处理完 item id 后仍然不能直接交给 LLM 去学习,因为这些 id 本质上是不在预训练 LLM 的词表中的 tokens,直接输入大模型很难稳定地 “理解/生成” 它们。因此作者设计了一系列语义对齐任务来分配语言和协作语义来调整 LLM。
a.序列项目预测
根据用户当前的历史交互构建个性化的推荐指令。然后,LLM 会根据指令和交互历史记录提示,以预测目标用户可能与之交互的下一个项目。(当然,这只是序列推荐的基础,要让大模型理解语义 id 还需要下面两部分)
b.语言对齐--显式索引
显式对齐使用两条互逆映射,直接把文本语义↔索引语义绑在一起:
item→index:给出物品的标题/描述(或二者组合),要求 LLM 生成该物品的索引 token 序列
index→item:给出索引 token 序列,要求 LLM 生成相应的标题与简述
把上述两类样本写成指令式数据加入微调集,让 LLM 以标准的下一词预测生成目标序列(要么生成索引 token,要么生成自然语言),这样既训练了索引 token 的词向量,也把它们和自然语言的语义空间显式拉近。
这种相互预测方法本质上类似于跨模态语义对齐的方法。可以类比图像和文本之间的相互映射,或语音和文本之间的转换。通过使用这些对齐指令对 LLM 进行指令微调,项目索引可以无缝集成到 LLM 跨越的语义空间中。
c.隐式推荐导向对齐
在这一部分中,进一步考虑通过面向推荐的对齐任务来增强模型能力,以便LLM能够更好地利用语言和协作语义,以更准确的方式完成各种推荐任务。
任务一:不对称物品预测
在a中提到的序列预测历史交互和目标都由item id表示,这称之为对称预测任务,论文设计了三种非对称预测任务:
第一种:左侧这个框,历史仍为索引序列,目标改成物品标题,要求模型直接生成标题
第二种:右上角这个框,历史为索引序列,目标改成物品特征,让模型生成用户期望的属性/功能
第三种:右下角这个框,历史改写成标题序列,目标为下一物品索引,要求模型从语言历史中推断并生成索引
任务二:基于用户意图的物品预测
现实生活中的推荐系统应该具备理解用户实际意图并据此提供高质量推荐的能力,用户评论提供了其真实使用动机与偏好,因此考虑使用大模型从目标项目的相关评论中提取意图。论文设计了两种基于用户意图预测的任务:
第一种:左侧框,根据用户即时意图直接查询商品推荐,让模型返回一个物品索引
第二种:右侧框,在意图文本之外,再给出用户历史交互序列,让模型输出个性化的物品索引
任务三:个性化偏好推断
用户的交互历史可以隐式反映用户的个人偏好,但数据集中通常不存在显式偏好,因此需要使用大模型从用户历史交互项目中推断出用户的明确偏好:
根据用户历史交互总结出该用户的稳定偏好,后续可以再把这段“偏好文本”作为条件去预测下一件物品的索引,从而把“协同语义(索引)↔ 语言语义(偏好文字)”打通
(3)模型的训练与推理
a.训练
作者以 LLaMA 作为骨干模型,并采用指令微调,前文提出的所有任务都被整理成条件式的序列到序列生成形式,目标是最小化生成目标的负对数似然:
其中每条样本是一对 “指令 I、目标响应 Y”, 是Y的第j个token,
是
之前的token。
作者为每个任务设计了多种指令模板以提升指令多样性;但在每个训练 epoch里,每条数据只随机配一个模板
b.推理
在索引 token 空间进行 beam search,依托(1)中提到的方法进行逐级解码。
推理主要耗时在多层自注意力:标准 Transformer 的一次前向复杂度为 O(N²dL),而自回归生成完整的 H 级索引总体耗时为 O(HN²dL)。在实际中通过使用 KV Cache(缓存每层的 K/V 张量)能将复杂度优化到 O(N²dL + HNdL)
其中 L 是模型层数,N 是序列长度,d 是隐藏状态的维度
④实验
(1)实验设置
数据集:使用了亚马逊产品评论数据集中的三个类别:“Musical Instruments”,“Arts, Crafts and Sewing”,“Video Games”
评估指标:使用了k=1、5、10的 HR@K 和 NDCG@K
baseline模型:Caser、HGN、GRU4Rec、SASRec、BERT4Rec、FDSA、S3-Rec、P5-CID、FMLP-Rec、TIGER
(2)模型实现
语义嵌入模型:利用 LLaMA 将项目的标题和描述编码为其嵌入,并使用均值池来聚合多个标记表示
LLM微调:通过Transformers实现了基于LLaMA的LC-Rec,并通过DeepSpeed加速训练
(3)实验结果
对不同语义对齐方法的消融实验:分别对应(2)a、(2)b、(2)c1、(2)c2、(2)c3