©PaperWeekly 原创 · 作者 | Maple小七

单位 | 北京邮电大学

研究方向 | 自然语言处理

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

论文题目:

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

论文链接:

https://arxiv.org/abs/2205.10569

代码链接:

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

Introduction

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

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

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

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

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

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

HLATR

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

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

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

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

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

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

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

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

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

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

Experiments 

3.1 Setup

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

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

3.2 Results

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

3.3 Analysis

3.3.1 Multi-stage Feature Coupling

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

3.3.2 Architecture analysis of HLATR

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

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

3.3.3 Computational Cost of HLATR

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

3.3.4 Hyper-parameters of Transformer

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

总结

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

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

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

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

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

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

  1. ICASSP2023论文分享 | DST:基于Transformer的可变形语音情感识别模型

    本次分享华南理工大学.优必选研究院等合作在ICASSP2023会议发表的论文<DST: Deformable Speech Transformer for Emotion Recognition ...

  2. 微软发布史上最大NLG模型:基于Transformer架构,170亿参数加持

    2020-02-11 18:50 导语:史上最大! 近年来,BERT.GPT-2等深度学习语言模型,极大地提高了问答.摘要.人机对话等下游自然语言处理任务的性能. 而今天,微软研究院重磅发布了有史以来 ...

  3. 微软分享史上最大基于Transformer架构的语言生成模型

    导语:英伟达的"威震天"现在只能屈居第二了. 微软AI&Research今天分享了有史以来最大的基于Transformer架构的语言生成模型Turing NLG(下文简称为 ...

  4. CVPR 2022 | PTTR: 基于Transformer的三维点云目标跟踪

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨罗志鹏 来源丨商汤学术 导读 在CVPR 2022上,商汤研究院团队提出了基于Transform ...

  5. WWW 2022 | 弯道超车:基于纯MLP架构的序列推荐模型

    ©作者 | 于辉,周昆 来源 | RUC AI Box 本文主要提出了一个基于纯 MLP 架构的序列化推荐模型,其通过可学习滤波器对用户序列进行编码,在 8 个序列化推荐数据集上超越了 Transfo ...

  6. 阿里推出文本搜索排序新技术,登顶国际权威NLP榜单MS MARCO

    3月28日,阿里巴巴团队以0.450的得分,刷新了国际权威自然语言处理(NLP)榜单MS MARCO短文本检索排序任务历史纪录.据悉,该团队最新研发的文本检索及排序技术已通过阿里云智能搜索产品Open ...

  7. Transformer霸榜全景分割任务,南大、港大提出一种通用框架!

    来源:机器之心 本文中,来自南大.港大.英伟达等机构的研究者提出了一个使用 transformer 进行端到端全景分割的通用框架,不仅为语义分割与实例分割提供了统一的 mask 预测工作流程,而且使得 ...

  8. 一文总结微软研究院Transformer霸榜模型三部曲!

    [导读]本文将主要介绍微软研究院提出的三大Transformer霸榜模型,分别是:开创Transforer新时代的Swin Transformer, 进阶版的Swin Transformer -- C ...

  9. 霸榜各大CV任务榜单,Swin Transformer横空出世!

    1. ImageNet-1K的图像分类 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 一元@炼丹笔记 ...

  10. 拿transformer做E2E全景分割,这个通用框架霸榜挑战赛,南大、港大联合提出

    视学算法报道 机器之心编辑部 本文中,来自南大.港大.英伟达等机构的研究者提出了一个使用 transformer 进行端到端全景分割的通用框架,不仅为语义分割与实例分割提供了统一的 mask 预测工作 ...

最新文章

  1. torch量化的流程
  2. seafile服务器版能安装在虚拟机上,seafile安装教程linux
  3. Open Neural Network Exchange(ONNX)概述
  4. pyqt5中的对话框
  5. 2字段添加注释_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  6. AcWing 798. 差分矩阵
  7. 图像3A算法及伽马校正原理及部分实现
  8. 蓝桥杯 错误票据——2013年省赛C/C++ A组
  9. 贪吃蛇代码c语言100行,贪吃蛇代码-C语言.doc
  10. 如何制作和使用自签名证书
  11. JAVA操作Excel(POI、easyPOI、easyExcel)
  12. js php活动倒计时,JS活动倒计时代码
  13. 立志高远;毕业后计划
  14. html表单设计姓名性别,编写一个表单页面census.html,让用户填写姓名、性别(男女选择)、兴趣(运动,读书,音乐,书法及其他)...
  15. 利用阿里云镜像加速器对docker镜像源加速
  16. python群控手机过检测_手游群控检测规避封号攻略,工作室内部亲授
  17. redis的map和zset写入50万个数据的测试结果
  18. laravel生成微信公众号带参数二维码并响应扫描带参数二维码
  19. 美国摇滚巨星自学成为程序员:惊叹于Python 的强大功能
  20. javaweb接入第三方微博登陆

热门文章

  1. 搭建一个简单的webpack(一)
  2. 串口访问U盘/TF卡模块
  3. 【小程序】各种功能及获取数据/接口
  4. 2020 = 1024 + 996
  5. msbuild不是内部或外部命令
  6. 正则表达式的(日语)文字全半角,以及在js和java中的应用
  7. Linux内核中file_operations结构体理解
  8. 飞浆EasyDL半自动标注语义分割及数据导出
  9. 【深度学习与计算机视觉】12、迁移学习
  10. 大数据慎行,数据管理要落实到KPI