阿里最新研究:当ChatGPT 遇上推荐系统,遭遇滑铁卢

news2024/9/20 20:44:34

bc0a2ad7a66d1c92072dd61f6ef74682.png

文 |小戏

在 GPT-4 屠榜了 NLP,SAM 零样本分割一切让 CV 消失后,不知道大家会不会有好奇 AI 三大现实应用的另一边岁月静好的推荐系统有没有感受到来自遥远大模型带来的巨大压力。

9daab858f8806e3ce4c41b2d2f70f545.png

尽管 ChatGPT 的训练过程似乎没有对推荐系统太多的兼容,但是就现在 ChatGPT + 一切的大势来看,ChatGPT 把手伸到推荐系统也是或早或晚的事。

不过先说一个好消息,在阿里团队针对 ChatGPT 应用于推荐系统的细致测评后,终于,推荐算法工程师的工作看起来是保住了ChatGPT 在许多任务上的表现都差强人意,ChatGPT 强大的泛化能力似乎在推荐系统中暂时失效了

但是,总还带着一个但是,研究也发现,当不使用传统的评价方法,而采用真人评估时,ChatGPT 似乎更能真正理解提供的信息并生成更清晰、更合理的结果,并且这还是在完全没有使用 ChatGPT 在专门的推荐数据集上训练得到的结果。

这似乎暗示了虽然现在 ChatGPT 还不能向对 NLP 那样颠覆现有的研究范式,但是这类大规模语言模型在推荐系统中似乎未来可期……那么就一起来看看今天的这篇工作吧!

论文题目: 

Is ChatGPT a Good Recommender? A Preliminary Study 

论文链接:

https://arxiv.org/abs/2304.10149

从协同过滤到 ChatGPT

简单回想一下推荐系统近年来的发展,从最开始的协同过滤,到后来将深度学习技术引入推荐系统,衍生出基于内容的推荐、基于知识的推荐等等。但是,这些方法共同具有的显著制约在于它们都是特定于任务的,因此需要特定的数据进行训练。而过去 NLP 所说的范式转移,恰恰是构建了不同的预训练模型,显著增强了这些模型的泛化能力。

eeac05f7fee2d5e2f201399b0960b283.png

因此,最近一段时间,也有不少关于推荐系统的预训练语言模型出现,譬如 P5 以及 M6-Rec 。伴随着这几个月 ChatGPT 风头正起,ChatGPT 在句子重述、情感分析及机器翻译等任务上都颇具竞争力,那一个随着而来的问题就是 ChatGPT 是否能在经典的推荐任务中保持良好的性能呢?这篇文章就此展开。

整个将 ChatGPT 用于推荐的工作流如下图所示,针对不同的推荐任务,论文设计了一系列不同的 Prompt,将 ChatGPT 作为一个黑盒式的推荐器,通过一步为保证输出稳定性的输出精炼步骤,得到最终推荐结果。区别于传统的推荐系统,在使用 ChatGPT 的整个过程中,都没有对 ChatGPT 进行微调,而直接考验其的泛化能力。

3806b7f547001427d0ee39477221c5c3.png

Prompt 设计

针对不同任务的 Prompt 主要由三部分构成,分别是任务描述(Task Description),行为注入(Behavior Injection)以及格式指示(Format Indicator)。其中任务描述用来将推荐任务表述为自然语言处理任务,行为注入被设计用来捕捉用户的偏好与需求,格式指示则用于规范输出格式,使得推荐结果更易理解和评估。特别的,由于 ChatGPT 生成模型的特质,其回复生成过程被人为的引入了随机性,这一点在推荐系统中将会导致推荐的输出结果不可靠,从而使得评估推荐系统的表现出现困难。因此,论文设计了输出精炼(Output Refinement)模块,对输出进行格式检查,如果输出通过了格式检查,则代表其格式可以用于后续评估工作,而如果没有通过,则基于规则进行格式修正,直到满足格式要求为至。

6aead6baee05643ad70ac9d725f0064f.png

具体而言,针对五种经典的推荐系统任务,其 zero-shot 与 few-shot Prompt 设计如下:

正确率导向型任务

97c08d4f58d940bf99cf7e7cc94e80d4.png
  • 评分预测:评分预测旨在预测用户对特定项目的评分,如上图所示,黑字部分代表任务的描述,评分预测被翻译为“How will user rate this product_title?”,灰字表示当前的输入,即要求用户评分的项目,红字表示针对输出的格式要求,在评分预测任务中,要求有“1 being lowest and 5 being highest”和“Just give me back the exact number a result”;

  • 序列推荐:序列推荐任务要求系统根据用户过去的序贯行为预测其之后的行为,如上图所示,论文为该任务设计了三种 Prompt 格式,分别是基于交互历史直接预测用户的下一个行为,从候选列表中选出可能的下一个行为以及判断指定行为成为用户下一个行为的可能性;

  • 直接推荐:直接推荐指通过利用用户评分或评论信息直接显示反馈推荐的任务,论文将这一任务的 Prompt 设计为从潜在的候选项中选择出最适合的一项;

生成导向型任务

c4fbb5400e665ddefc2625338cc77eb2.png
  • 解释生成:解释生成是为用户提供解释以澄清为什么会推荐此项的推荐系统任务,具体地,如上图所示,论文要求 ChatGPT 生成一个文本解释,以阐明解释生成过程,对每个类别,可以包含如提示词或星级评分等的辅助信息;

  • 评论总结:旨在使用推荐系统自动生成用户评论摘要。通过输入用户的评论信息,Prompt 提示推荐系统总结评论的主要含义。

测评!ChatGPT 到底是不是一个好的推荐器?

为了测评 ChatGPT 的推荐能力,论证在亚马逊的真实数据集 Beauty 上进行了广泛的实验,旨在回答如下三个问题:

  1. 与现有的推荐模型相比,ChatGPT 表现究竟如何?

  2. Few-shot 对 ChatGPT 有何影响?

  3. 真实人类如何评价 ChatGPT 的推荐?

具体而言,论文将商品标题作为元信息,收集用户点击或互动过的 n 件物品(n=10)和 k 条历史记录(k=3),隐式学习用户的兴趣。对于序列推荐任务的三种任务描述,第一种通过论文按顺序输入用户的历史交互物品,并让 ChatGPT 直接预测进行实现,第二种在评估中设置正样本数为 1,负样本数为 99,从而形成一个长度为 100 的候选列表,用于 ChatGPT 进行选择的任务。第三种则使用 Bert 计算标题向量与所有向量的相似度,选择相似度最高的物品作为候选。而对于生成型任务,论文对每个任务采样了一些不同方法的结果,由人工手动进行评分和排名。

评分预测

4940d01685a01579cb1c4540ae57d568.png

评分预测主要使用 RMSE(Root Mean Square Error,RMSE) 和 MSE(Mean Absolute Error,MAE) 进行评估,如上表所示,对比 MF 和 MLP 方法,可以看出,使用 few-shot 的 ChatGPT 评分优于两种传统方法,体现了这类大规模语言模型在这种预测任务中的良好性能

序列推荐

26cf65b09b41fb9da545824611884ed7.png

序列推荐任务主要使用 HR@k(top-k Hit Ratio,HR@k)以及 NDCG@k(top-k Normalized Discounted Cumulative Gain,NDCG@k)进行评估。对比传统模型(传统深度学习推荐模型及预训练推荐系统模型),可以明显发现在 zero-shot 下 ChatGPT 表现几乎全线低于所有基准模型,而当使用了 few-shot 时,尽管看得出来性能有所提示,在 NDCG@5 中超过了 GRU4Rec,但是依旧明显弱于其他所有传统模型。对于这一结果,论文猜测可能是由于 ChatGPT 输入字符的限制,导致推荐物品主要以标题作为表示,这使得物品之间的关系无法被有效表示,这对推荐任务来说可能是至关重要的。同时,ChatGPT 也有可能生成不存在于数据集中的项目标题,但是论文作者表示,尽管他们已经使用相似性匹配将预测标题映射到了数据集中现有的标题中,但是这种映射并没有带来显著的增益。

直接推荐

cf661df7895622733aa97c48ecc1771b.png

直接推荐使用了与序列推荐相似的评价标准,从结果可以看到,当使用 zero-shot 时,推荐性能依然显著低于传统方法,这可能源于给 ChatGPT 的信息不足,导致无法捕捉用户的兴趣。当然,虽然使用了 few-shot 方法对模型性能带来了提升,但是依然没有打败传统方法

而更有意思的一点是,论文发现 ChatGPT 的推荐似乎非常依赖了构建的候选池中项目的顺序。在极端情况下,当正确值被放在候选池中的第一个位置时,ChatGPT 的评估指标比打乱时高于十倍。这一点似乎表明 ChatGPT 进行推荐时更多的参考的答案 A,B,C,D 的位置,并且带有偏差的得出了越靠前的选项越重要,换言之 ChatGPT 似乎通过大量刷题,没有学到试卷里的要考察的真正知识,而是学到了选 A,B 的概率要大于选 C,D 的概率这一信息,这个错误的知识会为 ChatGPT 在许多任务的应用中带来巨大的麻烦,也为 ChatGPT 的智能性提出了挑战

解释生成

f31714214eee97acd5f5fdb45722e213.png

对于生成类任务,论文使用了双语替换评测(Bilingual Evaluation Understudy,BLEU-n)以及 n-gram 召回导向评价(Recall-Oriented Understudy for Gisting Evaluation,ROUGE-n)来评估解释生成和评论总结任务。从指标的角度来看,以 P5 为代表的预训练推荐系统似乎表现更加出色,但是作者在考察来了 ChatGPT 生成的句子后,如下图所示,可以看到 ChatGPT 的生成能力十分出色,因此作者开始思考是否是传统的评价指标带来了这种评价偏差

41ee039e5527fdca4b9af4a1851e57a4.png

论文认为,由于 P5 的学习方式更加专注于文本结构与语法规则,因此似乎表现更加出色。而 ChatGPT 由于其对话生成的特性,更加考虑了语言交互和多样性,因此可能并不受这些传统的指标的青睐。而如果引入真实人类进行评价,如下图所示,我们可以看到,尽管四位人工注释者的结果有一定程度的主观性,但得分分布相对一致,普遍认为 ChatGPT 生成的解释更清晰更合理,甚至优于基准解释。与此同时,P5 的表现最差,其生成结果往往得出并不流畅的句子

96d41884129c05532520f71d77e10ebd.png

评论摘要

类似于解释生成,论文首先对比在 BLEU 和 ROUGE 指标下不同模型的生成结果。

4025923c89d8316a140ca414c0acd1e0.png

显然,在传统指标中,依然是 P5 占优,通过考察 P5 的生成结果,发现 P5 的摘要经常性的会遗漏关键词,尽管符合句法逻辑,但是这类摘要却忽略了评论中最有意义的信息。而 ChatGPT 则通过深入地理解和总结生成了更有效的摘要

a3f98833e6394212632be99de5cbacda.png

通过进行人类评估也可以发现,所有注释者一致认为 ChatGPT 表现最佳,远超基准和 P5。

2a7c378966d5e2376c2691849d2c727d.png

总结

这篇论文通过构建 ChatGPT 用于推荐任务的工作流,横向对比评估了 ChatGPT 在不同推荐任务中的性能,可以看到在评分类、生产类的任务中,ChatGPT 都取得了领先,这大概率源于 ChatGPT 自身学习时具有的独特能力。

但是 ChatGPT 在真正“推荐”上,由于其输入字符等的局限性,导致表现普遍差于现有的方法,甚至使用 ChatGPT 的推荐,还暗含了许多没有被注意到的内部偏差,这些都对 ChatGPT 在推荐中的应用埋下隐患。

但是,现在的 ChatGPT 还是一个完全没有经过微调,也没有在特定数据集上进行学习过的模型,而其蕴含的对顺序偏好的误差,一方面表明 ChatGPT 似乎不那么聪明,但另一方面又能代表 ChatGPT 强大的归纳统计能力。这篇论文很清晰的点出了 ChatGPT 用于推荐的局限性,但是也可以开启人们对于这类强大模型用于推荐的讨论。

ChatGPT 的强大能力是令人感到欣喜的,尽管这一阵子写了不少 ChatGPT 取代这取代那的文章,但是与其说是取代,倒不如说是 ChatGPT 的出现开始倒逼我们不断去思考去重新定义我们所处的行业、所做的工作、所用的技术。倒也不用担忧未来 GPT-78910 对我们生活林林总总的影响,至少目前,归根结底,ChatGPT 还只是一个背答案的大小孩而已。

e2f5ac2538a0da7944d915e0b81047e9.png卖萌屋作者:小戏

在商学院学优化搞算法读哲学的兼职NLP新闻写手~

作品推荐

  1. 神网站PaperWithoutCode:举报无法复现的论文,让一作社死??

  2. NLP哪个细分方向最具社会价值?

  3. 吴恩达发起新型竞赛范式!模型固定,只调数据?!

  4. 仅仅因为方法 Too Simple 就被拒稿,合理吗?

  5. 忘掉Xavier初始化吧!最强初始化方法ZerO来了

114d31c6b378d3b0a30e1113bb777af2.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

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

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

相关文章

[2020.3.13]通过Android反编译找出问题根因

反编译软件推荐如下: (1)JEB.android.decompiler (2)jadx-0.7.1 问题:喜马拉雅初次进入直播功能时显示无网络连接;播放音频时,播放界面下方内容无法加载,显示网络未连接 1 初次进入直播功能时显示无网络连接 2 左滑切换直播间…

Stability AI,新人工智能背景下的开源先锋

今天跟大家聊聊一家总部设在伦敦的AI公司,虽然小,但对这一波AI浪潮的贡献不可谓不小,好产品好公司都值得推荐给大家。 开源生成式绘画 Stable Diffusion 提起Stability AI,多少有些陌生,但提起Stable Diffusion&#x…

程序员,停止焦虑吧!|原创

hi,我是阿笠。今天聊聊程序员的焦虑问题。 不知道是我看到的消息被定向推送,还是因为现实环境就这样,似乎越来越多的人都被焦虑所困扰。 我也是其中一员。 失眠、焦虑 前段时间因为睡眠困扰,我去看了医生,医生给出的诊…

JavaScript Debugger 调试断点模式

在代码中加入debugger,相当于断点停顿,可用于查看变量传递情况,比如:Vue组件中生命周期onLoad(options) ,在上一页面进入下一页面后,传递进来的参数值。 备注 :options 参数为字符串&#xff0…

测试Ocr工具IronOCR(续2:编写圈选图片识别文本的程序)

上篇文章介绍了加载图片并圈选图片中文字区域的程序实现方式,本文基于此实现识别圈选区域文字内容的程序。主要识别语言包括英文和中文。IronOCR包中自带英文语言包,项目还需安装中文语言包,建议直接安装IronOcr.Languages.Chinese语言包&…

【Java EE】-CSS详解

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享: 且视他人如盏盏鬼火,大胆地去走你的道路。——史铁生《病隙碎笔》 主要内容:CSS引入html的三种方式,CSS八大选择器&#xff…

YOLOv8 Tensorrt Python/C++部署教程

B站教学视频 https://www.bilibili.com/video/BV1Pa4y1N7HS Github仓库地址 https://github.com/Monday-Leo/YOLOv8_Tensorrt Introduction 基于Tensorrt加速Yolov8,本项目采用ONNX转Tensorrt方案支持Windows10和Linux支持Python/C YOLOv8 Environment Tenso…

Git cherry-pick详解

文章目录 基本用法引入多个提交代码冲突解决引入分支所有提交引入另一个代码库提交常用配置常见问题 对于多分支的代码库,将代码从一个分支引入到另一个分支是常见需求。 这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就…

Linux命令rsync增量同步目录下的文件

业务场景描述 最近遇到一个问题,需要编写相应的Linux命令,增量同步/var/mysql里的所有文件到另外一个目录/opt/mysql,但是里面相关的日志文件xx.log是不同步的,这个场景,可以使用rsync来实现 什么是rsync命令&#x…

【Linux】冯诺依曼体系及操作系统

本期博客我们将深入学习操作系统的架构 目录 一、冯诺依曼体系结构 二、操作系统(Operator System) 2.1 操作系统的引入 2.2 操作系统的概念 2.3 操作系统的定位 2.4 深度理解操作系统的管理 2.5 系统调用和库函数概念 一、冯诺依曼体系结构 冯诺依曼体系这个名词相信…

webpack5搭建react框架-配置优化

webpack5搭建react框架-配置优化 一、前言 使用webpack5已经搭建好了基础的开发环境和生产环境,但是有些功能在使用的时候还可以进一步优化,所以今天就来将之前的配置做一下最终的优化。 二、配置优化 1、设置扩展名和别名 目前的配置中我们在引入一…

Java泛型之通配符类型

1. 案例分析 class Animal {Overridepublic String toString() {return "animal";} }class Cat extends Animal {Overridepublic String toString() {return "cat";} }class Dog extends Animal {Overridepublic String toString() {return "dog&quo…

2023/4/25

今天主要重新复习了一下树的基础知识,对于树的遍历和深度的求解进行了一些训练(复习了一下写过的题) 刷了两个关于树的简单题 104. 二叉树的最大深度 难度简单1586收藏分享切换为英文接收动态反馈 给定一个二叉树,找出其最大深度…

mysql的读提交与可重复读

前景介绍 隔离级别脏读可能性不可重复读可能性幻读可能性加读锁READ UNCOMMITTEDYESYESYESNOREAD COMMITTEDNOYESYESNOREPEATABLE READNONOYESNOSERALIZABLENONONONO mysql事务 READ COMMITTED 时间事务1事务2事务3T1beginbeginbeginT2update wx_va set value “TT1” wher…

数据库基础篇 《13.约束》

1. 约束(constraint)概述 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成…

Windows10下安装Ubuntu22.04(打造双系统)步骤 + 安装Nvidia显卡驱动

文章目录 下载Ubuntu22.04制作Ubuntu安装盘对硬盘分区查看磁盘分区形式 安装Ubuntu关于无法定位软件包错误安装显卡驱动 训练神经网络常用Lunix系统,这里使用Ubuntu22.04。 记录一下Windows10Ubuntu双系统安装方法。 下载Ubuntu22.04 下载链接:Ubuntu …

【Linux】一文读懂HTTP协议:从原理到应用

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录 👉HTTP协议…

如何提高项目估算精准度 关键有3方面

软件规模可以用多种方式进行估算,但是用功能点估算方式更准确,而自动估算让估算更快速,我们以CoCode需求分析工具为例来说明,如何提高项目估算精准度? 一、调整功能点数 要提高项目估算精准度,首先应该提高…

Pytorch 入门资源(一) annaconda3下安装pytorch2.0.0和python3.11,使用Pycharm编辑器环境配置

一、环境安装 用annaconda3-2023.03-windows_x86_64,安装上python3.11和pytorch2.0.0环境。 下载pycharm community版本,将pycharm环境选择到pytorch,就可以开始上手Pytorch了。 指路几个安装博客: 【ok】Anaconda3的安装配置…

springcloud的项目使用一个tomcat部署

背景 我们项目使用springcloud、redis(缓存)、rocketMQ(消息中间件)、tinyid(分布式id)、minio(文件存储)、nacos(配置注册中心)这些组件开发了一个mes系统&…