探索将大语言模型用作推荐系统

news2025/1/21 15:29:32

编者按:目前大语言模型主要问答、对话等场景,进行被动回答。是否可以将大模型应用于推荐系统,进行主动推送呢?

这篇文章回顾了可以将大模型作为推荐系统的理论基础,并重点描述了基于英文和阿拉伯语的购物数据集微调T5-large模型,探索将LLMs用作推荐系统的实践。同时本文还介绍了LLMs作为推荐系统的优点和缺点,并提出建议和可行的方向。

以下是译文,Enjoy!

作者 | Mohamad Aboufoul

编译 | 岳扬

最近几个月,大型语言模型(LLMs)已经成为数据科学社区和新闻界的热门话题。自2017年Transformer架构问世以来,我们看到这些语言模型处理的自然语言任务复杂程度呈指数级增长。这些任务包括分类、意图和情感抽取,甚至它们被要求生成与人类自然语言相似的文本内容

从应用角度来看,将LLMs与现有技术相结合,如果能够避免它们的缺陷(我最喜欢的组合是GPT + Wolfram Alpha[1],可用于处理数学和符号推理问题),那么其发展潜力似乎是无限的。

令我惊讶的是,LLMs即使在没有进行额外的特征工程或手动流程的情况下,也能作为独立的推荐系统使用。这种能力很可能是由于LLMs的预训练方式和操作方式。

内容提纲:

  1. 回顾LLMs以及Transformers的工作原理
  2. LLMs作为推荐系统
  3. 使用自定义数据实现/复制 P5
  4. 尝试用非英语的数据进行模型复制
  5. LLMs作为推荐系统的优点和缺点
  6. Final Thoughts 最后的思考
  7. Code 源代码

01 回顾LLMs以及Transformers的工作原理

语言模型本质上是概率模型,通过映射一系列tokens(如短语、句子中的单词)的概率来完成任务。它们在大量文本上进行训练,并相应地得出概率分布。对于可以处理的各种任务(如摘要、问答),它们使用条件概率反复迭代来选择最有可能的token/单词来完成任务。请参见以下示例:根据上下文的后续令牌概率示例(作者提供的图像)

图片

根据上下文的后续tokens概率示例图(作者提供的图像)

LLM是一种语言模型,它使用大量的计算资源和大型计算架构训练海量文本。LLMs通常采用Transformer结构,该结构由Google在其2017年的著名论文“Attention Is All You Need[2]”中公布。Transformer利用“自注意力”[3]机制,在预训练过程中允许模型学习不同token之间的关系。

在对足够大的文本集进行预训练后,相似的单词会有相似的嵌入(例如:“King”、“Monarch”),而不相似的单词将拥有更不同的嵌入(embeddings) 。此外,通过这些嵌入,我们可以看到单词之间的代数映射,使模型能够更好地确定序列的下一个正确的token。

这类似于Word2Vec中的“King - Man + Woman = Queen”[4]的经典示例。

自注意力嵌入(self-attention embeddings) 的另一个好处是,它们将因其周围的单词而异,从而使它们更符合语境中的含义。

斯坦福大学的Christopher Manning博士对LLM的工作原理进行了不错的概述。

02 LLMs作为推荐系统

2022年,来自罗格斯大学(Rutgers University)的研究人员发表了题为“Recommendation as Language Processing (RLP): A Unified Pretrain, Personalized Prompt & Predict Paradigm (P5) ”(作者:Geng等人)的论文。他们在文中介绍了一种“灵活而统一的text-to-text范式”,将多个推荐任务合并到了单个系统(P5)中。该系统可以通过自然语言序列(natural language sequences)执行以下操作:

● 序列推荐(Sequential recommendation)

● 评分预测(Rating prediction)

● 生成解释(Explanation generation)

● 评论摘要(Review summarization)

● 直接推荐(Direct recommendation)

让我们来看一下论文中的序列推荐任务的一个例子。

Input: "I find the purchase history list of user_15466:

4110 -> 4467 -> 4468 -> 4472

I wonder what is the next item to recommend to the user. Can you help

me decide?"

Output: “1581”

研究人员为用户和每个物品分配了唯一的ID。使用包含数千个用户(及其购买历史记录)和独特物品的训练集,LLM能够学习到某些物品彼此是相似的,某些用户对某些物品有偏好(由于自注意力机制的特性)。在这些购买序列(purchase sequences)的预训练过程中,模型实质上经历了一种协同过滤(collaborative filtering)[5]的形式。模型可以看到哪些用户购买了相同的物品,以及哪些物品往往会一起购买。再加上LLM生成上下文嵌入(contextual embeddings)的能力,就可以得到一个非常强大的推荐系统。

在上面的例子中,虽然我们不知道每个ID对应哪个物品,但我们可以推断出物品“1581”是由其他用户与“user_15466”已经购买的任何物品一起购买的。

关于P5的体系结构,可以阅读“utilizes the pretrained T5 checkpoints as backbone”(作者:Geng等人)。

T5是谷歌几年前发布的另一个LLM[6]。它被设计用来处理多种类型的sequence-to-sequence任务,因此将其用作这种系统的起点是有道理的。

03 使用自定义数据实现/复制 P5

我对这篇论文印象深刻,想要了解是否可以在更小的数据规模下复制其序列推荐功能。因此我打算使用开源的T5模型(T5-large)[7]进行微调,来生成适合推荐的内容。为此我准备了一个自定义的数据集,包括了100多个体育器材的购买案例和下一个购买的物品。举个例子:

Input: “Soccer Goal Post, Soccer Ball, Soccer Cleats, Goalie Gloves”

Target Output: “Soccer Jersey”

当然,为了让该模型具有更强的鲁棒性(robust),我决定使用更加明确的prompt。以下是我使用的具体prompt:

Input: “ITEMS PURCHASED: {Soccer Goal Post, Soccer Ball, Soccer Cleats, Goalie Gloves} — CANDIDATES FOR RECOMMENDATION: {Soccer Jersey, Basketball Jersey, Football Jersey, Baseball Jersey, Tennis Shirt, Hockey Jersey, Basketball, Football, Baseball, Tennis Ball, Hockey Puck, Basketball Shoes, Football Cleats, Baseball Cleats, Tennis Shoes, Hockey Helmet, Basketball Arm Sleeve, Football Shoulder Pads, Baseball Cap, Tennis Racket, Hockey Skates, Basketball Hoop, Football Helmet, Baseball Bat, Hockey Stick, Soccer Cones, Basketball Shorts, Baseball Glove, Hockey Pads, Soccer Shin Guards, Soccer Shorts} — RECOMMENDATION: ”

Target Output: “Soccer Jersey”

可以在上方看到用户目前已购买的物品清单,接下来是尚未购买的(即整个库存中)候选推荐物品列表。

在使用Hugging Face的Trainer API[8](Seq2SeqTrainer)对T5模型进行微调(10轮左右)之后,我获得了一些特别出色的成果!以下是一些示例评估:

Input: “ITEMS PURCHASED: {Soccer Jersey, Soccer Goal Post, Soccer Cleats, Goalie Gloves} — CANDIDATES FOR RECOMMENDATION: {Basketball Jersey, Football Jersey, Baseball Jersey, Tennis Shirt, Hockey Jersey, Soccer Ball, Basketball, Football, Baseball, Tennis Ball, Hockey Puck, Basketball Shoes, Football Cleats, Baseball Cleats, Tennis Shoes, Hockey Helmet, Basketball Arm Sleeve, Football Shoulder Pads, Baseball Cap, Tennis Racket, Hockey Skates, Basketball Hoop, Football Helmet, Baseball Bat, Hockey Stick, Soccer Cones, Basketball Shorts, Baseball Glove, Hockey Pads, Soccer Shin Guards, Soccer Shorts} — RECOMMENDATION: ”

Model Output: “Soccer Ball”

Input: “ITEMS PURCHASED: {Basketball Jersey, Basketball, Basketball Arm Sleeve} — CANDIDATES FOR RECOMMENDATION: {Soccer Jersey, Football Jersey, Baseball Jersey, Tennis Shirt, Hockey Jersey, Soccer Ball, Football, Baseball, Tennis Ball, Hockey Puck, Soccer Cleats, Basketball Shoes, Football Cleats, Baseball Cleats, Tennis Shoes, Hockey Helmet, Goalie Gloves, Football Shoulder Pads, Baseball Cap, Tennis Racket, Hockey Skates, Soccer Goal Post, Basketball Hoop, Football Helmet, Baseball Bat, Hockey Stick, Soccer Cones, Basketball Shorts, Baseball Glove, Hockey Pads, Soccer Shin Guards, Soccer Shorts} — RECOMMENDATION: ”

Model Output: “Basketball Shoes”

由于推荐结果并非二元的成功或失败,我们其实只能根据主观感觉来做出评判,但是推荐结果与用户已经购买的物品非常相似,这一现象仍然令人印象深刻。

04 尝试用非英语的数据进行模型复制

接着,我尝试对阿拉伯语数据进行同样的操作。我将数据集进行了翻译,并寻找适合处理阿拉伯文本的开源T5模型(如AraT5[9]、MT5[10]等)。然而,经过尝试了Hugging Face Hub[11]上十几个相关变体模型后,我发现没有得到符合要求的结果。即使使用微调的模型,在无论某商品过去是否购买过的基础上,也仅推荐相同的1或2件物品,通常是“كرة القدم”(足球)(也许该模型知道阿拉伯语言人士喜欢足球,并一直在搜索足球相关物品)。即使尝试使用更大规模的T5模型,如MT5-xl,仍然得到相同的结果。这可能是因为这些语言模型对英语以外的数据支持不足。

为了尝试进行改进,我决定使用Google翻译API以及我已经微调的英文T5模型进行操作。具体步骤如下:

● 将阿拉伯输入文本翻译为英文。

● 将翻译后的英文文本输入到已经微调的英文模型中。

● 获取模型在英文上的预测结果。

● 将预测结果翻译回阿拉伯语。

然而,这一过程并没有带来太大帮助,因为翻译工具也会犯一些错误(比如说,“كرة القدم”,谷歌翻译将其翻译成“足球”,但它实际上的意思是“橄榄球”),这导致了模型出现了误差,最终结果是始终推荐相同的1-2件物品。

05 LLMs作为推荐系统的优缺点

这种技术最主要的优点在于其能够作为一个独立的系统(stand-alone system.)来实现,便利性很高。 由于LLMs和预训练技术拥有的特性,我们可以避免大量手动的特征工程(manual feature engineering)要求。因为该模型应该能够自然地学习表征(representations)和关系(relationships)。此外,我们也可以在一定程度上避免新推出的物品面临的“冷启动”问题。我们可以通过提取出新物品的名称/描述,并将其自然地与用户已经购买/选择的现有物品相关联。

然而,这种方法也存在一些缺点(不要把你现有的推荐系统丢弃!)。主要表现为对推荐内容缺乏控制

● 由于用户浏览商品和购买商品的不同行为/事件(actions/events)没有进行加权,我们完全依赖于LLM去预测最有可能的下一个token或token组,来进行推荐。这种方法无法考虑用户的收藏、浏览历史、购物车等行为。

● 此外,因为这些LLM大部分推荐都是基于相似度,即与迄今购买过的商品语义相似的商品,存在一定风险。然而,我认为通过大量的用户购买历史数据,可以采用此方法所模拟的“协同过滤”方法来改善这个问题。

● 最后,由于LLM在理论上可以生成任何文本,推荐的内容可能并不完全匹配商品库存中的项目。不过,我认为这种情况发生的可能性较低。

06 Final Thoughts 最后的思考

基于P5论文的结果以及我尝试在T5模型上通过微调和Prompt来进行复制的经理,我推断这种技术可以用于许多语言模型。如果微调模型的数据足够大,Prompt技术得到完善,使用更强大的sequence-to-sequence模型可以显著增强效果。

然而,我不会建议单独使用这种方法。我建议将其与其他推荐系统技术结合起来使用,这样就可以避免上面提到的缺点并同时获得更好的效果。 如何做到这一点我不确定,但我认为只要有创造力,将LLM技术与其他推荐系统技术相结合可能会很有帮助(例如,可以提取基于嵌入的特征(embedding-based features)用于协同过滤(collaborative filtering) ,或与 “Two Tower”架构结合使用等等)。

07 Code

  1. 我实现的 T5 推荐系统(在 Github 仓库中)[12]

  2. 我在 Hugging Face 平台微调过的 T5 模型(Hugging Face Hub)[13]

END

参考资料

1.https://writings.stephenwolfram.com/2023/03/chatgpt-gets-its-wolfram-superpowers/

2.https://arxiv.org/pdf/1706.03762.pdf

3.https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html

4.https://kawine.github.io/blog/nlp/2019/06/21/word-analogies.html

5.https://developers.google.com/machine-learning/recommendation/collaborative/basics

6.https://ai.googleblog.com/2020/02/exploring-transfer-learning-with-t5.html

7.https://huggingface.co/t5-large

8.https://huggingface.co/docs/transformers/main_classes/trainer

9.https://huggingface.co/UBC-NLP/AraT5-base

10.https://huggingface.co/google/mt5-large

11.https://huggingface.co/models

12.https://github.com/Mohammadhia/t5_p5_recommendation_system

13.https://huggingface.co/mohammadhia/t5_recommendation_sports_equipment_english

14.S. Geng, S. Liu, Z. Fu, Y. Ge, Y. Zhang, Recommendation as Language Processing (RLP): A Unified Pretrain, Personalized Prompt & Predict Paradigm (P5) (2023), 16th ACM Conference on Recommender Systems

本文经原作者授权,由Baihai IDP编译。如需转载译文,请联系获取授权。

原文链接

https://towardsdatascience.com/using-large-language-models-as-recommendation-systems-49e8aeeff29b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

菜鸟健身-新手使用哑铃锻炼手臂的动作与注意事项

目录 一、前言 二、哑铃锻炼手臂的好处 三、哑铃锻炼手臂的注意事项 四、哑铃锻炼手臂的基本动作 1. 哑铃弯举 2. 哑铃推举 3. 哑铃飞鸟 五、哑铃锻炼手臂的进阶动作 1. 哑铃侧平举 2. 哑铃俯身划船 六、哑铃锻炼手臂的训练计划 七、总结 一、前言 哑铃是一种非常…

2023年5月天津/南京/成都/深圳CDGA/CDGP数据治理认证报名

6月18日DAMA-CDGA/CDGP数据治理认证考试开放报名中! 考试开放地区:北京、上海、广州、深圳、长沙、呼和浩特、杭州、南京、济南、成都、西安。其他地区凑人数中… DAMA-CDGA/CDGP数据治理认证班进行中,报名从速! DAMA认证为数据管…

MySQL 日志管理与恢复

MySQL日志管理 MySQL的默认日志保存位置为/usr/local/mysql/data 日志开启方式有两种:通过配置文件或者是通过命令 通过命令修改开启的日志是临时的,关闭或重启服务后就会关闭 MySQL日志管理 日志的分类 1.错误日志 用来记录当MySQL启动、停止或运行时…

畅购商城4.0

畅购商城4.0 1.走进电商 1.1电商行业分析 近年来,世界经济正向数字化转型,大力发展数字经济成为全球共识。党的十九大报告明确提出要建设“数字中国”“网络强国”,我国数字经济发展进入新阶段,市场规模位居全球第二,数…

DC-DC直流隔离升压电源模块高压稳压可调输出12v24v48v转60V80V110V150V200V220V250V300V400V500V

特点 效率高达 80%以上1*2英寸标准封装单电压输出价格低稳压输出工作温度: -40℃~85℃阻燃封装,满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRB W2~40W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、及18~36V、…

我们拆了一款将ChatGPT“落地”的AI语音交互机器人,八核A7全志R58主控

视频版本拆机:【60块钱,垃圾佬的第一台机器人,国产8核CPU全志R58】 https://www.bilibili.com/video/BV1Qk4y177ja/?share_sourcecopy_web&vd_source6ec797f0de1d275e996fb7de54dea06b 公子小白是一对由狗尾草智能科技推出的人工智能机…

Pytorch代码——持续更新

1 连续两个argsort 返回张量中每个元素对应的排名 torch.argsort(torch.argsort(pred, dim1, descendingTrue),dim1,descendingFalse) 例子 使用一个argsort后得到的是张量中按列降序排序后的索引, 再使用一个argsort后是张量中每一个元素的排名。 例如第2行中…

港联证券|股票分批技巧是什么?分批买进的手续费如何计算?

股票分批是股市中常用操作,根基股票的波动不同,将资金分批投资在不同股价还在时间上。那么股票分批技巧是什么?分批买进的手续费如何计算?下面就由港联证券为大家分析: 股票分批技巧是什么? 1、补仓股票选…

国药集团蒸汽表内网图像识别案例

一、项目需求 项目背景:国药集团MES系统硬件仪表数据采集项目 为了实现现场蒸汽表计数据的采集和存储,我们提供了本地内网图像离线识别方案,它可以在不接线的情况下实现对现场蒸汽表计数据的采集,并通过485接口将数据传输到客户内…

Facebook商店和亚马逊店铺:双管齐下,实现多渠道销售

在当今数字化时代,电子商务已成为商业领域中不可或缺的一部分。随着消费者购物行为的转变,企业需要利用多种渠道来吸引潜在客户并增加销售额。 在这个过程中,Facebook商店和亚马逊店铺成为了两个备受关注的选择。本文将深入探讨如何通过同时…

基于Web智慧工业园3D可视化安全生产管控系统

建设背景 随着经济飞速发展和产业创新升级,作为新经济形式的重要载体,工业园区污染严重、安全生产难以监管等问题日益突出。工业园区作为工业高质量发展的重要载体和平台,工厂聚集,安全生产风险集中,在这个背景下&…

数据结构(堆)

文章目录 一、概念二、堆的使用三、PriorityQueue 介绍3.1 PriorityQueue 的特性3.2 PriorityQueue 的方法3.3 集合框架中PriorityQueue的比较方式 四、堆的应用 一、概念 1.什么是优先级队列 队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数…

登录的两种方式

Cookie 起源:「购物车」功能需求 工作机制 1.服务器需要客户端保存的内容,放在set-cookie headers里返回,客户端会自动保存 2.客户端保存的cookies,会在之后的所有请求里都携带进cookie header里发送给服务器 3.客户端保存coo…

服务(第二十一篇)mysql高级查询语句(二)

①视图表: 视图表是虚拟表,用来存储SQL语句的定义 如果视图表和原表的字段相同,是可以进行数据修改的; 如果两者的字段不通,不可以修改数据。 语法: 创建:create view 试图表名 as ... 查…

一分钟图情论文:《大学生数字囤积行为的探索性研究——基于个人信息管理视角》

一分钟图情论文:《大学生数字囤积行为的探索性研究——基于个人信息管理视角》 “仓鼠症”是指一些仓鼠为了过冬而囤积大量食物,但由于储藏过多、遗忘储藏地点或者无力储藏,最终使劳动成果白白浪费。在数字时代,我们很多人也成为…

LSTM-理解 Part-1(RNN:循环神经网络)

在之前博主写过涉及到LSTM的博客见下: 机器学习 Pytorch实现案例 LSTM案例(航班人数预测) 该项目原始的博客版本是: Time Series Prediction using LSTM with PyTorch in Python 循环神经网络RNN:Recurrent Neural Ne…

B树的插入操作

我的错误插入操作的详细解析 前言一、实现思路二、思路梳理1.我需要解决的问题2.具体函数实现 总结 前言 本文主要记载了我在实现递归插入操作的思路历程,以及遇到的问题和梳理操作的过程。我之前的实现方法有一种很大的问题,因为不是尾递归实现&#x…

智能高效的Go IDE——GoLand v2023.1全新发布,引入gRPC 导航

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议,通过一步撤消快速安全重构,智能代码完成,死代码检测和文档提示帮助所有 Go 开发人员,从新手到经验丰富的专业人士,创建快速、高效、和可靠的…

多语言APP的外包开发流程及注意事项

近些年国内越来越多的公司走向海外,有些互联网项目即可以为国内用户使用,也可以为国外用户使用,尤其是一些智力类小游戏,这些小游戏不需要特别的运营,只要在设计和玩法上把握好,那就可以推广到全球用户。今…

MySQL 中 CONCAT 函数使用

1:创建数据表: CREATE TABLE user ( id int NOT NULL AUTO_INCREMENT, code varchar(255) NOT NULL, name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT3 DE…