今天跟大家分享一篇WWW 2025来自香港城市大学和华为诺亚提出的一种基于大模型的zero-shot重排序框架LLM4Rerank。它尝试将LLM的zero-shot学习能力应用于推荐系统的重排序阶段,以灵活地在多个不同方面的指标上取得优秀的重排序效果。
Arxiv版论文链接:https://arxiv.org/abs/2406.12433
参考代码:https://github.com/Applied-Machine-Learning-Lab/LLM4Rerank
背景
LLM4Rerank的研究背景源于推荐系统中重排序(Reranking)的关键作用。重排序能够优化排序模型的结果,提供更相关和个性化的推荐。然而,现有的重排序模型主要关注推荐的准确性(accuracy)。然而在实际应用中,不同场景往往具有不同的评价标准,这包括了诸如多样性(diversity)和公平性(fairness)等其他方面的考量。虽然一些现有的工作在模型设计时考虑了某些多样化指标,但他们设计的模型结构是固定的,因而无法在考虑其他多样化指标的场景下有效运行。因此如何设计一个个性化,可泛化重排序框架,以更好地根据使用场景在重排序阶段同时考虑和平衡多个方面的指标仍是一个挑战。大语言模型(LLMs)的快速发展,特别是其在处理简短上下文的重排序任务中表现出良好的效果,为解决这些问题提供了新的可能性。
方法
本文提出了基于LLM的自动重排序框架LLM4Rerank。具体来说,LLM4Rerank设计了一个自动重排序框架,其中,每个节点代表一个aspect(如accuracy/diversity/fairness)或function(backward/stop)。该框架使用LLM的语义理解能力,无需训练,直接对样本进行迭代式的重排序。同时,LLM也在其中被用于理解当前场景下各种指标的重要性,以在重排序中自动迭代式地根据不同方面评价指标的要求调整重排序结果。本文同时考虑accuracy,diversity和fairness三个方面的性能指标。这些指标将以节点的形式出现在框架中。因此,通过向LLM4Rerank框架中增补新的节点,LLM4Rerank可方便地扩展并支持更加多样化的评价方面。
1)节点设计
LLM4Rerank处理多样化aspect指标的能力依赖于其通用的节点设计。如下图所示,通用的aspect节点主要包含了四项输入:用户信息,重排序候选列表(C, candidate list),重排序目标(G,goal)和 历史重排序结果(H, historical reranking pool)。其中,重排序候选列表即需要重排序的物品集合。重排序目标是一个简短的文本,由使用者输入,代表了本次重排序对不同aspect的侧重(比如“重点关注accuracy,其次是fairness”)。历史重排序结果是当前重排序过程中历史迭代的重排序结果。具体来说,每个aspect节点均有一个预先设计的prompt模板(T):
该模板将上述输入和当前的节点的aspect类型,评估标准等信息总结入prompt,随后LLM便会根据该输入进行一轮重排序。排序后,LLM会输出两个值:一个是当前节点的重排序结果,它将被记录在历史重排序结果(H)中,一个是下一次重排序的节点名称,以指导LLM4Rerank自动地在节点间转移并进行迭代式的重排序。当然,为了使LLM进行反思并拥有自动停止迭代式排序的能力,LLM4Rerank额外设计了两个功能性节点:backward和stop,分别用于让LLM遗忘最近一次排序结果,以及自动停止迭代。
2)自动重排序流程
通过以上的节点设计。LLM4Rerank能够使用LLM以进行自动的迭代式重排序,并根据历史重排序结果H和重排序目标G指导LLM在重排序中平衡地考虑各种aspect指标。最终,当LLM抵达stop节点,或其迭代次数达到预设阈值后,LLM4Rerank将最后一次的重排序结果作为最终结果进行输出。具体来说,LLM4Rerank的重排序流程主要涉及以下三点:
- 设置重排序目标G: 每次重排序开始前,由用户根据本次需求给出当前的重排序目标(比如“重点关注accuracy,其次是fairness”)
- 自动重排序:LLM4Rerank将用户信息,物品候选列表,重排序目标以及历史重排序结果总结入不同节点的prompt模板,以指导LLM在当前节点进行一轮重排序。由LLM指导的重排序不仅会输出一个排序结果列表补充入历史重排序结果中,还会输出进行下一次重排序的节点名称,因此,该次重排序后,LLM4Rerank即可自动转移至下一节点进行下一次的重排序,以根据历史重排序结果不断优化最终结果。
- 停止重排序条件:一旦迭代次数达到了预设阈值,或LLM4Rerank的下一个节点自动指向了stop节点。该次迭代的重排序即终止了。最终的重排序结果为最后一次迭代重排序的结果。 这一流程可以被表述为以下伪代码:
实验
本文在实验部分主要回答三个研究问题:
- RQ1:与其他的重排序框架相比,LLM4Rerank的性能如何?
- RQ2:LLM4Rerank是否可以根据不同重排序目标自动在重排序中权衡不同评估方向的性能?
- RQ3:各模块是否对性能提升有贡献,贡献如何?
数据集
本文在3个常用的推荐数据集ML-1M, KuaiRand, Douban-Movie上进行了实验
对比实验
本文对比了LLM4Rerank与常用的重排序方法的性能,在每个数据集上。本文的GMF模型充当第一次排序模型,并每次输出20个候选物品作为所有重排序模型的输入,重排序模型将进行重排序并输出一个含有10个物品的列表作为重排序结果。最终性能比较如下:
其中,LLM4Rerank-X代表具有不同重排序目标G的变体(A: Accuracy, D: Diversity, F: Fairness, ADF: 均衡地考虑三者)。可以看到,随着重排序目标设置不同,LLM4Rerank在不同指标上达成了差异化的性能。这证明了LLM4Rerank的泛用性和可扩展性。同时,当仅关注一个指标时,LLM4Rerank均取得了最优性能。这证明了LLM的zero-shot语义理解能力足以在小样本情况取得与其他重排序模型相当甚至更好的结果。
权衡性分析
为了验证重排序目标G的作用,本文下变体进行实验:
- DF: 在G的描述中让LLM均衡关注多样性(Diversity)和公平性(Fairness)指标
- D-F: 在G的描述中让LLM主要关注多样性(Diversity),次要关注公平性(Fairness)指标
- F-D: 在G的描述中让LLM主要关注公平性(Fairness),次要关注多样性(Diversity)指标 最终重排序结果如下:
可见,LLM4Rerank可以自动调节节点访问次数,使主要关注的指标对应的节点访问次数增加,以提升对应指标性能。
消融实验
本文采用消融实验验证各模块对模型的贡献:
其中:
- LLM4Rerank-A: 在重排序目标G中设定以准确性(Accuracy)为重排序目标的完整框架
- LLM4Rerank-H: 在完整框架中去掉对历史重排序结果的保存和参照,这会使LLM4Rerank无法在迭代式重排序中参考之前迭代时经过的节点以及其重排序结果。
- LLM4Rerank-AR: 为LLM4Rerank设置一个固定的重排序节点访问路径“Accuracy-Accuracy-Stop”而非让LLM4Rerank每次自动选择下一节点进行迭代。
- LLM4Rerank-N: 去掉Diversity, Fairness, Backward这些节点,让LLM仅能访问Accuracy和Stop节点。
从实验结果可以看出,历史重排序结果的保留有助于LLM4Rerank在迭代中根据之前的结果持续优化当前结果,以达成更好的性能,而自动重排序框架允许LLM分析当前状态,以自适应地调整下一次重排序节点。另外,去掉Backward节点后,LLM4Rerank的性能会下降,这证明了LLM的自我反思也是推理中的有益环节。
此外,本文也给出了一个个简单的case study, 以说明LLM4Rerank如何在不同的重排序目标下自动选择节点访问路径:
超参数分析
最后,本文进行了超参数分析,以验证重排序输入候选物品数量对重排序结果的影响:
可以看出,随着候选物品数量增加,LLM4Rerank在多个指标上均明显下滑。这说明当前LLM面对语义丰富的少样本环境时确实具有很强的语义理解能力,然而,LLM目前还难以在样本丰富,但语义信息相对稀疏的大样本环境下处理复杂的特征关联。
总结
本文提出了一种基于LLM的重排序模型LLM4Rerank,它可以利用LLM的zero-shot语义理解能力进行多指标指导的复杂重排序流程,并具有很强的泛用性和可扩展性。在三个数据集上的实验验证了该框架的性能。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。