当推荐遇到大模型
自从大语言模型爆火之后,大家对大语言模型(LLM)如何成功应用在推荐系统进行了不少尝试。本文是对目前一些业界工作的调研和总结。
大模型应用范式
现阶段,经典推荐架构基本遵循以下范式:
目前, LLM 在推荐系统中的主流应用可以分为两种范式:
- 一个是作为经典推荐系统的辅助部分,即 LLM+RS。
- 一个是 LLM 单独作为一个完整的推荐系统,即 LLM AS RS。
本文接下来将分别介绍这两种应用方式。
LLM+RS
传统推荐系统经过多年发展,从召回、排序、重排到最终展示的架构已经比较成熟。LLM+RS 是将 LLM 作为推荐链路的一部分,来影响召回、排序等环节。LLM 影响推荐系统的方式多种多样。主要有以下几种:
- 利用大模型结构强大的学习能力,直接替换现有推荐模型的结构,如利用transformer进行序列建模等
- 利用大模型的表征能力,生成推荐物料(文本或图像)的表征向量 or $tag\ token$,作为现有推荐模型的输入
下面我们从上述方向出发,介绍每一个方向的代表工作。
利用大模型进行模型结构升级
这部分最典型的工作集中在推荐中的序列特征方面。因为序列特征天然和NLP的token输入天然具有相似性。经典的有BST, SASRec。
- BST
BST采用的是Transformer中的Encoder部分的结构进行序列特征的处理。结构如下图:
- SASRec
SASRec借鉴了Transformer中Decoder部分的结构,输入的是用户行为序列,不断预测下一个用户交互的item(类似GPT):
- BERT4Rec
利用大模型进行向量/token表征
独立于现有推荐模型
- NoteLLM
输入NoteLLM的Prompt的格式模板如下:
其中, [BOS], [EMB]和[EOS]为特殊token, 而<Instruction>, <Input Note>, <Output Guidance>和<Output>为占位符, 对于不同的任务会使用不同特定的内容来替换。
- 类别生成任务的笔记压缩提示模板如下:
- 主题标签生成任务的笔记压缩提示模板如下:
一个完整的prompt case:
Extract the note information in json format, compress it into one word for recommendation, and generate the category of the note.
{’title’: ‘How to Train Your Dragon’, ’topic’: ‘Movies’, ‘content’: ‘A young Viking forms a bond with a dragon.’}
The compression word is:"[EMB]".
The category is Fantasy.
学习目标分为两部分:
- 无监督的对比学习
- 有监督的category / topic预测
所以, loss为:
$$L=\frac{L_{cl}+\alpha L_{gen}}{1+\alpha}$$
其中:
$$L_{cl}=-\frac{1}{2B}\sum_{i=1}^{2B}log\frac{e^{sim(\boldsymbol{n}_{i},\boldsymbol{n}_{i}^{+})\cdot e^{\tau}}}{\sum_{j\in[2B]\setminus{i}}e^{sim(\boldsymbol{n}_{i},\boldsymbol{n}_{j})\cdot e^{\tau}}}$$
$$L_{gen}=-\frac{1}{T}\sum_{i=1}^{T}log(p(o_{i}|o_{<i},i))$$
联合现有推荐模型训练:
-
CTRL 两阶段训练:
-
step1: 语言模型(LLM)和推荐模型进行无监督的对比学习
$$ \mathcal{L}_{ccl}=\frac{1}{2}(\mathcal{L}^{textual2tabular}+\mathcal{L}^{tabular2textual}) $$
- step2: 推荐模型单独进行有监督的微调训练
$$ \mathcal{L}_{ctr} = -\frac{1}{N} \sum_{k=1}^{N}(y_{k}log(\hat{y}_{k})+(1-y_{k})log(1-\hat{y}_{k})) $$
- KAR
主要涉及到以下三个步骤:
-
step1: 通过指令模板提问生成关于用户偏好和物品实时应用的逻辑推理知识
-
step2: 通过知识适配器网络(Knowledge Adaptation)将上一步生成的文本进行编码,得到用户和物品的向量表示
-
step3: 将得到用户和物品的向量作为传统精排模型的辅助输入,训练rank模型
LLM 进行离线推理,生成离线知识及表征,拿到表征后,就放到传统推荐模型中,知识适配器和传统模型是一起训练的;推理时,仅使用知识适配器和传统推荐模型,显著降低训练与推理成本,满足时延需求。
LLM AS RS
LLM 作为推荐系统,与 LLM+RS 最大的区别在于,它不再作为一个部分来影响推荐系统,而是以端到端的方式使用一个大模型作为整个系统,LLM 将直接面对用户和商品。
根据替换程度不同,我们也可以分为两种情况:
- 局部替换: 指大模型将代替推荐流程的某一环。比如精排环节, 采用prompt方式,直接让大模型从召回集合中输出排序推荐结果
- 整体替换: 推翻现有的经典推荐架构, 直接使用大模型end2end进行推荐。
局部替换:
比如用大模型代替原来的排序模块对召回的结果进行打分排序。
- [Google] Do LLMs Understand User Preferences? Evaluating LLMs On User Rating Prediction
- [Amazon] PALR: Personalization Aware LLMs for Recommendation
prompt:
整体替换:
彻底颠覆现有的经典架构,用大模型进行end2end的训练和推荐预测。
- [Meta] Actions Speak Louder than Words
[TODO]
补充:
目前,根据训练和推理阶段的不同做法,可以从如下四个角度区分现阶段的研究方向:
- 在训练阶段,大语言模型是否需要微调。这里微调的定义包含了全量微调和参数高效微调。
- 在推理阶段,是否需要引入传统推荐模型(CRM)。其中,如果CRM知识作为一个预先过滤candidate的作用,则不被考虑在内。
Referrence
- Behavior Sequence Transformer for E-commerce Recommendation in Alibaba
- BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer
- BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer
- A Survey on Large Language Models for Recommendation
- How Can Recommender Systems Benefit from Large Language Models: A Survey
- CTRL: Connect Collaborative and Language Model for CTR Prediction
- NoteLLM: A Retrievable Large Language Model for Note Recommendation
- Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations
- WWW'24 | 小红书NoteLLM: 大语言模型用于笔记推荐
- PALR: Personalization Aware LLMs for Recommendation