https://zhuanlan.zhihu.com/p/668673674 大家好,我是kaiyuan。
大模型LLM在越来越多的领域开始崭露头角,比如我们在今年上半年曾在某电商平台落地过较为直观简单的LLMx搜索项目(我们称之为LLM应用的第一阶段),同时拿到线上收益,LLM的潜力可见一斑。
如果你也对LLM颠覆搜推广范式充满期待(虽然可能还要不少时间),持续梳理follow大模型在推荐系统中的应用工作,欢迎一起讨论!
未完,持续更新中... 标题奥创纪元来自漫威复联2主题,Ultron是一个human-made具有自我意识的强AI; 1. LLM v.s. Rec 既然是大模型在推荐系统中的应用,那么首先要梳理对比下传统推荐模型和LLM的优缺点,推荐到底在 "馋" LLM的什么?
Pretrain-finetuning Prompt learning
缺乏语义信息、推理能力、可解释性等;可以充分利用协同信号
引入外部世界知识,语义信号丰富;可解释性强;缺少协同信号;冷启动友好
Mismatch between LLM pretrain objective and RS; LLM rely more on semantics, omit collaborative information;
Mismatch between LLM pretrain objective and RS; LLM rely more on semantics, omit collaborative information;
2. LLM in Rec 从应用视角出发,将LLM应用拆解到传统推荐系统的各个模块。参考自上交和华为合作的工作:How Can Recommender Systems Benefit from Large Language Models: A Survey。
一般推荐系统都包括以下几个关键流程:
数据采集 :推荐系统展示结果给用户后,通过在线系统收集用户反馈数据,得到原始数据(raw data); 特征工程 :主要是对原始数据进行处理,例如特征选择、增强、转换等,得到结构化数据; 特征编码 :一般就是常说的 embedding 层,例如 one-hot encoding 等; 打分排序 :对候选进行排序返回一个列表,也是推荐系统中比较关键的部分,各种层出不穷的网络魔改设计都可以在这个部分看到; 推荐流程控制 :LLM作为集成控制器,操控推荐系统的整体流程。也可以细化到对排序阶段的召回、粗排、精排的控制2.1 LLM for feature engineering 用大模型做特征工程:利用LLM的外部通用知识和逻辑推理能力,将原始的输入信息生成额外的辅助信息,可以是对item或user的描述、标签、知识图谱补全等等。
2.1.1 GPT4Rec
GPT4Rec: A Generative Framework for Personalized Recommendation and User Interests Interpretation https://arxiv.org/pdf/2304.03879.pdf Motivation ID-based 推荐系统存在一些问题
不能很好地利用item的文本信息,缺乏NLP模型的语言建模能力; 无法做到很好的解释性,从而提高相关性和多样性; 冷启动问题无法很好地克服; Solution GPT4Rec通过用户的商品交互序列(title文本),通过合适的promt方式,生成虚拟query交给搜索引擎,检索出要推荐的商品。
query generation :利用LLM生成多个相关query(for多样性)。prompt形式Previously, the customer has bought:
<ITEM TITLE 1>. <ITEM TITLE 2>...
In the future, the customer wants to buy
query search :用上述生成的m个query,交给搜索引擎检索出最相关的top-K个商品首先从分数最高的query-1的检索结果中选取K/M个 然后依次按query打分顺序,选择不重复的K/M个 训练策略 :两阶段训练,第一步微调LLM,利用用户前(t-1)个交互商品标题和第t个商品构成prompt训练预料 第二步,grid search优化BM25模型的参数 2.1.2 GNERE
A First Look at LLM-Powered Generative News Recommendation https://arxiv.org/pdf/2305.06566v4.pdf Motivation 传统新闻推荐系统受限于冷启动、用户特征建模、新闻内容理解等问题,无法很好地捕捉用户兴趣。利用LLM强大的能力,通过prompt的方式丰富新闻数据和理解能力。
Solution GENRE(GEnerative News REcommendation),使用已有新闻数据的标题、摘要、分类等信息,构建合适的prompt喂给LLM,生成更丰富的信息特征。
论文中主要使用了三种利用LLM强化RS特征的方式:
新闻内容总结 :通过输入原新闻标题、摘要和分类,构造prompt让chatgpt生成新title,然后在推荐模型训练时替换原始title特征; 用户画像生成 :受限于隐私等问题,推荐系统很难精准获取用户画像;LLM通过理解用户历史行为序列,生成用户感兴趣话题以及用户位置信息等,同样这些用户信息会被用于模型网络建模学习; 新用户个性化内容生成 :冷启动问题是RS领域一大难题,而LLM自带few-shot learning能力,我们可以通过喂给chatgpt少量用户历史阅读list,让其个性化生成用户感兴趣内容;2.1.3 KAR
Towards Open-World Recommendation with Knowledge Augmentation from Large Language Models https://arxiv.org/pdf/2306.10933.pdf Motivation 传统推荐系统通常是domain-specific,无法融入世界/外部知识。有两种外部知识有助于推荐系统:
reasoning knowledge:从用户行为画像推理得到的关于用户偏好的知识; factual knowledge:可以直接获取的关于item的客观知识; Solution KAR(Knowledge Augmented Recommendation),
2.1.4 MINT
【RecSys】Large Language Model Augmented Narrative Driven Recommendations https://arxiv.org/pdf/2306.02250.pdf https://github.com/iesl/narrative-driven-rec-mint/ Motivation Narrative-driven recommendation (NDR) ,叙述驱动推荐系统,指用户通过自然语言的方式描述偏好和需求,推荐系统给出合适的结果。但目前研究大多都是基于用户历史行为数据的推荐,缺乏对NDR场景下长文本的处理能力。
Solution NDR问题定义,给定用户u及其需求表述q,推荐系统f需要从候选集C中推荐出合适结果R。假设候选集和需求是相同领域的。
MINT(Data augMentation with INteraction narraTives),
LLM for query generation:通过输入用户交互item的文本描述,利用InstructGPT(text-davinci-003)设置合适的prompt生成query。 PLM for q-i filter:利用FLAN-T5为上述LLM生成的query和候选打分,选出top-M个最相关的候选,有点像召回; MPNet for final retrieval:利用MPNet(可以认为是BERT的变体)对上述topM个Q-I排序 相当于针对有描述类推荐的场景里(NDR),弥补了传统id-based推荐系统的文本处理能力;有点像推荐搜索化,将用户长本文通过LLM生成搜索query,然后去候选集里检索。
2.1.5 LLMRec
【WSDM'24】LLMRec: Large Language Models with Graph Augmentation for Recommendation https://arxiv.org/pdf/2311.00423.pdf Motivation 百度和港大合作的工作,用LLM解决推荐系统的数据稀疏性问题(论文讨论对象是基于图神经网络的推荐系统)。传统普遍做法是引入知识图谱、社交关系等,但在引入信息的同时也会引入噪声。
Solution 借用LLM的强大世界知识和推理能力,来辅助生成增强信息。包括以下增强方式
数据增强:输入用户的历史行为信息和side info,通过LLM构建prompt的方式输出用户喜欢和不喜欢的商品。(由于LLM受限于「max_token_len」无法打分所有候选,候选集来自baseline模型先打分选出)构成三元组加入到原始数据集进行模型训练。 Side information增强:通过prompt生成user profile和item attribute,接着将生成的user profile和item attribute过LLM得到embedding表征,最后将编码作为推荐系统user/item的feature。 2.2 LLM for feature encoder 使用大模型的通用语义表达能力进行编码,弥补传统推荐系统的信息缺失(例如文本等),进一步丰富user/item侧的语义表征。
2.2.1 ERNIE-RS
【KDD'21】Pre-trained Language Model for Web-scale Retrieval in Baidu Search https://arxiv.org/pdf/2106.03373.pdf 场景是百度搜索召回,建模query-doc之间的相关性匹配。
简单说就是用ERNIE替代了传统双塔中的MLP等编码器,更好地建模q-i表征。双塔顶层交互方式参考了poly-encoder的模型,在训练和预测有一些不同,以适应模型上线需求。
更多详细参考:大规模搜索+预训练,百度是如何落地的?
2.2.2 UniSRec
【KDD'22】Towards Universal Sequence Representation Learning for Recommender Systems https://arxiv.org/pdf/2206.05941.pdf https://github.com/RUCAIBox/UniSRec Motivation 人大和阿里合作的序列表征工作,发表在KDD'22。现有的推荐系统多基于item-id,导致其很难迁移到新场景(需要重训)。作者认为自然语言文本信息可以作为不同领域场景的桥梁,解决上述问题。
如何合理地利用item text,直接引入作为特征不是最优解; 如何利用多域数据来提高目标域任务,缓解"跷跷板现象"; Solution UniSRec,通过预训练方式建模通用item表征和通用序列表征,进而学习跨不同推荐场景的可迁移表征。
通用Item表征 输入是用户交互item的文本描述序列由于不同domain差异巨大,因此将不同domain的行为作为不同的序列 接着将文本序列送入PLM(例如BERT)学习embedding表征参数白化:有研究表明BERT会导致各向异性(On the Sentence Embeddings from Pre-trained Language Models),将本身就存在语义鸿沟的不同domain文本混合会加剧这种现象;通过简单的白化(whitening)可以缓解这种问题 专家网络MoE:融合不同domain的信息,使用多个白化模块作为Expert,然后通过Gate加权求和; 通用序列表征 由于存在域间差异,简单地将不同域序列表征混合起来不会有很好的效果(因为多个域学习到的表征很可能是冲突的,会导致跷跷板现象)。
在传统self-attention网络的基础上,引入两个对比任务:sequence-item and sequence-sequence,缓解多领域序列表征之间的融合。
sequence-item :输入是 <上文物品序列s,下一个真实物品v>,v作为正样本,通过构造in-batch negative选取不是当前域的物品作为负样本\ell_{S-I}=-\sum_{j=1}^B \log \frac{\exp \left(s_j \cdot v_j / \tau\right)}{\sum_{j^{\prime}=1}^B \exp \left(s_j \cdot v_{j^{\prime}} / \tau\right)}
sequence-sequence :对原序列进行增强(随机drop序列中的item 或者 item中的单词),然后将增强的序列作为正样本,batch内其他多个域的序列作为负样本,构造对比学习\ell_{S-S}=-\sum_{j=1}^B \log \frac{\exp \left(s_j \cdot \widetilde{s}_j / \tau\right)}{\sum_{j^{\prime}=1}^B \exp \left(s_j \cdot s_{j^{\prime}} / \tau\right)}
训练时将两种任务以多任务学习方式进行联合优化:
\mathcal{L}_{P T}=\ell_{S-I}+\lambda \cdot \ell_{S-S}
高效微调 :固定模型主要架构参数,在domain transfer时仅微调MoE的参数。
如果遇到某些域数据非常稀疏? 一般是多少个域?训练时数据量会不会爆炸? 2.2.3 MoRec v.s. IDRec
【SIGIR'23】Where to Go Next for Recommender Systems? ID- vs. Modality-based Recommender Models Revisited https://arxiv.org/pdf/2303.13835.pdf 来自西湖大学SIGIR'23的工作,探索基于多模态大模型的推荐系统能否和经典基于ID范式的推荐系统硬刚【探索讨论向】。
Motivation 作者指出很多之前的工作有尝试将NLP/CV预训练模型引入推荐系统,但往往都是关注在冷启动和新物品场景。这对于IDRec而言是不公平的,如果在非冷启场景,MoRec也能打败IDRec,那么推荐系统将有望迎来经典范式的变革。
Solution 实验设置:MoRec和IDRec唯一的不同之处是使用预训练的模态编码器来替代IDRec中的ID embedding向量。同时使用了两种常用的推荐网络模式,DSSM 和 SASRec。
Q1:在常规场景(非冷启动)MoRec能够打败IDRec吗?
A1:与推荐模式有关,SASRec可以,但DSSM不行。意味着MoRec需要一个强大的推荐骨干(SASRec优于DSSM)和训练方法(seq2seq优于 <u,i> pair)才能激发基于模态的项目编码器的优势
Q2:对于推荐场景,NLP、CV的预训练模型产生的表征有足够的通用能力吗?我们应该怎样使用预训练模型生成的表征?
A2:尝试两种方案,two-stage(先用预训练模型提取模态表征,然后作为特征加入推荐模型训练)和end2end(同时训练预训练编码器和推荐模型网络)。结果表明,end2end的方式效果更好,说明nlp、cv预训练得到的表征还没有做到真正的通用性和泛化性。
其他:
为什么对比ID和多模态?不能全用吗?【只要包含ID就不能很好地迁移,无法真正实现one4all model】 TwoStage的方式效果低于IDRec,END2END的方式效果好,但很耗资源?【有一些加速优化的研究,例如GRAM: Fast Fine-tuning of Pre-trained Language Models for Content-based Collaborative Filtering】 END2END的方式联合训练,编码器也一样fix住了当前场景?无法zero-shot迁移【??】
2.2.4 TCF
Exploring the Upper Limits of Text-Based Collaborative Filtering Using Large Language Models: Discoveries and Insights https://arxiv.org/pdf/2305.11700.pdf 上一个工作的延续性工作,将BERT/ResNet等PLM网络替换为更大的LLM网络(如GPT-3)。 几个结论:
使用的LLM encoder参数越大,效果越好; 和上文一样,即使175B参数的LLM也无法生成很好的通用物品表征(还是需要微调); 上个工作Morec必须要end-to-end才能达到ID水平,但是TCF(千亿LLM)只需要冻住的表征就可以跟ID comparable,是很大的进步; LLM具有一定的迁移能力,但远远不够成为通用的推荐模型,比NLP/CV更具挑战性; 2.3 LLM for scoring function 把大模型作为打分工具,得到最终排序好的候选list。通常是通过在LLM训练中引入相关的任务来实现,可以分为三种研究方向:
候选打分:一种方式是user/item特征过LLM后再过一层网络得到最终score;另一种是直接将LLM训练为输出最终score的模型; 候选生成:直接生成排序好的列表(非常考验LLM的推理能力); 混合任务:LLM are multi-task learners,使用者通过prompt执行对应任务。 2.3.1 候选打分任务 RecFormer
【KDD'23】Text Is All You Need: Learning Language Representations for Sequential Recommendation https://arxiv.org/pdf/2305.13731v1.pdf 亚马逊在KDD'23的工作,针对序列推荐场景的冷启动和场景迁移问题,提出了用自然语言的方式对用户行为和商品进行建模。具体地
将商品的属性key-value自然语言flatten后作为句子(替代原来的商品ID),用相同的方法可以将用户商品ID序列转为商品句子序列。 建模框架:Recformer。输入层:构造用户序列时按时间由近到远排列,避免最近交互的行为被截断。 X=\left\{[C L S], T_n, T_{n-1}, \ldots, T_1\right\}
Embedding层:有4种emb形式,目的是从自然语言和推荐模型两个角度充分表征输入Token Embedding:NLP中的单词embedding表征; Token Position Embedding:对输入单词的位置进行编码; Token Type Embedding:用于区分当前单词属于哪个类别,有 [CLS]、key 和value三类; Item Position Embedding:由于每一个商品被拆分成单词,我们需要知道哪一部分属于同一个商品; Encoder:Longformer。 预训练:需要同时考虑NLP和推荐,因此设置两个对应的预训练任务 \mathcal{L}_{\mathrm{MLM}}=-\sum_{i=0}^{|\mathcal{V}|} y_i \log \left(p_i\right)
item对比学习:真实下一个交互item为正样本,batch内随机采样为负样本,构造对比学习。 \mathcal{L}_{\text {IIC }}=-\log \frac{e^{\operatorname{sim}\left(\mathbf{h}_s, \mathbf{h}_i^{+}\right) / \tau}}{\sum_{i \in \mathcal{B}} e^{\operatorname{sim}\left(\mathbf{h}_s, \mathbf{h}_i\right) / \tau}}
两阶段微调:由于不同于ID-based方法,recformer不再有一个item embedding表,于是微调的关键是获得item feature matrix I。Stage 1:更新I,也更新模型参数M。 Stage 2:不更新I,只更新模型参数M。 模型更新loss function为item 对比学习,和预训练阶段不同的是,这里使用除正样本外的所有item。
这里item matrix是 Ixd 维的,如果不用id作为index的话,是怎么访问获得对应item emb的? 为什么微调需要设置成两步?【每次epoch训练时re-encode item的话,会很耗时且浪费资源,不如一步到位训练一个完整的item emb matrix】 Prompt4N PBNR LMRecSys Zero-shot GPT TALLRec 2.3.2 候选生成任务 P5-ID GPTRec PALR VIP5 Large Language Models are Zero-Shot Rankers for Recommender Systems 2.3.3 混合任务 P5 M6-Rec Uncovering ChatGPT's Capabilities in Recommender Systems 2.4 LLM for pipeline controller 随着LLM参数的越来越大,涌现出小模型所不具有的很多能力(in-context learning 、logical reasoning等),于是可以通过大模型进行推荐系统的整体流程控制。
2.4.1 Chat-REC 2.4.2 RecLLM 3. FT OR NOT FT 从大模型训练和推理两个阶段出发,将现有工作分为四个象限
训练阶段是否需要微调? 推理阶段是否使用传统推荐模型? 4. 展望 新推荐范式:Generative Recommendation: Towards Next-generation Recommender Paradigm 避免大模型偏见:Can ChatGPT Make Fair Recommendation? A Fairness Evaluation Benchmark for Recommendation with Large Language Model 推荐阅读
A Survey on Large Language Models for Recommendation How Can Recommender Systems Benefit from Large Language Models: A Survey