霸榜MS MARCO!基于Transformer的混合列表感知排序模型

2023-11-08 22:30

本文主要是介绍霸榜MS MARCO!基于Transformer的混合列表感知排序模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

33d110698a4035ec800b951470279037.gif

©PaperWeekly 原创 · 作者 | Maple小七

单位 | 北京邮电大学

研究方向 | 自然语言处理

本文是当前 MS-MARCO Passage Ranking 排行榜 Top1 模型的刷榜策略之一,该模型由阿里达摩院于今年 3 月提交,目前已霸榜 3 个月。

0d24fdd87cb556d28abcd360f430a8df.png

论文题目:

HLATR: Enhance Multi-stage Text Retrieval with Hybrid List Aware Transformer Reranking

论文链接:

https://arxiv.org/abs/2205.10569

代码链接:

https://github.com/Alibaba-NLP/HLATR

601c60df3153bb94cf6fe4335becfe99.png

Introduction

由于数据规模和计算资源的限制,当前最先进的文本检索系统通常遵循召回-排序范式 (retrieve-then-reranking),在预训练语言模型的背景下,召回和精排模型通常被实例化为下图所示的表征式模型 (representation-focused) 和交互式模型 (interaction-focused)。

34526f7579dbdceeb9fa7f684d9ad842.jpeg

虽然在检索系统中,召回和排序模型是紧密关联的,但是目前已发表的工作大多仅致力于优化整个检索系统的单个模块。也就是说,面向召回模型的优化工作大多不会考虑排序模型的性能,反之亦然。虽然最近也出现了一些联合优化召回模型和排序模型的工作,比如百度的 RocketQAv2、ERNIE-Search 和微软的 AR2,但是这些工作的出发点都是利用表达能力更强的排序模型来提升召回模型的性能。

那么,除了采用知识蒸馏、对抗训练等方式来联合优化召回模型和排序模型,还有没有其他有效的方式让召回和排序这两个模块得到充分的交互呢?

直观上来说,虽然召回模型和排序模型的优化目标本质上都是估计 query 和 document 的语义相关性,但是由于训练过程中负样本规模和特征的差异,召回模型更偏向于学习粗粒度相关性,而排序模型更偏向于学习细粒度相关性。这里需要注意的一点是,细粒度相关性和粗粒度相关性并无优劣之分,它们的关系实际上有点像模型鲁棒性和模型泛化性的关系。对于单模型来说,从千万级的文档库中直接找到最相关的文档是一项非常困难的任务,因此我们需要将这个困难的任务分解成两个更简单的子任务:召回、排序,从而实现细粒度相关性建模任务和粗粒度相关性建模任务的解耦。

基于上述分析,我们可以猜想召回和排序的特征实际上是有一定的互补性的,如果我们可以有效地融合召回和排序的特征并用来对候选文档集合做进一步的重排序,是不是能够进一步提升整个系统的排序性能呢?

基于此,本文作者在传统的召回-排序两阶段检索系统的基础上,提出了第三个重排阶段,该阶段融合了粗粒度召回特征和细粒度排序特征,进一步改善 query 和候选 document 的相关性打分,从而提升整个系统的检索性能。本文作者将该三阶段重排序的模型命名为混合列表感知排序模型 (Hybrid List Aware Transformer Ranker, HLATR) ,如下图所示。

406e36fb5dca82d89036ec814dde3fe5.jpeg

4db0c89e1a26ba5a617178fdbee5683e.png

HLATR

HLATR 采用 Transformer Encoder 作为特征融合结构,我们知道原始 Transformer 的输入包含编码字词信息的 token embedding 和编码位置信息的 position embedding,但这并不代表 Transformer 只能编码文本序列。在 HLATR 中,作者将排序模型顶层输出的文档表示向量作为 HLATR 输入的 token embedding:

ae41bbee7c975a31d679e5d96b2ce0fb.png

将召回模型输出的排序序号 (ranking order) 作为对应文档的 position embedding:

d55c1b85c0eef943a50e22ccc408522d.png

其中 和 均为参数矩阵。在训练过程中,Transformer Encoder 的底层输入为 :

fad94d08f016edb1880c0b84ecb088df.png

其中 为候选文档集合的大小。HLATR 的训练目标是优化输入文档的打分排序,因此每个位置的输出为 和 的打分:

57d256419f3c3dd414d9e37a1e6d1c4b.png

得到打分之后,作者采用 listwise 的对比损失优化模型:

cf2702cc8a12980977465ba281df8430.png

综上,HLATR 模块的整体结构如下图所示:

3f54a0fd160fb0fadd0201d869b345ab.jpeg

从训练目标来看,HLATR 实际上也是一种排序模型,因为它和第二阶段的排序模块一样,输入为 query 和 document list,输出 query 和每个 document 的相关性打分。但与第二阶段的排序不同,HLATR 排序阶段有如下的三大特点:

1. HLATR 的输入并不是纯文本,而是召回模型输出和排序模型输出的融合特征,因此比起第二阶段排序的 token 级输入,HLATR 的输入是高度语义化的。另外值得注意的是,HLATR 引入召回特征的方式是和召回模型本身无关的,我们可以随意地将召回模型替换为 BM25 这种非神经网络的字面匹配模型。

2. 得益于 Transformer 的特征交互能力,HLATR 输入的文档特征之间从底层开始就进行了充分的特征交互。因此 HLATR 做的是 listwise 级别的相关性建模,而第二阶段排序的相关性建模大多只能做到对输出的相关性打分进行 pointwise 或 pairwise 建模。

3. 得益于高度语义化的文档表示,HLATR 有着更大的负样本规模。HLATR 输入的每个位置都表示着一个文档,由于 Transformer 支持长序列输入,在训练过程中我们可以考虑输入召回模型返回的整个文档集合,而不是像第二阶段排序那样还需要随机抽样负样本来构造训练集。

e807bbb88c5ac25ecd340cac177e0d0a.png

Experiments 

3.1 Setup

作者在 MS-MARCO 的 Passage Ranking 数据集和 Document Ranking 数据集上进行了对比实验。为了验证 HLATR 的有效性和鲁棒性,作者选择了不同的召回模型和排序模型进行实验,其中召回模型包括了稀疏检索模型 BM25 和稠密检索模型 coCondenser 以及 ANCE,排序模型包括了 BERT-base/large 和 RoBERTa-base/large。实验参数如下表所示,可以发现比起召回和排序,HLATR 本身的参数量并不大。

6865daa2658f7594a0bb73ed1aa52b86.jpeg

另外,为了验证上述思考和猜想的正确性,作者也为 HLATR 设置了一个简单的基线策略:将召回打分和排序打分做一个线性加权融合,该策略被命名为 WCR (Weighted Combination of two-stage Ranking):

4150a9c29f35d255d888966897dcbe47.png

3.2 Results

作者的实验结果如下表所示,我们可以发现在不同的实验设置下,HLATR 的性能均超越了两阶段排序结构和 WCR 策略,说明 HLATR 带来的性能提升对模型类型和模型大小来说均是鲁棒的。另外,WCR 策略实际上也能够带来小幅度的稳定提升,这也说明我们之前做出的猜想是正确的。

b0c0110574cee70df20eff4ab5df184c.jpeg

3.3 Analysis

3.3.1 Multi-stage Feature Coupling

为了进一步分析召回特征和排序特征的重要性,作者对 HLATR 的两部分特征输入进行了消融实验。如下表所示,w/o retrieval 表示去掉了召回模型提供的排序特征,w/o ranker 表示将排序模型提供的特征替换为了召回模型输出的 query 表示和 document 表示的 Hadamard 乘积。从结果上可以看到,去掉任何特征都会影响 HLATR 的性能,其中去掉排序特征的影响更大。

86338ec4e06b9a47aff95e882b00a7f4.jpeg

3.3.2 Architecture analysis of HLATR

作者也对 HLATR 的模型结构和训练目标进行了对比实验,如下表所示,HLATR-linear 表示将 transformer 结构替换成了一个简单的 ReLU 激活的两层 MLP,HLATR-bce 表示将对比损失替换为了如下的二元交叉熵损失:

23f23b86796ec6df898cd310051b232a.png

可以发现,将模型结构替换为了简单的 MLP,模型性能仅仅掉了 0.2pp,说明 HLATR 的收益并不主要依赖于引入的额外参数以及模型结构的改进。将训练目标替换为二元交叉熵损失后,模型性能有近 1pp 的跌幅,这说明比起分类损失,对比损失更适合用于排序任务,因为排序任务本质上其实是一个类别极度不平衡的分类任务。

2cfd8f2e03ec40e12335d8ca57cbec66.jpeg

3.3.3 Computational Cost of HLATR

使用 HLATR 进行重排序的一个可能的担忧是它可能会带来额外的时间开销,因此作者也测试了加入 HLATR 的检索系统不同模块的计算开销。如下图所示,HLATR 的时间开销实际上远低于召回和排序的时间开销,因为 HLATR 的参数量少且高度并行化,所以 HLATR 增加的推理时间是可以忽略不计的。

f086e565618ecf4fdd11f46e0167f1cf.jpeg

3.3.4 Hyper-parameters of Transformer

最后,作者对 HLATR 所使用的 Transformer 的参数量进行了消融实验。如下表所示,作者对比了不同层数和不同维度的模型表现,可以发现增加层数并没有取得更优的表现,而增加维度反而会有负面作用,这说明 HLATR 并不需要很大的参数量,较小的层数和较小的维度就可以取得很好的表现,这也许是因为 HLATR 输入的特征已经高度语义化的缘故。

6af7e96b698002238ba93cfd5da85303.jpeg

22be8e8eda960214923834d41c152213.png

总结

总体来说,HLATR 最大的收益点主要就在于文档间充分的 listwise 建模,这更接近于排序任务的真实目标。不可否认的是,HLATR 的有效性和实用性都相当不错,但不知道作者是否受到了 SIGIR 2020 的 SetRank 的启发。因为 HLATR 的设计和 SetRank 非常相似,甚至可以说是 SetRank 在预训练时代下的简化版,HLATR 中以位置编码的形式引入召回特征的设计,以及文档特征矩阵的计算方式与 SetRank 几乎是完全一样的,只是编码器和损失函数不同而已,然而 HLATR 并没有引用 SetRank 原文。

更多阅读

525697d8bf9a05dede34740feb89519e.png

c650600dd05cc00a4285cdbc6c1b5e3b.png

fa9a0f2e5b22a35b38bfa0c07b02110b.png

025a6eb4011860222b375ba020e2ad7d.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

0e0a778e23dc72947638f1f9daf99413.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

a591935cdb4f7422e5d78d52e5600eca.jpeg

这篇关于霸榜MS MARCO!基于Transformer的混合列表感知排序模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372868

相关文章

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python中lambda排序的六种方法

《Python中lambda排序的六种方法》本文主要介绍了Python中使用lambda函数进行排序的六种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1.对单个变量进行排序2. 对多个变量进行排序3. 降序排列4. 单独降序1.对单个变量进行排序

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig