问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

大模型在推荐系统中的应用:从特征工程到pipeline控制

创作时间:
作者:
@小白创作中心

大模型在推荐系统中的应用:从特征工程到pipeline控制

引用
百度
1.
https://qianfan.cloud.baidu.com/qianfandev/topic/684555

大模型在推荐系统中的应用是一个前沿且热门的研究方向。本文详细探讨了大模型如何与传统推荐模型互补,特别是在特征工程、CTR预估、排序阶段以及pipeline控制中的具体应用方法。通过多个具体的研究工作和论文,本文为读者提供了深入的技术洞察。

传统的推荐模型网络参数较小(不包括embedding参数),训练和推理的时间、空间开销较小,也能充分利用用户-物品的协同信号。但是它的缺陷是只能利用数据集内的知识,难以应用open domain 的知识,缺乏此类语义信息和深度推理的能力

大语言模型正好跟推荐模型有一定取长补短的能力。它能够引入外部知识,能够有跨域的能力,但是它没有推荐场景下所需要的协同信号,另外它的计算成本(不管是训练还是推理)都非常高

因此,大语言模型和传统推荐模型如何进行取长补短呢,主要有以以下维度:数据采集,特征工程,特征编码,打分/排序,还有整个的流程控制。

1 大模型在特征工程中的应用

1.1 特征增强和扩充

特征工程主要聚焦于三方面:一是用户画像,是对于用户侧的理解;第二是物品画像,是对于物品内容的理解;第三是样本的扩充。已经有不同工作用 LLM 来对它们进行增强。

GENRE

论文:A First Look at LLM-Powered Generative News Recommendation

GENRE 在新闻推荐的场景下,用 LLM 构造了三个不同的prompts,分别来进行新闻摘要的改写,用户画像的构建,还有样本增强。

(1)扩充待推荐内容特征,可以看到它把新闻的title, abstract 还有category 当作输入,然后要求大语言模型来生成一个摘要,把这个摘要当作这个新闻的 new feature输入下游。

(2)用户画像补充,根据用户过去观看过的新闻的标题,尝试去问大语言模型是否知道这个用户的一些感兴趣的topic,进行用户画像的扩充。

(3)样本扩充

,因为有一些用户看过的新闻非常少,所以用大语言模型来做一些样本的扩充。这里是把用户看过的一些新闻的category,还有 title 输入到大语言模型里面去,希望大语言模型能够根据他看过的这些新闻,生成出来一些用户并没有看过,但可能感兴趣的“伪新闻”,然后把这些“伪”交互数据也当作训练集的一部分来进行训练。(类似于冷启用户或者低活跃用户的优化)

KAR

论文:Towards open-world recommendation with knowledge augmentation from large language models

推荐系统在各种在线服务中起着至关重要的作用。然而,在特定领域内单独进行训练和部署具有隔离性,限制了模型对开放世界知识的访问。大语言模型(LLM)有望通过广泛的知识和推理能力来弥补这一缺陷。本研究提出了一个开放世界的知识增强推荐框架与大型语言模型,被称为KAR。包括了三个步骤:知识推理生成、知识适配和知识使用。

  • 第一步:知识推理和生成:从LLM获取两种类型的数据集之外的外部知识:用户偏好的推理知识 和 关于项目的事实知识。受RS中因子分解机的成功启发,本文设计了因子分解prompt,将用户偏好明确地“因子分解”为几个主要因素,以有效地从LLM中提取外部世界知识。在获得了特定的因素,把它们引入到prompt工程。相应地设计了两种类型的prompt:偏好推理prompt和item事实prompt。通过结合这两种提示,使LLM能够同时充当偏好推理器和知识提供者,从而从LLM中提取外部世界知识。

例如,在电影推荐中,给出提示“列出决定用户是否对电影感兴趣的重要因素或特征”,LLM可以提供一些潜在的因素。然后,让人类专家来确认和完善输出,以获得最终的电影推荐的特定因素-包括类型,演员,导演,主题,情绪,制作质量和评论界的赞誉。

  • 第二步:知识适配:LLM生成的知识在利用其潜力来辅助推荐模型方面提出了新的挑战:1)LLM生成的知识通常是文本形式的,通常处理分类特征的传统RS无法直接利用这些知识。2)即使一些LLM是开源的,解码的输出通常是大的密集向量,并且位于与推荐空间显著不同的语义空间中。3)生成的知识可能包含噪声或不可靠的信息。为解决这些挑战,设计了两个模块:知识编码器和混合专家适配器。

  • 知识编码器模块(Knowledge Encoder)将生成的文本知识编码成密集向量,并有效地聚合它们(一般来说是BERT)。

  • 混合专家适配器(Hybrid-expertAdaptor)将密集向量从语义空间转换到推荐空间,它解决了维度不匹配问题,并允许减少噪音。为每种表征设计了共享专家和专用专家。共享的专家捕获共同的方面,例如共享的特征、模式或概念,这些方面与偏好推理和项目事实知识都相关。推理和事实表示也有专门的专家组来捕捉推理或事实知识特有的独特特征。

  • 第三步:知识使用:推理和事实增强向量集成到现有的推荐模型中,使其能够在推荐过程中利用领域知识和开放世界知识,所获得的向量可以直接用于增强任何推荐模型的性能。具体来说,将它们用作推荐模型中的附加特征字段,允许它们显式地与其他特征交互。在训练期间,混合专家适配器模块与骨干模型联合优化,以确保转换过程适应当前数据分布。

KAR只修改骨干模型的输入,与骨干模型的设计和损失函数无关,因此具有灵活性,可以兼容各种骨干模型的设计。此外,它可以扩展到各种推荐任务,如顺序推荐和直接推荐,通过简单地添加两个增广向量的输入。通过引入知识增强向量,KAR以统一的方式将开放世界知识和推荐领域知识结合起来,以提供更明智和个性化的推荐。

1.2 特征编码

用语言模型来做特征编码,丰富语义信息。这里就聚焦在两块,一是如何用语言模型来丰富用户特征的表征,二是如何用语言模型来丰富物品特征的表征。

UBERT

论文:U-BERT: Pre-training User Representations for Improved Recommendation

U-BERT这个工作是用语言模型做用户特征表示,把用户写过的评论信息经过一个类似 Bert 的结构编码出来。这个用户的 encoder 里的另一块输入是用户原始的 ID embedding,加上当前推荐 domain 的 embedding 这两部分,与用户评论信息的编码一起形成用户的个性化表征,然后送到下游的推荐任务里面去。

UniSRec

论文:Towards Universal Sequence Representation Learning for Recommender Systems

UniSRec这个工作使用语言模型做物品特征表示,把物品的 title 描述通过类似 Bert 的结构编码之后,得到物品文本信息的编码。之后经过一个预训练阶段,通过构建两个学习任务,将用户-物品的序列信息加入到物品的文本表征中。

第一个对比任务是把所有的用户,在不同场景下的不同类型的历史行为(如浏览、点击、下载等),全部拼成一个很长的序列,然后在这个序列里面做类似于 next token prediction 的任务;另一个对比任务就是sequence to sequence 的对比任务,从一个 sequence 里面通过mask 或者采样的方式采样出来多个sequences。如果两个 sequence 是从同一个原始sequence 里构造出来的,就是一对正例,否则就是负例。通过这种预训练的方式,把序列信息和文本信息 encode 到一起,到了下游某一个具体场景做推荐的时候,做进一步基于next item prediction的fine tuning。

LEARN

论文:Knowledge Adaptation from Large Language Model to Recommendation for Practical Industrial Application

(a)使用一个pretrained llm作为backbone,在训练期间冻结参数,为了获取item embedding,丢弃了lm_head的线性分类层,使用来自最终encoder层的hidden states来生成item embedding。

(b)由于每一个user都有历史点击item序列,有了(a)的embedding,就可以生成user embedding,由于BERT中使用的是双向注意力,没有关注item之前的先后次序信息,因此这里使用的是Casual Attention,这样将注意力集中在序列中过去的项目上,与用户偏好的时间顺序性质保持一致。

接下来就是LEARN的具体框架了。LEARN框架采用包括用户塔和项目塔的双塔架构。User Tower处理历史交互以生成user embeddings;而Item Tower处理目标交互以生成item embeddings。这里Item Tower设计了三种:Item Tower(a)采用因果注意机制,只关注过去的项目来模拟顺序依赖关系。物品塔(B)利用一种自我注意力机制,专门关注物品本身。Item Tower(c)没有PCH模块,直接使用内容嵌入作为item embeddings。

之所以用大模型这种decoder only去做特征编码而不用传统的BERT这种encoder only去做特征编码呢?结合一些文章和咨询了一些大佬们,总结了一下,主要有以下解释:

  • 首先有这样一种认知,生成标签/分类与embedding的思想其实是一致的,都是将关键信息进行压缩,所以可以把embedding也看作生成任务,因此这就决定了decoder具有embedding的能力
  • 从理论的角度,decoder中有sequence mask,因此attention矩阵是满秩的,因此在做embedding表达上会比encoder好。

此外,小红书的笔记推荐其实也diss过bert:

2 大模型在CTR预估和排序阶段的应用

在Ranking阶段,LLM的最终目标是提供一个排序的项目列表.这样的目标可以通过专门为 LLM设计的各种任务(例如,评分预测、项目 ID 生成)来实现。根据LLM要解决的不同任务,我们将其分为三类:(1)item评分任务,(2)item生成任务,(3)混合任务。

2.1 llm用于CTR预估

论文:Do LLMs Understand User Preferences? Evaluating LLMs On User Rating Prediction

该论文分别在三个不同的场景下直接用语言模型来进行打分,三个场景分别是 Zero shot、Few shot和微调。

Zero shot 场景,构造的prompt包括用户的历史行为包括观看的电影名称,题材和历史打分。给
出某一电影的名字和题材,询问大语言模型,用户会给这部电影打多少分。

Few shot跟 Zero shot 形式略有不同,但大体思想一样,只不过是给出了一些打分的例子,把这些question和answer的pair也注入到prompt中去。

第三个场景就是微调的场景,不仅把用户-电影的交互数据当作prompt的一部分,而且通过实际分数和预测分数的残差去更新模型。这个工作提出了利用多任务的架构,一边做回归任务,一边是做多分类的任务,然后这两个loss合并后更新模型。在实验里面看到微调的方法比 Zero shot和Few shot 效果要好很多。

2.2 llm用于排序阶段

论文:Large Language Models as Data Augmenters for Cold-Start Item Recommendation

为解决冷启动场景下的推荐问题,利用LLM作为数据增强器,以弥补训练过程中冷启item的知识差距。研究使用LLM根据用户历史行为的文本描述和新item描述来推断用户对冷启item的偏好。然后通过辅助的pairwise loss将增强的训练信号纳入学习下游推荐模型。

具体而言:通过询问用户他/她是否喜欢特定的冷启动item(pointwise),或者询问user他/她对冷启动item A 或B的偏好(pairwise)。由于相比之下,对用户的随机冷启动item的逐点推断将最有可能导致负面标签(不感兴趣),而正面标签很少,因此,本研究选择pairwise方法,探测LLM以在给定用户查询的冷启动item之间生成成对偏好。

在这里,损失函数使用的是BPR loss:

这种思想也可以进行扩展,对候选序列进行排序,当然这时候损失函数也需要进行适当修改,使用listwise损失函数,具体可以看推荐系统学习系列1。

2.3 llm用于item生成

这部分也就是目前关注比较多的生成式推荐,接下来进行详细讲解,后续也会继续补充。

PALR

论文:Personalization Aware LLMs for Recommendation

这篇论文主要是提供了一个LLM进行item生成的框架,将item生成进行拆解,便于llm进行推理。

用LLM进行一步到位的推荐效果很有可能是不好的,因此用比较直接的方式来提示大语言模型来分步进行。第一步把用户画像输出来,然后显式地输入到第二步的商品推荐的 prompt 里面去,这样可能会达到更好的效果。这也提供了一个LLM做推荐的思路,有点类似于思维链。做推荐不一定要一步到位,因为推荐的过程还是比较复杂的,可以用人为的经验来设计拆解成多步。

TIGER

论文:Recommender Systems with Generative Retrieval

(a)Semantic ID generation using content features.
这项工作在item embedding上参考了RQ-VAE模型,这个模型由VQ-VAE变形而来,详细可参考文章推荐系统学习系列4,这里不做重复介绍。
语义ID具有以下属性:相似item(具有相似内容特征或语义嵌入接近的项)应该具有重叠的语义ID。例如,具有语义ID(10,21,35)的item应该比具有ID(10,23,32)的item更类似于具有语义ID(10,21,40)的item。

(b)Training a generative recommender system on Semantic IDs.
通过按时间顺序对与它们交互的item进行排序,为每个用户构建item序列。然后,给定形式的序列
鉴于这个框架的生成性,来自解码器的生成的语义ID可能与推荐语料库中的项不匹配(无效ID的比例从0.1%-1.6%不等)。对于这个问题的处理,文章在解码过程中增大了Beam Size, 并对每一个解码步,过滤掉生成的无效id。
具体实现上可以通过Trie实现:在语义id生成之后进行前缀树的构建,在每一个解码步,会将在前缀树以外的其他位置的值置为负无穷,从而使 llm 按照树中的路径进行生成

2.4 llm用于多目标

PLP

论文:Recommendation as Language Processing (RLP): A Unified Pretrain, Personalized Prompt & Predict Paradigm

传统的多目标使用的是诸如MMoE的多任务学习模型。对于大模型,可以用一个统一的大语言模型在不同的任务上进行预训练,针对不同的任务使用不同的推荐模版。


3 大模型在推荐系统pipeline controller中的应用

RecLLM

论文:Is chatgpt fair for recommendation? evaluating fairness in large language model recommendation

谷歌提出了一种使用LLM来集成推荐系统流程各模块(检索、排序、用户画像、用户模拟)的一个对话式推荐系统路线图。

核心组件在 Dialog manager 这里,用一个大语言模型来调用其他的模块,这里面可能有ranker,可能用一个LLM来构造一个 user simulator或其他用户画像的构建,其他的模块可以用大语言模型,也可不用大语言模型。它的工作就是构造了这样一个流程和框架,用大语言模型作为核心调度来解一个比较复杂的对话式推荐任务。

paper推送

最后,大模型在推荐系统的应用相关文章如下:

对应的文章可以在这个链接中进行查找🔗:github.com/CHIANGEL/Aw…

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号