RocketQAv2阅读笔记(#问答系统 #NLP #检索)

#问答系统 #NLP #检索

知乎博客:RocketQAv2 阅读笔记 - 知乎

百度的检索技术厉害的原因:现实中 海量的用户历史数据、强大的中文ERNIE预训练模型、各种创新的模型训练策略。其中RocketQA v2便是其一。

先前,自己工作中,也有使用过RocketQA v1模型(策略),并完成相关业务。特此拜读v2论文RocketQAv2: A Joint Training Method for Dense Passage Retrieval and Passage Re-ranking》--EMNLP2021

1.Background:

在QA检索中,passage retrieval passage re-ranking 是QA召回的一个流行的pipeline的两个模块。通常是在dense passage retrieval 后面加一个passage re-ranker 来提升 dense passage retrieval 召回的效果。这两部分性能的共同作用,最终决定了QA检索性能。传统的方法使用迭代优化的思想,即固定其中一个模型来优化另一个模型。然而,研究表明,如果两者的共同优化训练联合训练),那么将有助于提升系统的整体性能。

2. Motivation:

然而,联合训练的最大难题是如何解决retriever and re-ranker训练方式的不一致的问题。

具体的,retriever 通常通过采用in-batch 负采样来训练,以期望最大限度地提高positive样本的概率,最小限度地减少采样得到的negatives样本的概率。retriever 一般通过在一个list规模的样本中拔高正样本的概率来训练,即listwise的训练方式。

re-ranker 通常以根据单一样本(point)的具体类别(或打分)或者一个正负样本对(pair)的正负对比关系 来训练模型的,即pointwise 或pairwise的训练方式。

为了解决联合训练的问题,于是文章提出了RocketQAv2 这个可以联合训练retriever和 re-ranker的训练策略。RocketQAv2主要由 dynamic listwise distillationhybrid data augmentation strategy两部分组成。

通过将retriever和re-ranker的训练方式都统一为listwise模式,于是dynamic listwise distillation机制被提出来,从而实现retriever 和the re-ranker的联合训练。

因为listwise训练方式,需要多样化的、高质量、可以更好地代表整个语料库中所有passage分布的训练list样本。于是一个能更有效构建listwise训练数据的数据扩充方法hybrid data augmentation strategy被提了出来。

3. Contributions

  • 首次提出了一种dense passage retriever 和passage re-ranker 的联合训练的方法 RocketQAv2
  • 我们通过dynamic listwise distillation 和hybrid data augmentation 来支持该joint learning approach。
  • 实验表明,RocketQAv2在MARCO and Natural Questions datasets 上的有效

 

4. Methodology 

4.1预备知识

4.1.1dense passage retrieval(双塔模型)

给定一个query q,retrieval功能是从库中整体的M个文本passage中检索出top k个最相关的passage。retrieval 一般使用 dual-encoder(双塔模型)实现功能。

具体的,分别计算 query 和 passage的embedding EQ(·)和EP(·),以及通过embedding 点积形式计算文本相似性。

Tip: 一般双塔模型训练后,会第一时间推理库中所有passage为embedding存储起来,并为每个文本和embedding建立索引。从而实现一次双塔embedding推理,多次检索召回的目的,以减少时间。

4.1.2 passage re-ranker(单塔模型| cross-encoder)

retrieval 检索完对应的候选passage列表后,一般会使用re-ranker预测列表中passage的正负置信度。通过从候补正例中剔除负例,或增加强负例的方式,调整listwise中样本的label,提高listwise 数据质量。通过使用re-ranker产生的listwise 数据,再次训练更优质的retrieval 。

 re-ranker一般基于cross-encoder(CE)。

cross-encoder能够评估query和passage列表相关性分数s(q,p),测量候选passage p与query q的语义相关性水平。

在re-ranker一般基于cross-encoder (CE),CE 可以更好地捕获passage和query之间的语义交互。但是相比于 dual-encoder ,CE也需要更多的计算工作量。

re-ranker用[SEP]拼接q和p并输入到CE中,将CE的[CLS]embedding输入一个MLP(多层线性网络)中,最终得到q和p相关性得分Sce(q,p)。

4.1.3 传统训练方式

dense passage retrieval 和passage re-ranking 通常以一种单独训练,或者迭代训练方式进行学习的(即,固定一个,然后优化另一个)

4.2 Dynamic Listwise Distillation

一般基于cross-encoder的re-ranker性能更强大,因此通常是将模型知识从 re-ranker 蒸馏进retriever。也就是,re-ranker是teacher 模型,retriever是student 模型。

但是两者通常独立训练,re-ranker的参数是被冻结的。这也就无法实现共同优化这两部分的目的,这两部分也无法达到彼此相互优化的作用。Dynamic Listwise Distillation便是为联合训练而提出的。

步骤

关于为何取名为Dynamic Listwise Distillation的原因:

Listwise :retriever和re-ranker都是用Listwise 方式训练的。

Distillation:联合训练的过程是一个模型蒸馏的过程。

Dynamic :这个训练的过程中,teacher 和 student是共同进行参数更新优化的,在训练teacher的时候,student通过学习soft label也实现了参数更新。

传统的,训练好teacher后,teacher参数固定后,进而进行student的指导训练。

4.3 Hybrid Data Augmentation

为了执行Dynamic Listwise Distillation,我们需要为每个query生成listwise 训练的passage list。并且,passage list应该是由多样化的、高质量的passage组成,这样才能逼急现实情况中passage库的数据分布。

研究表明,passage list包含hard negatives(极度像正样本的难的负样本)是很重要的。因为weak negatives 很容易被学习到,是不会为这两个模块增加额外收益的。前人有使用randomly sampled hard negatives和denoised hard negatives这两种数据构造策略。

Hybrid Data Augmentation是通过综合randomly sampled hard negatives 和denoised hard negatives这两种方法后,得到的混合的方法。

结合图2,描述Hybrid Data Augmentation的实现步骤:

  1. 先拥已经训练好的RocketQAv1 retriever和RocketQAv1 reranker。这两个模型是该作者上一篇论文RocketQAv1中提出的。
  2. 接着利用RocketQA retriever从语料库中检索前n个passage。
  3. 获取undenoised样本:从n个passage中随机抽取undenoised hard negatives,其中也包括了ground-truth positives(就是人工标注为正例的样本)。
  4. denoised instances的实例获取方法: 使用RocketQA reranker来剔除和query相关性打分低的passage。也取出那些和query相关性打分高的预测为positives的denoised positives。

 Hybrid Data Augmentation与前人方法相比,其利用了更多的方法(undenoised and denoised)来生成positives和negatives,提高了list样本的多样性。并且重点关注了hard negatives的构建。

4.4 Training Procedure

步骤:

  1. 拥有在RocketQA中,已经训练好的retriever和re-ranker
  2. 训练好的retriever和re-ranker初始化RocketQA v2 中retriever and re-ranker。利用 RocketQA 中的retriever and re-ranker 通过Hybrid Data Augmentation生成listwise训练数据。
  3. 利用dynamic listwise distillation,联合训练retriever 和re-ranker。
  4. 训练结束后,在QA检索的pipeline中,便可结合retriever and re-ranker来进行推理(召回、精排等操作)。

RocketQA这里训练好的retriever和re-ranker,分别为RocketQA中步骤1和步骤2处得到的模型,非全步骤训练的最强模型。也不一定非得RocketQA中的模型,也可以是其他已经训练好的召回模型精排模型替代。

4.5 RocketQAv2 VS RocketQA

首先,RocketQA也是蒸馏的过程,不过采用的是teacher对样本进行打标签来蒸馏Student(通过产生hard pseudo labeled data)。而v2使用soft labels的蒸馏方式。

其次,RocketQA无法实现两个模块的联合训练,只能固定re-ranker来蒸馏优化retriever。

最后,RocketQA只使用了denoised hard negatives的数据构造方式。而v2的Hybrid Data Augmentation综合了randomly sampled hard negatives 和denoised hard negatives这两种方法。构建了更多样和高质量的训练数据。

5. Experiments

5.1 Main results

关键的参数:构建listwise数据时候,the ratio of the positive to the hard negative is set to 1:127 on MSMARCO and 1:31 on NQ.

Passage retrieval results on MSMARCO and Natural Questions datasets.

  1. 我们可以看到RocketQAv2 retriever和PAIR的表现大大优于其他基线。PAIR是与RocketQAv2同时进行的工作,它通过对域外数据的预训练来获得改进。
  2. RocketQAv2在MRR@10和Recall@5的指标上优于PAIR,我们认为 dynamic listwise distillation 使the retriever 能capture the re-ranker ability of passage ranking at top ranks.

Results on Passage Re-ranking

细节:

RocketQAv2 re-ranker 有基于BM25 retriever 和 RocketQA retriever 以及RocketQAv2 retriever 初始化的。

  1. 倒数第1,2两行,基于RocketQA的retriever得到的检索passage list 数据,分别使用RocketQA和RocketQAv2的re-ranker进行联合训练,发现RocketQAv2的re-ranker性能领先了0.9个百分点,这也证明了经过联合训练的re-ranker的性能更强。

5.2 Ablation analysis

  • Dynamic 蒸馏 or Static蒸馏 ?

结论:静态蒸馏效果不及动态蒸馏(表第2行数据)

  • Listwise or Pointwise for re-ranker?

将re-ranker从listwize转换为pointwise,会导致性能下降。listwize训练方法比pointwise更适用于我们的联合训练架构,因为它可以更好地模拟dynamic listwise distillation中的相关性分布。

  • The Effect of Hybrid Data Augmentations Denoised Instances

去掉训练样本中的去噪样本会导致性能下滑。这表明从不同方式生成的训练数据能更好地代表了整个passage库中所有passage的分布,并提高了性能。

  • The Number of Hard Negatives

对每个query的强负例个数的增加会带来检索模型与精排模型性能的提升。

6.附--扩展知识

6.1 Cross-Encoder 和 Dual-encoder 的优缺点

时间上:

Dual-encoder(双塔)一般是面向千万级别的检索库,速度更快。

因为可以一次性对库中所有的文本生成embedding并建立索引存储。后面,面对不同query,都无需在进行embedding的推理,节省了大量时间开销。

而Cross-Encoder一般只用到的100或1000级别的数据规模上,因为对于不同的query,Cross-Encoder都得反复的计算passage的embedding。而Dual-encoder 一次inference ,多次使用

Cross-Encoder为何性能更优秀,并常被用于精排模型中?

其实两者都可以对检索样本进行打分,但是Cross-Encoder往往更准确。

查了很多资料,没找到答案。

个人认为,Cross-Encoder通过【SEP】拼接句子对的方式,可能符合BERT等模型的预训练任务NSP有关。NSP加持了模型的性能。

还有就是,同样的数据,训练单一的encoderCross-Encoder的,可能比同时训练两个encoder的双塔模型,更容易。

两者应用的选择上:

当需要对小规模的一组要进行的要评分的句子对时,就可以使用Cross-Encoder。

比如,您有 100 个句子对,您想获得这 100 个句子对的相似度分数。

当需要在向量空间中,对大量的句子embedding以进行快速比较时,都会使用Dual-encoder。例如信息检索/语义搜索或聚类。

Cross-Encoder 比双塔有更高的性能,但是,Cross-Encoder不能很好地扩展到大型数据集。一种流行的做法是,结合两者模型的优点,取长补短。

例如在QA检索/语义搜索中,通常用Dual-encoder当召回模型,用Cross-Encoder当精排模型。

首先,使用Dual-encoder从海量数据的passage库中检索top 100 最相似的句子。然后,使用Cross-Encoder通过计算每个句子对的分数来重新排列这 100 个候选答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值