腾讯这篇文章LLM4Rec的方式很直接, 可以用一句话概述, 就是首先使用推荐的行为数据预训练微调语言模型, 再用其编码后得到的物品Embedding去初始化ID Embedding, 以补充语义信息。文章作者做了大量的实验去验证&支撑该方法的有效性和泛化性。
1. 前言
近年来, 随着预训练语言模型(后文简称PLMs)的突破性发展, 很多研究者开始探索它们在序列推荐场景中的应用, 其中, 最常见的应用方式有两种:
-
将PLMs当作物品的文本Encoder, 利用其包含的丰富先验知识来编码物品文本(如标题、品牌等)来得到文本Embedding, 用于替换或增强物品原始的Id Embedding。
-
通过提示或上下文学习的方式, 利用PLMs优秀的序列建模能力来提升序列推荐效果。
但是, 由于语言和行为建模之间的巨大差异,这些方法主要是在冷启动场景中表现较好, 而当物品有足够交互时,这些方法通常效果欠佳, 因为用户行为协同信号对于推荐至关重要。虽然有部分研究已经探索了PLMs在物品表征学习中的作用, 但它们对序列建模的影响仍未得到充分的研究。此外, 也有一些研究工作将用户行为协同信号引入到LLM中, 但同样这里仍遗留着两个问题:
-
PLMs强大的序列建模能力在序列推荐中是否能够被充分且高效地利用
-
是否存在更有效、更通用、更经济的将PLMs应用于序列推荐的方式
2. 分析方法
为了探究基于PLMs的序列推荐模型的具体机制, 不失一般性, 作者选择了代表性模型Recformer作为观察的模型。
2.1 Recformer简介
Recformer是基于PLM的序列推荐模型, 其整体框架如下图所示:
Recformer采用类似于Longformer的双向Transformer结构,但具有不同的Embedding层以适应序列推荐任务, 它对物品和用户历史行为序列文本进行编码,得到其对应的物品表征以进行推荐。
Recformer的训练过程包含3个阶段:
-
预训练阶段(简称stage-PT): 包含Masked Language Modeling (MLM)和Item-Item Contrastive Task (IIC)两个任务。
-
微调阶段1(简称stage-FT1): 在每个epoch开始时使用模型重新编码全部物品更新物品Embedding, 在这一阶段, 序列建模部分和物品嵌入部分同时被优化。
-
微调阶段2(简称stage-FT2):仅更新序列建模部分,保持物品嵌入冻结。
这里两阶段微调的流程可以简单看成是在第1阶段获得物品最优表征Embedding,第2阶段获得最佳序列建模模型, 这个第2阶段是作者关注的重点。
2.2 注意力差异分析
为了探究PLMs在序列推荐任务中的具体运行机制, 作者选择对完成第2阶段微调后的Recformer的注意力进行分析。作者基于Instruments和Pantry数据集, 绘制了Recformer(和它的backbone模型Longformer作为对比)在[CLS] token的注意力分布图(左侧是Longformer, 右侧是Recformer), 如下图所示:
其中, 图中的横坐标为用户序列每个item的token, 出于可视化分析, 只取了最近3个交互物品(item,item,item), 此外, 需要注意的是, Recformer在输入时对用户序列做了反转, 这里图中最左侧的item是用户上一个交互的Item, 从图中可以得到四点发现:
-
存在明显的分层现象: Recformer的注意力分布存在明显的分层现象, 如在特定层级范围内(如03层、47层、8~11层), 注意力分布比较相似。
-
4~7层聚焦于首个token: Recformer的4~7层注意力主要集中在每个物品的第1个token: 这现象说明这些层正在学习建模物品边界的能力。物品的每1个token在浅层主要关注物品内部token, 这与基于物品ID的序列推荐模型中物品Embedding的生成过程类似。
-
8~11层细化注意力分布: 在8-11层,Recformer中的注意力开始细粒度地关注每个物品中的关键token, 同时表现出像SASRec这样基于物品ID的序列推荐模型的模式, 更多关注最近交互的物品(item)
-
存在明显的参数冗余现象: 在Recformer的某些层和注意力头中, 存在几乎相同的注意力分布,表明基于PLM的序列推荐模型中存在明显的参数冗余现象。
这些现象在不同实例和数据集中都广泛存在, Recformer与其骨干Longformer完全不同,但在一定程度上类似于传统的基于物品ID的序列推荐模型, 说明原始的语言模型并不直接具有良好地处理用户行为序列的能力, 需要使用用户行为数据做微调。此外, 这些现象(即功能分层&参数冗余)也意味着当前使用PLMs进行行为序列建模的不足和参数冗余。
2.3 模型冗余性分析
相比于PLMs, 传统的基于物品ID的序列推荐模型通常结构简单, 层数头数较少(例如,SASRec采用2层和1个头), 而Longformer有12层和12个头。为了进一步验证模型参数冗余现象, 作者冻结了Recformer中的大部分参数, 仅训练微调某些特定的层, 结果如下图所示:
可以发现, 仅微调Recformer中特定的几层(如3、7、11层)即可达到甚至超过全量微调的效果,这再次说明基于PLMs的序列推荐模型存在功能分层和参数冗余现象。为此, 作者认为, 很有必要简化基于PLMs的序列建模方式。
3. 实验分析&验证
基于前面的数据分析和观察, 作者考虑保留Recformer编码得到的物品Embedding,并将其序列建模模型替换结构相对简单的基于物品ID的序列推荐模型(如SASRec或BERT4Rec模型)作为Backbone。
3.1 简化序列推荐建模方式
在实验过程中, 作者使用了3种版本的Recformer编码物品Embedding, 分别简写为:
-
LF: 原始的Longformer,即未在行为数据上训练的Recformer
-
PT: 在预训练数据集上训练得到的Recformer
-
FT: 在目标域数据集上微调后得到的Recformer(即stage-FT1之后的)
作者提出了3种简化序列推荐建模的方式:
-
Embedding-init(freeze): 使用冻结的物品Embedding, 仅训练训练序列建模模型部分, 这个过程其实就是简化版的Recformer的stage-FT2
-
embedding-init(trainable): 使用前面编码后得到的物品Embedding作为物品ID Embedding的初始化,在序列建模的过程中这些Embedding可进行正常更新, 这种方式可以验证通过PLM得到的物品Embedding的作用与影响。
-
further-train: 在完成Embedding-init (freeze)的FT版本的训练后, 再训练:
-
All版本: 更新全部参数All
-
Emb版本: 冻结序列建模部分,只训练更新物品Embedding, 即进一步微调物品Embedding
实验结果如下图所示(这里先贴出基于SASRec作为Backbone的效果):
通过观察实验结果,可以得到以下几个结论:
-
基于PLMs的序列建模存在参数冗余现象: PLMs强大的序列建模能力在序列推荐场景没有得到充分发挥, 比如使用FT版本的embeddinginit (freeze)方法在大多数数据集上的表现都比Recformer要好, 这说明简单模型已经足够胜任序列推荐中的行为序列建模任务。
-
基于行为微调的PLMs初始化物品Embedding效果更好: 无论是Embedding-init(freeze)还是embedding-init(trainable), PT和FT版本的模型都显著好于LF的模型。且与随机初始化相比, 基于行为微调的PLMs初始化能显著提升模型性能, 未使用行为微调的PLMs初始化反而可能引入额外的噪声, 使得模型性能下降, 这说明使用行为数据微调的必要性。
-
对基于行为微调的PLMs的物品Embedding进一步微调能提升模型性能: 从整体效果来看, further-train > embedding-init (trainable) > embedding-init (freeze)。这说明行为微调的PLM的物品Embedding初始化需要进一步适应以获得足够的行为信息。此外,作者注意到,通过进一步训练物品Embedding(即固定序列建模部分)在进一步训练中表现最佳, 这表明进一步训练Embedding可能是提高模型性能使其更有效和稳定的一种方式。
-
基于行为微调PLMs的物品Embed作为ID Embed初始化的方法具有可迁移性: 即使是在预训练数据集上微调(PT)的PLMs, 使用物品Embed初始化ID Embed也能为下游新领域带来显著提升。
-
使用具有与行为微调的PLMs类似架构和训练目标的序列推荐模型, 能获得更大提升: 相比而言, 在embedding-init (freeze)情况下, 下图中BERT4Rec作为Backbone的模型在多个数据集上都好于以SASRec作为Backbone的效果。作者把这归因为Recformer和BERT4Rec在序列建模架构和训练损失方面的相似性。同时, 这也进一步支撑了作者的假设,即PLMs可能对于行为序列建模过于复杂,可以用更简单的序列模型替代。
3.2 全量排序设定下验证所示方法泛化性
前面实验是在随机负采样设定下进行的, 为了进一步验证基于行为微调后的PLMs初始化物品Embedding方法的泛化性, 作者在全量排序的设定下也进行了相关的实验, 如下图所示:
从结果中, 可以发现:
-
使用行为微调的PLMs初始化的物品Embedding在全量排序设定下, 仍能大幅提高SASRec的模型性能, 特别是在粗粒度的HR@k指标上, 这表明所提方法在提升模型的泛化能力上有优势。
-
所提方法在所有数据集上都好于Recformer。虽然相对提升没有前面随机采样设定下那么明显, 但考虑到该方法在模型推理效率上的优点(没有额外的时延), 这样的提升也是可接受的。
3.3 进一步验证有效性和鲁棒性
为了进一步探索所提基于行为微调的PLM初始化物品Embed方法对序列推荐的有效性和鲁棒性, 作者对物品初始化做了两种变体:
-
与可训练的物品ID Embed协作: 将行为微调的PLM初始化的物品Embedding作为SASRec额外的文本Embed, 在训练的过程中冻结住, 并与物品ID Embed相加。
-
与Recformer的序列建模模型协作: 将Recformer在stage-FT2中微调的物品Embed设为可训练的, 然后其它保持不变。
实验结果如下图所示:
结果表明:
-
变种1的实验中, 使用行为微调的PLMs初始化的Embed(PT和FT)都显著提升了模型性能, 而原始的PLMs编码的Embed(LF)则没有提升。这进一步说明了, 提升序列推荐性能的是基于行为感知的语义信息, 而非原始的语义信息起到作用。
-
变种2的实验中, trainable的Recformer在所有数据集上模型性能都显著好于原始的Recformer, 这说明即使是基于PLM的序列建模, 行为微调的PLMs初始化Embed也是有益的, 这验证了基于行为微调PLMs实始化物品Embed方法的有效性。此外, 对比基于SASRec的序列建模模型, 其表现还是稍逊, 这进一步说明了预训练语言模型在序列推荐过程的冗余性。
-
基于行为微调的PLMs编码得到的物品Embed的行为信息还是比较匮乏。由于物品文本和行为表征之间的巨大冲突, 用PLM表示物品的更优策略是, 不要强行与文本耦合, 而是使用行为微调的PLMs进行物品Embed的初始化。也就是说, 序列推荐场景中, 物品表征应该更注重行为信息, 这些相关的语义信息可以其重要的补充。
3.4 预训练数据集规模的影响
这里, 作者探索预训练数据集的大小对基于行为微调PLMs初始化物品Embed方法的影响。作者随机采样了比例不等(从0.01%至50%)的数据集分别预训练了PLMs, 实验结果如下图所示:
结果表明, 即使了最小规模(几千用户)的基于行为的预训练, 也可以带来大幅度的提升。这进一步验证了所提方法的效果提升主要归因于行为感知的PLMs, 而不是原始的PLMs。同时, 这也表明, 对于新的序列推荐场景, 少量基于行为的预训练可能足以将语言模型有效迁移到序列推荐任务中, 说明了所提方法的实用性和有效性。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
大模型&AI产品经理如何学习
求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。
1.学习路线图
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方图片前往获取
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓