关于人工智能:探索将大语言模型用作推荐系统

45次阅读

共计 7170 个字符,预计需要花费 18 分钟才能阅读完成。

编者按:目前大语言模型次要问答、对话等场景,进行被动答复。是否能够将大模型利用于举荐零碎,进行被动推送呢?

这篇文章回顾了能够将大模型作为举荐零碎的实践根底,并重点形容了基于英文和阿拉伯语的购物数据集微调 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-…

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

3.https://ai.googleblog.com/2017/08/transformer-novel-neural-ne…

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

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

6.https://ai.googleblog.com/2020/02/exploring-transfer-learning…

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_e…

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…

正文完
 0