论文笔记-WWWCompanion2024-LLM as Data Augmenters for Cold-Start Item Recommendation
论文笔记-WWW Companion 2024-Large Language Models as Data Augmenters for Cold-Start Item Recommendation
- 大语言模型作为冷启动项目推荐的数据增强器
- 摘要
- 1.引言
- 2.前言
- 3.LLMs作为数据增强
- 3.1增强数据生成
- 3.2成对比较损失
- 4.实验
- 4.1实验设置
- 4.2结果和分析
- 4.3超参数实验
- 5.总结
大语言模型作为冷启动项目推荐的数据增强器
论文: Large Language Models as Data Augmenters for Cold-Start Item Recommendation
代码: 无
摘要
传统推荐系统在没有历史交互的情况下难以推荐冷启动项目。为了解决这一问题,本文提出利用 LLM 作为数据增强工具,以弥补训练期间对冷启动项目的知识差距。
首先,使用 LLM 根据用户历史行为的文本描述和新商品描述推断用户对冷启动项目的偏好。然后,通过辅助的成对损失将增强的训练信号纳入下游推荐模型的学习中。在公共 Amazon 数据集上的实验证明了 LLM 能有效增强冷启动项目的训练信号,从而显著改善各种推荐模型对冷启动项目的推荐效果。
1.引言
基于 ID 的嵌入方法在推荐新内容和冷门内容时面临重大挑战,因为这些内容缺乏模型学习准确嵌入所需的交互数据,这就是冷启动问题。为了解决这一长期存在的问题,基于内容的推荐系统利用商品的元特征来辅助商品表示学习,即通过元特征的转换或其组合来替代基于 ID 的商品嵌入。利用 LLM 进行推荐需要对大型预训练模态编码器进行微调以适应推荐任务,这需要巨大的工作量。此外,针对每个用户请求提供 LLMs 或大型基础模型的延迟,通常超过推荐平台所期望的响应时间。
为了将 LLM 的能力转移到解决长期存在的推荐冷启动问题上,本文并不在服务阶段直接使用 LLM,而是探索 LLM 在训练阶段填补数据空白的潜力。通过这种与模型无关的方法,可以避免 LLM 推理的慢速 API 调用,并解决冷启动项目的数据稀疏问题。此外,增强过程作为数据预处理步骤,可以集成到任何工业规模的推荐系统中,为利用 LLM 的泛化能力提供了一种可扩展的方法。
本研究的主要贡献包括:
-
提出了成对比较的提示方法,利用 LLM 基于用户的历史交互推断用户在商品对之间的偏好。
-
将 LLM 生成的合成用户偏好与成对损失结合,作为常规推荐任务的补充。
-
在两个真实世界的数据集上进行了实验,结果表明合成用户偏好可以显著提升冷启动项目的性能。
2.前言
设 U = { u 1 , u 2 , … , u G } U = \{ u_1, u_2, \ldots, u_G \} U={u1,u2,…,uG} 为用户集, I warm = { i 1 , i 2 , … , i P } I_{\text{warm}} = \{ i_1, i_2, \ldots, i_P \} Iwarm={i1,i2,…,iP} 和 I cold = { i P + 1 , i P + 2 , … , i P + N } I_{\text{cold}} = \{ i_{P+1}, i_{P+2}, \ldots, i_{P+N} \} Icold={iP+1,iP+2,…,iP+N} 分别表示平台上的热启动和冷启动项目。每个项目都映射到与其 ID 相关的可训练嵌入。生成个性化推荐主要是预测用户与项目之间的兼容性,从中检索与用户高度兼容的项目,以构成用户的独特推荐列表。
潜在因子模型通过相应的潜在因子向量的点积来近似用户与项目之间的兼容性。设 v u v_u vu 和 v i v_i vi 分别表示用户 u u u 在项目 i i i 上的潜在因子向量,潜在因子模型通过 y ^ u , i = v u T v i \hat{y}_{u,i} = v_u^T v_i y^u,i=vuTvi 计算它们的兼容性。然而,冷启动项目没有训练信号来获取 v i v_i vi。为了解决这一知识差距,本文提出生成合成数据以模拟用户对冷启动项目的交互。
3.LLMs作为数据增强
3.1增强数据生成
本文直接使用 PaLM 系列模型的生成能力,而不进行微调。遵循相关研究,将用户交互的项目描述放入提示中。具体而言,给定训练集中的用户查询 U i U_i Ui,采用描述性项目标题来表示每个历史交互。为了从这个描述性的用户查询中推断用户的偏好,可以选择询问用户是否希望获取特定的冷启动项目(逐点方式),或者询问他们更喜欢冷启动项目 A 还是 B(成对方式)。
研究表明,大模型在校准的逐点相关性估计上表现不佳,但在成对比较任务中展现了更好的能力。因此,本文探讨利用 LLM 生成冷启动项目之间的成对偏好,给定用户查询。具体来说,在冷启动项目中随机抽取一对项目( A , B A, B A,B),并构建提示以检索用户对 A A A 和 B B B 的偏好,如图1。

提示中的成对比较确保从 LLM 调用中获取训练信号,以指示用户对两个冷启动项目的偏好。相比之下,针对用户随机冷启动项目的逐点推断更可能导致负标签(不感兴趣),而正标签则较为稀少。
3.2成对比较损失
为了在训练过程中结合这一增强信号,将冷启动项目对的成对偏好预测作为辅助任务,补充常规推荐任务。LLM 返回的答案被视为正项( pos \text{pos} pos),而另一个项目则为负项( neg \text{neg} neg)。假设用户 u u u 更喜欢冷启动项目 pos \text{pos} pos 而非冷启动项目 neg \text{neg} neg,可以得到以下基于贝叶斯个性化排序(BPR)损失的成对损失:

其中 σ \sigma σ 是 Sigmoid 激活函数。然后,将这一成对 BPR 损失加到通常用于训练推荐模型的损失中。成对损失将梯度反向传播到正负冷启动项目的嵌入。
4.实验
4.1实验设置
数据集:Amazon的Beauty and Sports
Backbones:NeuMF和 SASRec
三个变体:
-
w/o aug:不带增强的方法,使用原始训练数据训练推荐系统。
-
content-based:基于内容的方法,采用词袋表示项目,结合其类别和标题,这是一种处理冷启动项目的常见方法。
-
w/ aug:带增强的方法,结合了 LLM 生成的增强,并在训练过程中补充了成对比较损失。
4.2结果和分析

结论:
-
通过成对损失学习到的冷启动项目的增强训练信号,可以促进 NeuMF 和 SASRec 的表示学习,并显著提升冷启动推荐的性能。
-
增强信号和成对比较损失在较高 K 值时提高了召回率,因为它们使模型能够对更广泛的冷启动项目进行排序,包括一些相关性较低的项目。
4.3超参数实验

结论:
-
图 2 (a) 表示模型规模影响增强的性能。众所周知,较大的模型能够更好地推理用户的历史行为,并更准确地推断用户偏好。
-
图 2 (b) 表示通过生成更多用户查询的增强训练信号,可以进一步提升冷启动推荐的性能。尽管在某个点(40%)之后,添加更多的合成数据并未带来进一步的改善。
5.总结
解决用户与冷启动项目之间缺乏交互的问题对提升推荐效果至关重要。本文提出使用 LLM 来为推荐系统中的冷启动项目生成增强训练信号,使用成对比较提示,利用 LLM 推断用户对一对冷启动项目的偏好。这种与模型无关的设计为冷启动项目提供了有用的训练信号,而不会在服务时引入额外的计算开销。对公共数据集的实验表明,该方法生成了有效的增强训练信号,并改善了冷启动项目的推荐效果。
相关文章:
论文笔记-WWWCompanion2024-LLM as Data Augmenters for Cold-Start Item Recommendation
论文笔记-WWW Companion 2024-Large Language Models as Data Augmenters for Cold-Start Item Recommendation 大语言模型作为冷启动项目推荐的数据增强器摘要1.引言2.前言3.LLMs作为数据增强3.1增强数据生成3.2成对比较损失 4.实验4.1实验设置4.2结果和分析4.3超参数实验 5.总…...
Java 语法新特性(Records、Pattern Matching、Sealed Classes)深度解析(11/17/21)✨
一、Records(Java 16) 📝 核心价值:简化不可变数据载体的定义 // 传统POJO vs Record public record User(String name, int age) {} // 自动生成:构造方法/equals()/hashCode()/toString() User user new User(&qu…...
QUdpSocket的readyRead信号只触发一次
问题 QUdpSocket的readyRead信号只触发一次。 原因 on_readyRead槽函数里必须读出现有数据后,才能触发新的事件。 解决办法 在on_readyRead槽函数里取出数据。 void MainWindow::on_readyRead() {qDebug() << "on_readyRead in";while (m_udp…...
jsherp importItemExcel接口存在SQL注入
一、漏洞简介 很多人说管伊佳ERP(原名:华夏ERP,英文名:jshERP)是目前人气领先的国产ERP系统虽然目前只有进销存财务生产的功能,但后面将会推出ERP的全部功能,有兴趣请帮点一下 二、漏洞影响 …...
测试data_management函数
测试data_management函数 这是我最近正在开发的AI工具信息平台的部门功能模块测试,基于streamlit架构。整理出来与大家分享,也为我以后自己回溯找到资源。 为了测试 data_management 函数并结合 Excel 文件中的 “Tools” 表单内容,我们需要…...
微信小程序---计划时钟设计与实现
微信小程序-计划时钟已上线,欢迎各位小伙伴的测试和使用~(微信小程序搜计划时钟即可使用) 在这篇博客中,我们将探讨如何在微信小程序中设计和实现一个任务管理功能,该功能允许用户添加、删除和查看任务。任务管理系统的核心是基于日期和时间的任务管理,可以设置任务的开…...
深度学习之图像回归(二)
前言 这篇文章主要是在图像回归(一)的基础上对该项目进行的优化。(一)主要是帮助迅速入门 理清一个深度学习项目的逻辑 这篇文章则主要注重在此基础上对于数据预处理和模型训练进行优化前者会通过涉及PCA主成分分析 特征选择 后…...
深入理解HttpSecurity的设计
一、HttpSecurity的应用 在前章节的介绍中我们讲解了基于配置文件的使用方式,也就是如下的使用。 也就是在配置文件中通过 security:http 等标签来定义了认证需要的相关信息,但是在SpringBoot项目中,我们慢慢脱离了xml配置文件的方式,在SpringSecurity中提供了HttpSecurity…...
15增减字符串匹配(贪心)思路解析+源码
文章目录 题目[](https://leetcode.cn/problems/di-string-match/)算法原理贪心证明源码总结题目 假设s="I D I D"也就是增降增降,在0-4中,每两个数存在这种方式数组为【1, 3,2, 4,0】;(如下图) 算法原理 解法:贪心 1.当遇到“I”:选择当前最小的那个数 2…...
Java NIO与传统IO性能对比分析
Java NIO与传统IO性能对比分析 在Java中,I/O(输入输出)操作是开发中最常见的任务之一。传统的I/O方式基于阻塞模型,而Java NIO(New I/O)引入了非阻塞和基于通道(Channel)和缓冲区&a…...
14.7 LangChain Experimental 模块解析:解锁 Auto-GPT 开发新范式
LangChain Experimental 模块解析:解锁 Auto-GPT 开发新范式 关键词:LangChain Experimental、Auto-GPT 实现、自主智能体开发、Agent 架构设计、实验性功能实践 1. LangChain Experimental 模块的定位与核心能力 模块定位解析: #mermaid-svg-4xz2OlZBUFjkBmqw {font-fami…...
wps中的js开发
严格区分大小写 /*** learn_js Macro*/ function test() {Range(D7).Value2Selection.Value2; // Selection.formula "100" }function Workbook_SheetSelectionChange(Sh, Target) {if(Sh.Name Sheet1) {test();}}function test2() {// 把I4单元格及其周边有数的单…...
day16_推荐系统和总结
文章目录 day16_推荐系统和总结一、推荐实现1、基于流行度推荐(掌握)1.1 近期热门商品推荐1.2 个人热门商品推荐 2、基于隐语义模型的协同过滤推荐(了解)2.1 ALS算法介绍2.2 推荐代码 3、基于物品的协同过滤推荐(了解&…...
一文说清楚编码、摘要、加密、公钥、私钥、解密、签名、验签
编码 对信息进行编码,没有信息损失,任何人都能通过编码方式对信息进行解码。例如 ASCII 码,base64 编码。 例如下面是 ASCII 编码表: 摘要 对信息计算摘要值,有信息损失,例如 md5 摘要,sh…...
Repeated Sequence
记suma[1]a[2]a[3]...a[n]。 该序列以a[1],a[2],a[3]....a[n]为循环节,明显的,问题可转化为:s%sum是否为该序列的某个连续子序列和。 断环为链。将a复制一份。 枚举a[i]为左端点的所有区间的和。再查找s是否存在。二分O&#x…...
CT dicom 去除床板 去除床位,检查床去除
1. 前言 医院拍摄患者CT与MRI 图像, 但是CT图像中就会出现检查床的区域,来看CT扫描设备是什么样子的,红色标出区域 可以在图中看到,在头部位置安装有固定头部的类似支架的东西,这个东西拍摄出来时什么样子呢ÿ…...
react 踩坑记 too many re-renders.
报错信息: too many re-renders. React limits the number of randers to prevent an infinite loop. 需求 tabs只有特定标签页才展示某些按钮 button要用 传递函数引用方式 ()>{} *还有要注意子组件内loading触发 导致的重复渲染...
YOLOv8与BiFormer注意力机制的融合:提升多场景目标检测性能的研究
文章目录 1. YOLOv8的改进背景2. BiFormer注意力机制的核心原理2.1 Bi-level Attention结构2.2 路由策略与加权融合 3. YOLOv8与BiFormer的结合3.1 YOLOv8架构概述3.2 BiFormer与YOLOv8的融合策略 4. 实现代码示例5. 结果分析与实验5.1 数据集与实验设置5.2 实验结果 6. 进一步…...
Ubuntu24.04LTS的下载安装超细图文教程(VMware虚拟机及正常安装)
😸个人主页👉:神兽汤姆猫 📖系列专栏:开发语言环境配置 、 Java学习 、Java面试 、Markdown等 学习上的每一次进步,均来自于平时的努力与坚持。 💕如果此篇文章对您有帮助的话,请点…...
c++贪心系列
各位小伙伴们新年好呀,这是年后的第一篇文章,那么还是一样,我们继续学习这个贪心算法。 第一题 题目链接 2418. 按身高排序 - 力扣(LeetCode) 题目解析 代码原理 方法一 1.先创建一个下标数组,将两个数…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
