GenRec论文阅读笔记

GenRec: Large Language Model for Generative Recommendation论文阅读笔记

Abstract

​ 本文提出了一种使用大型语言模型(LLM)的创新推荐系统方法,该方法纯粹基于原始文本数据,即使用项目名称或标题作为项目 ID,而不是创建精心设计的用户或项目 ID。更具体地说,我们提出了一种新颖的用于生成推荐(GenRec)的 LLM 方法,它利用 LLM 的表达能力直接生成要推荐的目标项目,而不是像传统的鉴别推荐那样逐一计算每个候选项目的排名得分。GenRec 利用 LLM 的理解能力来解释上下文、学习用户偏好并生成相关推荐。

​ 我们提出的方法利用大型语言模型中的大量知识来完成推荐任务。我们制定了专门的提示,以增强 LLM 理解推荐任务的能力。随后,我们利用这些提示对 LLaMA 骨干 LLM 进行 LoRA 微调,以原始文本(使用原始项目名称或标题作为项目 ID)表示的用户-项目交互数据来捕捉用户偏好和项目特征。

Introduction

​ 在本文中,我们为生成式推荐(GenRec)提出了一种新颖的基于纯文本的大语言模型。GenRec 直接使用文本项目名称或标题作为项目的 ID,无需为每个项目创建专门设计的 ID。GenRec 模型的主要优点之一是它充分利用了项目名称中固有的丰富描述性信息,这些信息通常包含可进行语义分析的特征,从而能够更好地了解项目与用户的潜在相关性。这有可能提供更准确、更个性化的推荐,从而提升整体用户体验。本文的主要贡献可归纳如下:

  • 我们强调了基于 LLM 的生成式推荐这一前景广阔的范例,它可以直接生成要推荐的目标项目的名称,而不是传统的判别式推荐,后者必须逐一计算每个候选项目的排名得分,然后对它们进行排序,以决定推荐哪个项目。
  • 我们引入了一种名为 GenRec 的新方法,通过将文本信息适当纳入生成式推荐模型来提高生成式推荐性能。

Method

​ 我们为基于 LLM 的生成式推荐提出的 GenRec 框架简单而有效。拟议框架的架构如图 1 所示。给定用户的项目交互序列后,用于生成式推荐(GenRec)的大语言模型将根据提示格式化基于文本的项目名称或标题。重新格式化后的序列将用于微调大语言模型,经过微调的 LLM 可以预测用户可能与之交互的后续项目。

pAeQiYq.png

序列生成

​ GenRec 的初始组件是一个生成函数,其任务是生成包含用户兴趣的各种序列。为了提高模型对推荐任务的理解能力,我们设计了多种提示来促进序列的生成。以图 2 为例,我们使用用户的电影观看历史作为训练数据,并利用这些信息来格式化训练序列。

​ 序列由三部分组成:指令、输入和输出。指令元素概述了电影推荐的具体任务,我们为此创建了几个指令,以增强 LLM 对正在进行的推荐任务的理解。输入表示用户的交互历史,但不包括最近的实例。输出则是该记录中的最新交互。在这里,LLM 的主要任务是准确预测最后一次交互。

pAeQZXF.png

训练策略

​ 在本文中,我们使用 LLaMA 大型语言模型 [23] 作为 GenRec 训练的基础。LLaMA 模型是在一个庞大的语言语料库上预先训练的,为我们高效捕捉用户兴趣和项目内容信息的预期目的提供了宝贵的资源。不过,值得注意的是,即使是最小的 70 亿参数版本,GPU 微调 LLaMA 所需的内存也相当可观。

​ 为了规避这一挑战并节省 GPU 内存,我们在本研究范围内采用了 LowRank Adaptation(LoRA)方法来完成 LLaMA-7b 模型的微调和推理任务。通过这种方法,我们大大降低了对 GPU 内存的需求。通过这种优化方法,我们可以在一个内存容量为 24GB 的 GPU 上对 LLaMA-LoRA 模型进行微调。

Conclusion

​ 本文提出的 GenRec 是一种基于文本项目名称或标题作为 ID 的生成式推荐大语言模型方法。通过将项目名称的丰富语义作为输入,GenRec 可以提供个性化和与上下文相关的推荐。我们的实际演示凸显了 GenRec 的功效,并指出了它在不同推荐方案中的适应性。此外,GenRec 框架的灵活性便于与任何大型语言模型集成,从而扩大了其潜在的实用范围。就未来工作而言,有几个方向值得探索。我们打算通过开发更复杂的提示来完善序列的生成,从而进一步增强模型对推荐任务的理解。此外,我们还计划扩展我们的研究,纳入更复杂的用户交互数据,如评分或评论,从而更深入地了解用户行为和偏好。另一个方向是了解 GenRec 如何与不同的大型语言模型配合使用,因为我们对使用不同模型的好处和坏处都很好奇。

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

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

相关文章

XGBoost模型 0基础小白也能懂(附代码)

XGBoost 是 eXtreme Gradient Boosting 的缩写称呼,它是一个非常强大的 Boosting 算法工具包,优秀的性能(效果与速度)让其在很长一段时间内霸屏数据科学比赛解决方案榜首,现在很多大厂的机器学习方案依旧会首选这个模型。XGBoost模型 0基础小白也能懂(附代码) 原文链接 …

编程技术开发105本经典书籍推荐分享

最近整理了好多的技术书籍,对于提高自己能力来说还是很有用的,当然要有选择的看,不然估计退休了都不一定看得完,分享给需要的同学。 编程技术开发105本经典书籍推荐:https://zhangfeidezhu.com/?p=753 分享截图本文来自博客园,作者:张飞的猪,转载请注明原文链接:http…

ArcMap批量附色操作,并保存mxd

ArcMap批量附色操作,并保存mxd 1、对单文件操作 1、保存当前ArcMap中打开的shp文件为mxd文件 打开label_shp_root中的任意一个shp文件夹保存成mxd文件2、对当前在arcmap中打开的shp文件应用color配色 color配色是手动设置好一个shp文件夹的配色方案并保存成mxd文件应用color.m…

Linux 忘记密码

最近需要搞几台虚拟机,之前的vm密码进不去 找了几个方法 不是很贴切, Centos7 重启页面 e--> grub ,在linux16 行 修改ro 为rw,最后加上 init=/bin/sh F10 或Ctrl+x进入这里的 rw代替 进os之后 mount -o remount,rw /passwd touch /.autorelabel exec /sbin/init

使用 `Roslyn` 分析器和修复器对.cs源代码添加头部注释

之前写过两篇关于Roslyn源生成器生成源代码的用例,今天使用Roslyn的代码修复器CodeFixProvider实现一个cs文件头部注释的功能, 代码修复器会同时涉及到CodeFixProvider和DiagnosticAnalyzer, 实现FileHeaderAnalyzer 首先我们知道修复器的先决条件是分析器,比如这里,如果要对代…

线性dp:LeetCode516 .最长回文子序列

LeetCode516 .最长回文子序列 题目叙述: 力扣题目链接(opens new window) 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1: 输入:s = "bbbab&…

202409071506,开始写代码,从0开始 验证基本架子

由于视频教程里面 用的VS2105 所以 照抄。开发环境是VS2015 ,WIN10. VS2015 在今天看来是一个很古老的开发环境了,估计都很难找到安装包。(各种安装包:https://www.cnblogs.com/zjoch/p/5694013.html) 用:vs2015.ent_chs.iso (3.88 GB (4,172,560,384 字节))这个安装…

PR出现冲突无法直接解决

举例:存在p-dev 分支,申请合入 master 分支,产生pr 无法直接自动将pr 合入到master中 需要在本地解决 解决:git checkout p-dev,切换分支dev git pull ,更新到最新的 git merge origin master, 此时会出现冲突,通过vscode 或者smartgit 去解决 解决完冲突的文件,需要…

彻底理解字节序

1.基本理论计算机发送数据从内存低地址开始. 计算机接收数据的保存从低地址开始.2.非数值型网络数据传输如上图例子所示,发送端发送了四个字节内容,分别为0x12,0x34,0x56,0x78,假设这四个字节不表示数值例如unsigned int,而是图片内容数据。发送端从低内存地址开始发送四个…

跳跃表

概述 跳跃表(SkipList)是链表加多级索引组成的数据结构。链表的数据结构的查询复条度是 O(N)。为了提高查询效率,可以在链表上加多级索引来实现快速查询。跳跃表不仅能提高搜索性能。也能提高插入和删除操作的性能。索引的层数也叫作跳跃表的高度查找 在跳跃表的结构中会首先从…

Docker 镜像的分层概念

来更深入地理解镜像的概念40.镜像的分层概念 来更深入地理解镜像的概念 ‍ 镜像的分层 镜像,是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等…

prometheus学习笔记之kube-state-metrics

一、kube-state-metrics简介Kube-state-metrics:通过监听 API Server 生成有关资源对象的状态指标,比如 Deployment、Node、Pod,需要注意的是 kube-state-metrics 只是简单的提供一个 metrics 数据, 并不会存储这些指标数据, 所以我 们可以使用 Prometheus 来抓取这些数据然…