Chat-REC、InstructRec(LLM大模型用于推荐系统)

当众多chat-xxx和xxxGPT喷涌而出的时候,博主就在等它被做到推荐系统的这一天。本篇博文将简要看看一些文章的具体做法。

Chat-REC: Towards Interactive and Explainable LLMs-Augmented Recommender System
先上地址,

  • https://arxiv.org/abs/2303.14524

LLM+推荐系统的结合点在哪?
虽然大型语言模型LLM已经证明了它们用于解决各种应用任务的巨大潜力,但它和推荐系统的结合点在哪?

  • 推荐系统旨在根据用户的偏好和行为向用户推荐项目。传统上,这些系统都依赖于用户数据,如点击流和购买历史等等。
  • NLP在扩大推荐系统用户数据的范围方面是有价值的。比如NLP技术可以用于分析用户生成的内容,如评论和社交媒体帖子,以深入了解用户的偏好和兴趣,提高整体用户体验和参与度。

然而,传统的推荐系统仍然面临着巨大的挑战,如缺少交互性、可解释性,缺乏反馈机制,以及冷启动和跨域推荐等长期问题。但LLM的出现为这些挑战提供了一个很有前途的解决方案。

  • LLM可以生成更自然和可解释的建议,从而可以解决冷启动问题,并执行跨领域推荐。
  • LLM具有更强的交互性和反馈机制,完全可以增强整体用户体验。
  • 通过利用海量参数所承载的内部知识,LLM可以依靠外部检索器以进一步提高推荐系统的性能 。

推荐系统任务被制定为基于提示的自然语言任务,其中user-item信息和相应的特征与个性化的提示模板集成作为模型输入。然而,在目前的研究中,LLM仍然作为模型的一部分需要参与训练(不过博主个人观点并不觉得这是比较大的缺点,利用通用模型的能力+小部分参数训练到垂直领域效果一定更有保证,更多可以参考博主之前的文章门)。

  • 提示学习用于推荐系统问题(PEPLER,P5,PRL)
  • 提示学习用于推荐系统问题(PPR,PFRec)

在这篇文章中,作者介绍了一种新的方法来做会话推荐系统(从而能与LLM更紧密的结合),它具有交互式和可解释的能力,即LLMs 增强传统推荐的范式 Chat-Rec(ChatGPT Augmented Recommender System),不需要训练(本质就是直接拿chatGPT做接口,设计预/后处理),而是只依赖于上下文学习,从而产生更有效的结果。

  • 使用LLM增强的推荐系统,有利于在对话过程中了解用户的偏好。
  • 在对话的每一步之后,可以迭代用户偏好,更新候选推荐结果。
  • 此外,用户与产品之间的偏好是紧密链接的,从而允许更好的跨领域产品推荐。

Chat-Rec的模型结构如下图所示,

在这里插入图片描述

左边是用户和 ChatGPT 之间的对话。中间是Chat-Rec的主要贡献,即链接推荐系统和 ChatGPT。右边是策略执行具体过程,即

  • 对于一个用户query:“你能推荐一些动作片给我吗?”。
  • 确定这个query是否是一个推荐任务【ChatGPT来判断】
    • 如果是推荐任务,则使用该输入来执行“推荐动作电影”模块。但由于推荐空间是巨大的,所以该模块需要分为两个步骤:1推荐系统产生一个少量的候选得到top20的推荐结果,2然后再进行重新排序和调整【ChatGPT来重排】,以生成top5的最终输出。这种方法可以确保向用户展示一个更小、更相关的物品集,增加他们找到自己喜欢的东西的可能性。
    • 如果不是推荐任务,如用户询问“为什么会推荐你会推荐fargo电影给我”。系统将使用电影标题、历史记录交互和用户配置文件作为输入来执行对推荐模块的解释【ChatGPT来生成解释】。

由于ChatGPT的输入是自然语言文本,所以中间模块的主要目标就是如何利用用户与物品的历史交互、用户档案、用户查询和对话历史 (如果有的话)等等多个输入ChatGPT来生成一个自然语言段落,以捕捉用户的查询和推荐信息。

  • User-item history interactions:用户与物品的历史交互,指的是用户过去与物品的互动,比如他们点击过的物品,购买过的物品,或者评价过的物品。
  • User profile:用户画像,其中包含关于用户的人口统计和偏好信息,如年龄、性别、地点和兴趣。
  • User query Q i Q_i Qi:查询句子,可能是推荐任务也可能是通用任务。
  • History of dialogue H < i H_{<i} H<i:用户和chatGPT之间的所有上下文对话。

对于topk推荐任务来说,生成的prompt例子是:
在这里插入图片描述
对于评分任务来说,生成的prompt例子是:
在这里插入图片描述


在这里插入图片描述
如何解决冷启动
大模型中拥有很多知识,利用商品的文字描述就能够借助LLM的力量来帮助推荐系统缓解新项目的冷启动问题,即没有大量用户互动也可以得到embedding。

如上图所示,最上展示了两种chatGPT难以执行推荐场景:

  • 1 让不能联网的chatGPT推荐2023最新的动作电影;
  • 2 让chatGPT推荐一个它知识储备中没有的动作电影。

因此,作者们的做法是离线利用LLM来生成相应的embedding表征并进行缓存。从而在当chatGPT遇到新的物品推荐时,会首先计算离线商品特征和用户query特征之间的相似性,然后检索最相关商品一起输入到 ChatGPT 进行推荐。

在这里插入图片描述

如何解决跨域推荐
类似的,LLM中的知识可以很方便对不同领域的商品有认知,如电影,音乐和书籍等等,并且还能够分清楚在不同领域产品之间的关系。

因此,如上图所示,作者们的做法是直接依靠chatGPT啦,把上下文对话输入一起编码进chatGPT的输入后,就能在用户询问关于其他类型作品的建议时,实现跨域推荐,如对书籍、电视剧、播客和视频游戏进行推荐。


实验
backbone选了GPT-3 和 GPT-3.5 系列中的三个模型

  • gpt-3.5-turbo,即chatGPT。
  • text-davinci-003。
  • text-davinci-002。
    在这里插入图片描述
    在这里插入图片描述

从top5推荐和评分预测这个俩结果上来看,似乎text-davinci-003才是最好的。。

可能说明基础表征能力够了,对这俩任务来说是足够的。不过作者没有其他任务的实验结果,比如上面说的冷启动、跨域、可解释似乎都无,继续观望吧。


InstructRec
补一篇InstructRec,先上地址:

  • paper:Recommendation as Instruction Following: A Large Language Model Empowered Recommendation Approach
  • arxiv:https://arxiv.org/pdf/2305.07001.pdf

motivation主要在于,利用LLM的用户推荐可以方便用户的偏好或需求可以用自然语言描述来表达,因此instruct tuning是非常适合的方案。

因此,作者在开源LLM(3B的 Flan-T5-XL)进行指令调优来适应推荐系统。模型流程如下图所示,用户直接给出instructions如“I prefer”,然后历史记录和用户指定将一起输入formulation模块中生成模型能够理解的instructions形式,然后输入到大模型中,最后可以完成各种任务如sequential recommendation、product search、personalized search等。
在这里插入图片描述
因此,该工作最重要的模块就是通用指令的设计,以全面地描述用户的偏好、意图、任务形式。

  • 偏好(Preference)。指用户偏好。其中隐式偏好用商品标题而非id,显式偏好用用户query中的明确表达(如用户评论),而不是之前的评分或点赞。
  • 意图(Intention)。指用户对某些类型的物品的需求。模糊的意图如“给我儿子的一些礼物”、具体的意图如“蓝色、便宜、iPhone13”)。
  • 任务形式(Task Form)。要做到统一的推荐系统的话,需要有适应各种任务的能力。
    Pointwise。某个候选商品是否适合用户,那么直接用用户需求和商品特征来匹配。
    Pairwise。让LLM从item pairs中选择更合适的一个即可。
    Matching。召回模块,LLM从整个商品语料库中生成候选集合。
    Reranking。排序模块,LLM从候选中重排序商品。

各个维度如下图所示:

在这里插入图片描述
根据指令格式和作者们手动设计了39个指令模板,就可以通过交互数据来生成指令数据了。作者们使用自动提示策略,利用GPT-3.5来生成指令,即通过输入每个用户的历史互动和评论,然后生成个性化的指令。最后生成了共252K条指令。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用python爬取股票信息

基本思路 首先查看robots.txt&#xff0c;文档说明是允许爬虫的 查找接口&#xff1a;第一次对整个页面进行了爬取&#xff0c;发现返回的内容并不包含我们所需要的信息。说明这部分的信息是通过AJAX渲染的&#xff0c;这就需要我们去查找接口。按F12打开开发者模式&#xff0…

Python爬虫实战,requests模块,爬虫采集网易财经股票交易数据

前言 本文给大家分享的是如何通过Python爬虫采集网易财经易数据 开发工具 Python版本&#xff1a; 3.8 相关模块&#xff1a; requests模块 parsel模块 环境搭建 安装Python并添加到环境变量&#xff0c;pip安装需要的相关模块即可。 思路分析 本文以爬虫网易财经数据…

小白学 Python 爬虫(25):爬取股票信息

人生苦短&#xff0c;我用 Python 前文传送门&#xff1a; 小白学 Python 爬虫&#xff08;1&#xff09;&#xff1a;开篇 小白学 Python 爬虫&#xff08;2&#xff09;&#xff1a;前置准备&#xff08;一&#xff09;基本类库的安装 小白学 Python 爬虫&#xff08;3&am…

python3爬虫基本操作——抓取股票信息

目录 1. requests库发送请求&#xff0c;获取响应内容的字符串格式 2.Beautifulsoup解析并获取指定的内容 3.selenium库 没想到我的第一次 — — 写博客就这样毫无预兆地发生了。其实一直对博客非常感兴趣&#xff0c;博客是很好的交流平台&#xff0c;非常 感谢各路博客大神…

用 Python 爬取股票实时数据

今天我们一起来学习一个 Python 爬虫实战案例&#xff0c;我们的目标网站就是东方财富网&#xff0c;废话不多说&#xff0c;开搞 网站分析 东方财富网地址如下 http://quote.eastmoney.com/center/gridlist.html#hs_a_board 我们通过点击该网站的下一页发现&#xff0c;网页内…

爬取股票信息

爬取网站 网易财经 创建的文件 List_url.py from finance.code_list import CodeListdef Shanghai_Stock_Index():"""上证指数"""code int(input("证券代号&#xff1a;"))if code > 201000 and code < 900957:year int(input…

实战干货!用 Python 爬取股票实时数据!

今天我们一起来学习一个 Python 爬虫实战案例&#xff0c;我们的目标网站就是东方财富网&#xff0c;废话不多说&#xff0c;开搞 网站分析 东方财富网地址如下 http://quote.eastmoney.com/center/gridlist.html#hs_a_board 我们通过点击该网站的下一页发现&#xff0c;网页…

基于Python爬虫的股票成交量数据抓取分析系统

目录 数据获取 2 1.1. 实验环境搭建 2 1.2. 抓取数据 2 1.2.1. 新浪财经 3 1.2.2. 网易财经 6 1.2.3. 东方财富 12 1.2.4. TuShare (挖地兔) 19 1.2.5. 其他平台 21 1.3. 数据获取总结 22 1.3.1. 股票代码抓取的总结 22 1.3.2. 日线数据抓取总结 22 1.3.3. 反爬虫策略及解决的总…

朋友股票亏惨了,我一怒用Python爬取了证券最新数据

大家好&#xff0c;我是辣条。 抓取目标: url:http://webapi.cninfo.com.cn/#/marketDataDate 数据目标: 获取 证券代码 证券简称 交易日期 开盘价 最高价 最低价 收盘价 成交数量 难点: 请求头参数mcode 加密生成 使用第三方库: 1. requests 2. execjs 3. js2py 4. math …

Python爬虫实战:爬取股票信息

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者&#xff1a; PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群交流解答点击即可加入…

python爬虫实战-抓取同花顺股票信息

前言&#xff1a; 在之前介绍requests的基础上&#xff0c;现在开始进行实战。 目标网站&#xff1a;http://q.10jqka.com.cn//index/index/board/all/field/zdf/order/desc/page/ 一 涉及到的技术点&#xff1a; &#xff08;1&#xff09;requests: 用于网页请求 &#xff…

微信小程序登录面板切换不了账号,显示网络连接失败?

打开开发工具就会显示这个提示&#xff0c;无论我是点击确定还是取消&#xff0c;切换账号都显示网络连接失败~&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 我看了一些博客&#xff0c;说是选择直连代理。我试了&#xff0c;还是显示 网络连接…

wxpy 扫码登录微信报错 KeyError: pass_ticket(网页版微信登录失败)

使用wxpy开发微信聊天机器人&#xff0c;结果扫码登录后&#xff0c;提示&#xff1a; KeyError: pass_ticket解决方法&#xff1a;wxpy是根据网页版微信的接口封装的库。用wxpy&#xff0c;得去试试网页版微信&#xff08;https://wx.qq.com/&#xff09;看能否正常登录。 如…

pc端集成企业微信的扫码登录及遇到的问题

集成步骤&#xff1a; 1、在企业微信后台中添加应用 2、记录下应用的相关信息&#xff0c;在后文要用到 3、引入企业微信js 旧版&#xff1a;http://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js 新版&#xff08;20210803更新&#xff09;&#xff1a;http…

uniapp微信登录报错-100,login:fail [:-1]未能完成操作。(PGWXAPI错误-1。)

报内容&#xff1a; { “errMsg”: “login:fail [:-1]未能完成操作。&#xff08;PGWXAPI错误-1。&#xff09;,”, “errCode”: -100, “code”: -100 } 原因&#xff1a; 没有在manifest.json文件里面配置appsecret(微信开放平台申请移动应用之后会有个appsecret) 为什么没…

Android微信登录页面实现

利用Android实现微信手机端的登录页面&#xff0c;对于登录的输入做了一些的条件限制诸如&#xff0c;非空&#xff0c;长度限制等&#xff1b; 效果图如下&#xff1a; xml文件代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <Line…

分享一个基于GPT-3.5 Turbo的开源项目,界面简洁大气,反应速度快

今天在github又发现一个国内的大神开源的chatGPT项目。先看看整体的效果如何吧。 这个项目是基于OpenAI GPT-3.5 Turbo API 的demo。 本地部署 环境准备 安装node 由于该项目是使用node开发&#xff0c;所以&#xff0c;在部署之前先要安装好node环境。检查您的开发环境和部…

一款反应速度完全碾压chatgpt3.5turbo的软件 curor,直接运行

1、软件简介 Build Software. Fast.是一款可以在编辑器中使用 openAI GPT-4 模型编写的软件 官网地址&#xff1a;https://www.cursor.so/ 2.安装方法 不用安装直接运行exe3.使用方法 CTRLK(生成代码)CTRLL(对话功能)

OpenAI ChatGPT3.5-turbo实际解决问题能力评测

OpenAI ChatGPT3.5-turbo实际解决问题能力评测 ​ 程序员在coding的时候会经常遇到需要查阅资料的情况&#xff0c;最好的结果是直接能拿到一份好用的demo版本code&#xff0c;本次我们来评测&#xff1a;bing搜索和chatGPT3.5&#xff0c;解决实际问题&#xff1a;“html 图片…

程序员“摸鱼”神器,GitHub Copilot“凭本事”完全免费

上周Microsoft 365 Copilot的发布会上几段演示视频让朋友圈沸腾了一整天&#xff0c;颠覆&#xff0c;失业&#xff0c;工业革命刷屏&#xff0c;普遍的焦虑中有工作中重度依赖office的朋友表示如果功能都是真的&#xff0c;那么确实可以节约出很多时间摸鱼&#xff0c;但是立马…