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

<论文>(微软)避免推荐域外物品:基于LLM的受限生成式推荐

一、摘要

        本文介绍微软和深圳大学合作发表于2025年5月的论文《Avoid Recommending Out-of-Domain Items: Constrained Generative Recommendation with LLMs》。论文主要研究如何解决大语言模型(LLMs)在推荐系统中推荐域外物品的问题,提出了 RecLM-ret 和 RecLM-cgen 两种方法。

译文:

        大语言模型(LLMs)因其在用户交互方面的变革性能力,在生成式推荐系统中展现出了潜力。然而,确保它们不推荐域外(OOD)物品仍然是一个挑战。我们研究了两种不同的方法来解决这个问题:RecLM-ret,一种基于检索的方法;以及RecLM-cgen,一种受限生成方法。这两种方法都能与现有的大语言模型无缝集成,以确保域内推荐。在三个推荐数据集上进行的全面实验表明,RecLM-cgen在消除域外推荐的同时,在准确性上始终优于RecLM-ret和现有的基于大语言模型的推荐模型,使其成为更优的采用方法。此外,RecLM-cgen保持了强大的通用能力,并且是一个轻量级的即插即用模块,便于集成到大型语言模型中,为社区提供了有价值的实际益处。

二、核心创新点

        论文的目标是避免推荐域外item,使基于大模型的推荐系统在工业服务中更可靠。从根本上说,有两种范式可以实现这一点:域内检索范式和受限生成范式。作者设计了一个简单的框架,只需要对backbone大模型进行小幅度的修改就能够适配这两种方法。

1、特殊item指示标记符(special item indicator token)

        作者在backbone模型的词汇表中添加了两个特殊的token:<SOI>和<EOI>。这些token分别表示item开始和item结束,即start-of-item和end-of-item。将使用推荐数据集进行微调的大模型称为RecLM,则每当RecLM推荐一个item时,它首先会输出<SOI>标记,随后输出<EOI>标记,例如序列:<SOI>item标题<EOI>。通过利用这两个特殊标记,大模型的生成过程可以分为两个不同的阶段:item生成阶段和通用文本生成阶段。当大模型输出一个<SOI>时,意味着item生成阶段的开始,而输出<EOI>时则意味着item生成阶段结束,模型转换回通用文本生成阶段。在这个框架的基础上,在item生成阶段可以采用域内检索范式(得到RecLM-ret)或者受限生成范式(得到RecLM-cgen),以防止生成预定义域之外的item。

2、RecLM-ret

        在这种方法中,作者首先通过将目标域中每个item的标题、描述和类别信息连接起来作为输入文本,在使用bge-m3模型为每个item(记为 i )生成embedding嵌入(记为)。由此,可以得到领域item的基础嵌入

        接着,当RecLM输出<SOI>标记时,提取与该标记相关联的最后一层隐藏层表示。r然后应用一个投影层将和与生成的基础嵌入集合的向量空间对齐。最后根据相似度得分来检索推荐的item,检索到的item标题和结束标记<EOI>将与当前生成的文本连接起来。

        训练阶段,作者使用一个prompt模板来将用户行为转化成监督微调数据的样例<Instruction:X, Response:Y>。包含了用户历史交互的item列表,这将作为Instruction:X中的用户配置信息。是被推荐给用户的包含k个item的列表,这将作为Response:Y的标签。此外,作者还进行了一定的数据增强。令表示基线模型的可训练参数,有:

        其中,为大模型训练损失,。接着,作者构造了一个检索任务的损失来训练模型学习如何检索相关的item。首先,获取所有在Response:Y中的k个item的隐藏层向量,然后将这些向量输入到投影层,随后,在投影后的向量和所有item的嵌入集合  之间进行相似度匹配。由此损失函数可表示为:

        其中,是softmax函数,目的在于在所有的item中最大化真实item的相似度。最后,总的训练损失为:

        其中,表示权重超参数。

3、RecLM-cgen

        在这种方法中,作者使用前缀树约束生成的策略。首先,根据目标域中的所有item标题构建前缀树。在生成阶段,一旦大模型生成<SOI>标记,就激活受限生成,从而将大模型的生成空间限制在领域内item的标题上。在生成<EOI>标记时停用受限生成,从而使得模型能够过渡到常规的通用文本生成阶段。

3.1 作用域掩码训练(Scope Mask Training)

        考虑到在前缀树上进行token解码时,模型的下一个token概率并非针对整个token词汇表,而是限制在前缀树中可见的token子集,因此作者在RecLM-cgen的训练过程中引入作用域掩码损失,以保持训练和推理之间的一致性。在计算与item标题相关的token的损失时,softmax函数的分母中仅包含前缀树中的token:

        其中,是一个函数,给定一个前缀token序列,它会根据指定的推荐域返回可能的下一个token集合。如果当前的token 在通用的文本部分,例如在<EOI>后面出现,则该函数返回整个token词汇表。如果当前的token 在item标题部分,即出现在<SOI>和<EOI>之间,函数返回基于前缀树的候选token集合。

3.2 多轮对话数据(Multi-round Conversation Data)

        作者观察到,如果只包含像<Instruction:X, Response:Y>这样的单轮监督微调样本,模型往往会倾向于给出单轮推荐,这会显著降低模型的通用能力。因此,作者将大约10%的多轮对话数据样本纳入到训练集中。这些样本是通过从ShareGPT语料库中随机选择一个数据样本,并将其与一个单轮推荐任务样本相结合而创建的。推荐任务的样本有50%的概率出现在ShareGPT对话之前,50%的概率出现在其之后。

 

相关文章:

  • VTK|类似CloudCompare的比例尺实现2-vtk实现
  • 如何用Redis实现分布式锁?RedLock算法的核心思想?Redisson的看门狗机制原理?
  • C++:二叉搜索树
  • MCP(Model Context Protocol,模型上下文协议)
  • 工具学习_模糊测试
  • Python+大模型 day01
  • Maven 下载安装与配置教程
  • 为什么go语言中返回的指针类型,不需要用*取值(解引用),就可以直接赋值呢?
  • Python调用SQLite及pandas相关API详解
  • Profibus DP主站转Modbus RTU/TCP网关接艾默生流量计与上位机通讯
  • ajax提交form表单数据举例
  • Ubuntu24.04编译ORB_SLAM的一系列报错解决
  • LeetCode 热题 100 105. 从前序与中序遍历序列构造二叉树
  • 季报中的FPGA行业:U型反转,春江水暖
  • Cursor 0.5版本发布,新功能介绍
  • SQL看最多的数据,但想从小到大排列看趋势
  • 家庭宽带的内网穿透实践
  • PyQt5完整指南:从入门到实践
  • 三维CAD皇冠CAD(CrownCAD)建模教程:工程图模块二
  • QT+opencv实现卡尺工具找圆、拟合圆
  • 沪喀同心|为新疆青少年提供科普大餐,“小小博物家(喀什版)”启动
  • 经济日报:美国滥施汽车关税损人不利己
  • 视频丨美国两名男童持枪与警察对峙,一人还试图扣动扳机
  • 外交部亚洲司司长刘劲松会见印度驻华大使罗国栋
  • 这一次,又被南昌“秀”到了
  • “春申阡陌”漆画展:将传统漆艺融入现代创作