当前位置: 首页 > news >正文

论文笔记:Large language model augmented narrative driven recommendations

RecSys 2023

代码:iesl/narrative-driven-rec-mint: Mint: A data augmentation method for narrative driven recommendation.

1 intro

  • 尽管基于历史交互的数据能够有效地提供推荐,但用户在请求推荐时,往往只是对目标物品有一个模糊的概念,或者希望推荐结果能够根据其使用情境而变化,而这些上下文信息通常在历史交互数据中缺失
    • 用户常常会通过长篇叙述式查询(long-form narrative queries)来描述他们的广泛兴趣和情境,从而请求推荐。这类信息访问任务被称为叙述驱动推荐(Narrative-Driven Recommendation, 简称 NDR)
    • 这类叙述性请求在讨论论坛和某些 Reddit 子版块中非常常见,但现有推荐系统对这种复杂自然语言查询的支持仍然严重不足
  • 相较于传统的搜索接口,用户使用自然语言表达复杂主观需求的情况正在显著增加
  • 具有强大语言理解能力的大语言模型(LLMs)的出现,也为满足此类复杂请求带来了可能
  • 论文探索如何将传统用于协同过滤推荐器训练的历史用户-物品交互数据集,重新利用于支持 NDR 任务

2 问题定义

3 方法

  • 核心思想是重新利用丰富的用户-物品交互数据集 I,借助大语言模型(LLM)生成叙述式查询 qu​,从而构造训练数据
  • 3.1 使用 LLM 生成叙述式查询

  • 为了为用户-物品交互数据集 I中的每位用户生成叙述式查询 qu,使用InstructGPT 模型作为查询生成器 Qgen

  • 将用户与项目交互所得的文本\{d_i\}_{i=1}^{N_u}作为 QGen 的 prompt,并指示模型生成一个叙述式查询

LLM根据用户的偏好和评论,模拟这位用户可能在 Reddit 上发出的请求性帖文

3.2 为合成查询筛选项目

  • 核心意思是:生成出来的叙述式查询(narrative query)可能无法代表用户所有兴趣,所以需要对用户的项目集合进行筛选,只保留那些与生成的查询最相关的项目,来训练检索模型
    • 如果你用用户的全部项目\{d_i\}_{i=1}^{N_u}来训练模型,会加入很多与当前查询无关的项目,这会增加噪声、降低训练效果。
  • ——>

3.3 检索模型训练

  • 基于上述合成数据训练了 bi-encodercross-encoder 两种模型
    • Bi-encoder 通常作为第一阶段排序器,能够从大规模项目集合中高效检索
    • Cross-encoder 则允许更丰富的查询-项目交互,常用于 reranking 阶段。
    • 在这两种模型中均使用了一个参数规模为 110M 的预训练 Transformer 模型 MPNet,其结构类似于 BERT。
  • 在 bi-encoder 中,查询和项目分别编码为高维向量:
    • 通过L2 距离对项目进行排序
  • 在 cross-encoder 中,模型同时接收查询和项目作为输入,输出一个打分:
  • 损失函数
  • 测试阶段
    • 先用训练好的 bi-encoder 检索前 200 个项目,再用 cross-encoder 对其重新排序。
    • 实验中对这两个阶段分别评估,分别命名为 BiEnc-MintCrEnc-Mint

4 实验

4.1 数据

  • 使用Pointrec进行评估
    • 包含 112 个真实的叙述式查询
    • 这些项目由众包工人和/或论坛成员进行了分级相关性标注,并经数据集作者进一步验证
    • 目前这是唯一公开的、带人工标注和候选池的 NDR 测试集
  • 项目集合 CCC 包含约 70 万个 POI,每个 POI 提供元信息(如类别、城市)和从 Bing 搜索引擎抓取的简略描述
    • 仅对与查询相关城市与类别(如“餐厅”)中的候选项目进行排序,遵循先前工作中避免无关项目干扰的做法
  • 使用 Yelp 的用户-物品交互数据生成合成查询用于训练
    • 排除所有评论数少于 10 的用户和 POI,确保所选用户为高活跃度用户
      • 这一筛选步骤参考了用户-物品推荐系统中常见的预处理流程
    • 保留评分平均值大于 3/5 且有 10-30 条高于平均值评论的用户,以偏向那些更擅长表达喜好(而非厌恶)的用户
      • 这些用户的兴趣也更适合通过生成器建模。最终筛选后,Yelp 数据集中保留了 45,193 个用户
    • 从中随机选出 10,000 位用户生成合成查询。对每位用户,我们从其 10 条评论中随机选一句话,组成 prompt
    • 最终生成约 60,000 条训练样本
      • 生成所有查询的成本约为 230 美元

4.2  结果

http://www.lqws.cn/news/477667.html

相关文章:

  • 学习设计模式《十四》——组合模式
  • [计算机网络] 局域网内的网络传输
  • #### es相关内容的索引 ####
  • 【期末笔记】高频电子线路
  • 双向长短期记忆网络(BiLSTM)
  • 如何用AI开发完整的小程序<8>—让AI制作具体功能
  • KES数据库部署工具使用
  • 《HTTP权威指南》 第7章 缓存
  • uni-app项目实战笔记21--uniapp缓存的写入和读取
  • 药房智慧化升级:最优成本条件下开启地市级医院智慧医疗新变革
  • Ragflow 源码:ragflow_server.py
  • rust单体web项目模板搭建
  • vim学习流程,以及快捷键总结
  • 微服务网关/nacos/feign总结
  • Maven:依赖管理就像乐高拼装的艺术
  • Vmware WorkStation 17.5 安装 Ubuntu 24.04-LTS Server 版本
  • 软件工程核心知识全景图:从需求到部署的系统化构建指南
  • 2025年EAAI SCI1区TOP,基于低差异序列的仿果蝇无人机地下环境路径规划算法,深度解析+性能实测
  • 无人机表演越来越火,C端市场大爆发
  • 信息安全管理与评估2025湖北卷路由部分答案
  • AI产品经理的定义边界与价值重构
  • NotePad++ 怎么没有找到插件管理?
  • RN(React Native)技术应用中常出现的错误及解决办法
  • 105. 从前序与中序遍历序列构造二叉树
  • DRTM动态度量信任根的POC概念验证
  • 优化通义大模型推理性能:企业级场景下的延迟与成本削减策略
  • YSYX学习记录(十一)
  • DAY 39 图像数据与显存
  • ProtoBuf:通讯录4.0实现 序列化能⼒对⽐验证
  • Rust 引用与借用