首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >论文领读|缺少有标注的数据集怎么训练文本检索模型?来看看 LaPraDoR怎么做的吧

论文领读|缺少有标注的数据集怎么训练文本检索模型?来看看 LaPraDoR怎么做的吧

原创
作者头像
澜舟科技
修改于 2022-06-14 02:02:17
修改于 2022-06-14 02:02:17
8022
举报
文章被收录于专栏:澜舟科技 NLP澜舟科技 NLP

欢迎来到「澜舟NLP论文领读」专栏!快乐研究,当然从研读 paper 开始——澜舟科技团队注重欢乐的前沿技术探索,希望通过全新专栏和大家共同探索人工智能奥秘、交流 NLP「黑科技」,踩在「巨人」肩上触碰星辰!

本期分享者:澜舟科技研究实习生韦松伟,首都师范大学信息工程学院二年级研究生。三人行,必有我师焉。兴趣广泛,爱好学习,欢迎大家一起探讨交流~

email: weisongwei@interns.chuangxin.com  

写在前面

如果你想训练一个文本检索模型,但是缺少有标注的数据集,那不妨来看看这篇论文《LaPraDoR: Unsupervised Pretrained Dense Retriever for Zero-Shot Text Retrieval 》,LaPraDoR 是一个无监督的文本检索模型,不依赖人工标注的数据集,可以在通用领域的大型数据集上进行训练,语义模型的基础上又用传统的 BM25 算法做了增强,在 BEIR 评测集上达到了 SOTA 水平,该论文发表在 ACL 2022 上。

论文链接:https://arxiv.org/abs/2203.06169

Text Retrieval 简单介绍

在介绍 LaPraDoR 之前,我们先来回顾一下文本检索的两个主流模型。目前文本检索(Text Retrieval)主要有两种模型,一种是双塔模型也叫 Dense Retrieval。稠密检索 (Dense Retrieval) 任务旨在通过给定的 query,在一个庞大的 document 语料库中召回与 query 高度相关的 document(document 泛指语料库中的文本内容,可以是句子,段落,文章等),其中 query 和 document 的语义相关性通常建模为 query 和 document 表示向量的点积或余弦相似度。其结构如下图所示:

还有一种是 对每一个 query-document 对计算匹配得分,这种方法一般在准确率上有优势但是需要耗费大量的计算时间,一般多用于重排阶段。而双塔模型在 ANN(an approximate nearest neighbor retrieval library,近邻搜索)等这种技术的帮助下速度非常快,如 faiss。

当前训练检索模型都有哪些问题呢?

Dense Retrieval 往往需要大量的人工标注的数据集,而且还有个大问题,模型有 out-of-domain 问题,就是你在这个领域训练的模型换到另一个领域效果会大大降低。人工标注本来就是件耗时耗力的工作,更别提一些领域内数据集的资源都很少的情况。训练文本检索模型基本都是基于对比学习来训练,一般来说增大负样本的数量对比学习的效果就会越好,但同时会导致占用的 GPU 内存增加,GPU 的内存会限制负例的数量,这也是一个比较普遍的问题。当前的 Dense Retrievers 模型总体优于传统的词典匹配算法 如 BM25,但 BM25 算法仍有一定的优点,在某些数据集上效果不亚于 Dense Retrievers 模型。

LaPraDoR 介绍

针对上面的问题,论文提出了 LaPraDoR(Large-scale Pretrained Dense Zero-shot Retriever)。LaPraDoR 是一种无监督预训练模型,用于文本的召回、匹配。不需要任何标注数据就可以进行训练。由于是在大型的通用领域数据集上进行训练,因此基本没有 out-of-domain 问题。

论文主要提出了两点创新 Iterative Contrastive Learning (ICoL) 和 Lexicon- Enhanced Dense Retrieval (LEDR)。ICoL 中引入缓存队列机制可以在 GPU 内存不变的情况下加入更多的负例。LEDR 在语义匹配模型的基础上又用传统的 BM25 算法做了增强,其做法是语义的得分乘以 BM25 的得分。在只进行无监督训练的情况下,不仅优于其他无监督模型,速度还快了很多。如果进一步 fintune 的话,在 re-rank 方面也表现十分优秀。

训练 LaPraDoR 有两个挑战:

1. Training Efficiency,如何更有效的训练。在对比学习中,往往更多的负样本会有更好的效果。但是增大 batch 会导致 GPU 的内存吃不消。论文提出的 Iterative Contrastive Learning (ICoL) 就能很好地解决该问题,其做法是构建一个缓存队列,训练过的负样本会加入到队列中,参与下一轮的损失计算。

2. Versatility,领域多样性。采用大语料库包含多个领域的语料库 c4 来进行训练。同时训练时不仅将 query-document 作为训练目标,还包括 document-query, query-query, 和 document-document。论文中 query 与 document 的 encoder 是共享权重的,意味着只有一个 encoder,许多论文中 query 与 document 的 encoder 是分开的,也就是两个 encoder。也有些论文中 query 与 document 的 encoder 共享部分参数。

接下来看一下到底是如何训练的吧!

模型结构与表征提取

首先 query 与 document 的 encoder 均是 BERT 形式的结构,论文中使用的是 DistilBERT。需要注意的是虽然 query 与 document 的 encoder 在最后是同一个,但训练的时候是分两个,每隔一段时间权重会从其中一个复制到另一个。

模型的输入是 [CLS] t1,t2,t3…[SEP] , 表征采用的是最后一层 layer 的 mean pool。也有些模型是用 [CLS]token 作为表征,论文中说有研究指出使用 meanpool 效果会优于 [CLS]token。但是其他一些 SOTA 论文中不少是使用 [CLS] token 的,所以哪种方式更好,并没有一个准确的答案。当得到 query 与 document 的表征后,以他们的余弦相似度作为匹配得分。

训练样本的构建

结构有了,接下来是数据了,论文有两种构建训练数据的方式 Inverse Cloze Task (ICT) 和 Dropout as Positive Instance (DaPI).

Inverse Cloze Task (ICT) :给定一段文本,随机挑出其中一个句子作为 query,剩下的作为文档也就是正样本,主要是用来做短文本去召回长文本。其优点是不需要一定格式的数据集,有大量的数据可以训练。

Dropout as Positive Instance (DaPI):其思想来源于 simcse 这篇论文,就是使用不同的 dropout 来得到正样本。与 simcse 不同点在于,计算梯度时只对其中的一个样本进行计算,这样占用的 GPU 的内存几乎不会增加。

训练过程

有了样本如何进行训练呢?Iterative Contrastive Learning,大体过程如图所示:

先说一下这个缓存队列,为什么要有这个设置呢?其目的是增加负样本的数量。首先设置一个固定的最大容量 m,每次训练过后,当前样本的 embedding 就会加入到队列中作为下一轮的负样本参与损失计算,当容量到达 m 时,最先加入的会被移除。其训练方式是一种迭代的方式,当训练 query encoder 时,冻住 document encoder,就是保持 documentencoder 参数不变,为的是使其表征在同一个语义空间。此时训练包括两个部分,第一部分是 query-query,同一个 query 通过不同的 dropout 得到正样本,负样本是随机的其他 query。训练时的损失函数就是经典的对比学习损失函数,如下:

第二部分就是 query-document,其构建方式为上面说的 ICT。首先会随机选取一些 document 作为负样本,为了加速训练,这些负样本是 batch 内的其他样本。随后这些样本的 embedding 会加入到缓存队列中,参与下一轮的损失计算。于是,损失函数中就带上了队列里的 embedding。其损失函数如下:

可以看到与 query-query 相比,多了一项,该项就是计算队列里的负样本的损失。其最后的损失就是两者之和,注意的是 query 只需 encoder 一次就可以参与这两个的损失计算。

在经过一定的 steps 后,将 query encoder 冻住,并将其权重复制到 document encoder 中。将缓存队列清空开始训练 document encoder。训练的方法与训练 query encoder 类似,包括 document-document 和 document-query,其损失与上面的类似。

为了加速训练,随机的负样本是采用的 in-batch negatives,就是训练 batch 内的其他样本作为负样本。

得到语义模型后,作者又用词典匹配技术对其进行增强,也就是 Lexicon-Enhanced Dense Retrieval (LEDR)。具体是使用 BM25 算法增强,其 BM25 算法的实现是用 Elastic Search,为了节约计算成本,只计算 BM25 算法的 top1000,剩下的得分全为 0。

当得到两者的得分后,最后的得分是两者的得分的乘积。

训练的细节

优化器采用 adam 学习率为 2e-4,使用了 16 块 v100 训练,每个 GPU 的训练 batch 为 256,query 与 document 的最大长度分别为 64 与 350。训练 query 与 document 迭代的步数为 100 步,缓存队列的最大长度为 100k,损失函数中的权重值为 1。大家可以根据自己的 GPU 情况进行调整。

实验结果

LaPraDoR 有两个版本,一个是仅进行无监督训练,另一个是在无监督训练后在 MS-MARCO 上进行微调。下面看其在 BEIR 上评测的表现,评测指标用的是 nDCG。

其中 LaPraDoR FT  是 LaPraDoR 用 BEIR 官方训练脚本在 MS-MARCO 上微调的模型。可以看到 LaPraDoR 不仅效果好,检索速度还快。

接下来作者还对几种不同的对比学习的方法做了评测,其中包括 In-Batch(shared 表示 query 与 document 共用 一个 encoder),In-Batch 就是负样本就是 batch 内其他样本作为负样本。还有 MoCo 与 xMoCo 为动量对比学习,其思想也是增大负例数量,将对比学习作为字典查询过程的角度来看,构建了一个由队列和移动平均编码器组成的动态字典。结果如下图所示:

作者使用这几种不同的训练方式训练 LaPraDoR,  ICoL 总体性能最优,可以发现 shared ICoL 与 ICoL 性能基本差不多,说明共用一个 encoder 并未导致性能下降。

作者还实验验证了词典增强以及无监督训练的重要性,如下图所示:

本文这里不再做赘述,感兴趣的可以去读论文看一下细节。

总结

本文带领大家阅读了 ACL 2022 的一篇论文,论文提出了 LaPraDoR——一种无监督预训练模型,在 BEIR 评测集上达到了 SOTA 水平。论文提出了 Iterative Contrastive Learning (ICoL) 和 Lexicon-Enhanced Dense Retrieval (LEDR) 两种方法,实验分别验证了其有效性。通过无监督训练,可以减缓标注数据不足导致模型性能较低的问题,有大量通用领域的数据可以用于模型训练,可以避免出现领域迁移效果大幅度降低的情况,并且其缓存队列的机制可以缓解 GPU 内存不足导致负例少的问题。总之,很推荐大家去读一读。

欢迎关注澜舟科技官方网站,了解更多 NLP 前沿知识:langboat.com

联系我们:bd@langboat.com

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
66666666666666666666666
66666666666666666666666
回复回复1举报
学习了
学习了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
WWW 2022 | 信息检索方向值得一读的3篇论文详解
今天给大家介绍3篇WWW 2022检索方向3篇值得一读的文章。第一篇文章是北邮和微软联合提出的利用对比学习、可导量化对多阶段向量化检索的优化。第二篇文章是理海大学提出的StructBERT,用于进行结构化表格数据的检索。第三篇文章是首尔大学提出的基于prompt的query-document向量化召回模型。
圆圆的算法笔记
2022/09/22
5740
WWW 2022 | 信息检索方向值得一读的3篇论文详解
论文领读|tDRO:面向大模型稠密检索的任务级分布鲁棒优化
随着基础模型的持续进步和数据量的显著增加,以大语言模型(LLM)为基座的稠密检索(Dense Retrieval, DR)模型已展现出卓越的检索性能。大模型稠密检索(LLM-DR)基于大量异质的微调数据集进行训练,这些异质数据集在领域、语言、对称性等方面展现出巨大的差异性。然而,如何确定一个理想的数据分布或配比,以最大化这些数据集联合训练的效果,成为提升大模型稠密检索(LLM-DR)性能的核心挑战。
澜舟科技
2024/10/31
730
AAAI 2022 | InsCLR:一种利用自监督训练提升实例检索的方法
InsCLR: Improving Instance Retrieval with Self-Supervision
Amusi
2021/12/22
1.1K0
AAAI 2022 | InsCLR:一种利用自监督训练提升实例检索的方法
稠密检索新突破:华为提出掩码自编码预训练模型,大幅刷新多项基准
稠密检索是搜索、推荐、广告等领域的关键性技术;面向稠密检索的预训练是业界高度重视的研究课题。近期,华为泊松实验室联合北京邮电大学、华为昇思 MindSpore 团队提出“基于掩码自编码器的检索预训练语言模型 RetroMAE”,大幅刷新稠密检索领域的多项重要基准。而其预训练任务的简洁性与有效性,也为下一步技术的发展开辟了全新的思路。该工作已录用于自然语言处理领域顶级学术会议 EMNLP 2022。基于昇思开源学习框架的模型与源代码已向社区开放。
机器之心
2022/12/16
7860
稠密检索新突破:华为提出掩码自编码预训练模型,大幅刷新多项基准
BGE M3-Embedding 模型介绍
BGE M3-Embedding来自BAAI和中国科学技术大学,是BAAI开源的模型。相关论文在https://arxiv.org/abs/2402.03216,论文提出了一种新的embedding模型,称为M3-Embedding,它在多语言性(Multi-Linguality)、多功能性(Multi-Functionality)和多粒度性(Multi-Granularity)方面表现出色。M3-Embedding支持超过100种工作语言,支持8192长度的输入文本,同时支持密集检索(Dense Retrieval)、多向量检索(Multi-Vector Retrieval)和稀疏检索(Sparse Retrieval),为现实世界中的信息检索(IR)应用提供了统一的模型基础,通过这几种检索方式的组合,取得了良好的混合召回效果。
JadePeng
2024/04/19
11.5K0
BGE M3-Embedding 模型介绍
WWW'23|递进式知识蒸馏提升检索模型效果
今天介绍的这篇文章是WWW 2023中微软发表的一篇工作,应用场景是检索,主要提出了一种新的蒸馏学习方法,用来实现将复杂的student模型的知识,蒸馏到简单的双塔dense检索模型上。核心提出的优化点是模型层面的aggressive蒸馏,以及数据层面的aggressive蒸馏。这里的aggressive,指的是teacher模型的复杂度逐渐提升,或者样本的预测难度逐渐增加。下面为大家详细介绍下这篇工作。
圆圆的算法笔记
2023/08/17
3450
WWW'23|递进式知识蒸馏提升检索模型效果
ICCV2021 | 快手联合北大提出多层次对比学习的跨模态检索方法
机器之心专栏 机器之心编辑部 近年来,互联网环境中的多媒体内容大量增加,如何通过视频文本相互检索,提升用户获取信息的效率,满足不同的用户对多媒体内容的消费需求变得异常重要。随着短视频内容社区的兴起,多媒体内容的创作门槛变低,UGC 内容成为主流,视频文本检索任务面临更加复杂和困难的挑战。本文针对视频文本检索任务提出层次化对比学习的跨模态检索思路,实现了更加高效且精准的视频文本检索方法,目前该论文已经被 ICCV2021 接收。 论文链接:https://arxiv.org/abs/2103.15049
机器之心
2023/03/29
4560
ICCV2021 | 快手联合北大提出多层次对比学习的跨模态检索方法
介绍 Elastic Rerank:Elastic 的新语义重排模型
在我们系列的上一篇博客中,我们介绍了语义重排序的概念。在这篇博客中,我们将讨论我们训练并在技术预览中发布的重排序模型。
点火三周
2024/12/13
3900
介绍 Elastic Rerank:Elastic 的新语义重排模型
总结!语义信息检索中的预训练模型(下)
上一篇中,我们介绍了预训练模型在建立倒排索引中的应用:总结!语义信息检索中的预训练模型
NewBeeNLP
2022/11/11
2.2K0
总结!语义信息检索中的预训练模型(下)
Open-AI:基于对比学习的无监督预训练
如何无监督地训练一个神经检索模型是当前IR社区的研究热点之一,在今天我们分享的论文中,OpenAI团队尝试在大规模无监督数据上对GPT系列模型做对比预训练(Contrastive Pre-Training),得到的 CPT-text模型 在文本匹配、语义搜索等任务上取得了优异的zero-shot性能。
NewBeeNLP
2022/11/11
1.1K0
Open-AI:基于对比学习的无监督预训练
CLIP2TV:用CLIP和动量蒸馏来做视频文本检索!腾讯提出CLIP2TV,性能SOTA,涨点4.1%!
现代视频文本检索框架主要由视频编码器 、文本编码器 和相似度head 三个部分组成。随着视觉表示学习和文本表示学习的成功,基于Transformer的编码器和融合方法也被应用于视频-文本检索领域。
CV君
2021/12/02
1.6K0
CLIP2TV:用CLIP和动量蒸馏来做视频文本检索!腾讯提出CLIP2TV,性能SOTA,涨点4.1%!
基于树的端到端稠密检索模型
今天介绍的这篇文章由清华大学和华为联合发表,核心是提升向量检索的效果,在树检索的基础上,实现了索引构建和表示学习的端到端联合建模,提升了树检索的一致性。
圆圆的算法笔记
2023/08/17
4050
基于树的端到端稠密检索模型
文本检索、开放域问答与Dense Passage Retrieval (EMNLP-20)
QA可以分为Close-domain QA和Open-domain QA,前者一般限制在某个特定领域,有一个给定的该领域的知识库,比如医院里的问答机器人,只负责回答医疗相关问题,甚至只负责回答该医院的一些说明性问题,再比如我们在淘宝上的智能客服,甚至只能在它给定的一个问题集合里面问问题;而Open-domain QA则是我们可以问任何事实性问题,一般是给你一个海量文本的语料库,比方Wikipedia/百度百科,让你从这个里面去找回答任意非主观问题的答案,这显然就困难地多。总结一下,Open-domain QA的定义:
beyondGuo
2022/03/28
2.4K0
文本检索、开放域问答与Dense Passage Retrieval (EMNLP-20)
业界总结 | 如何改进双塔模型,才能更好的提升你的算法效果?
今天写点技术干货来回馈一下我的粉丝们。本来想继续写对比学习(Contrastive Learing)相关类型的文章,以满足我出一本AI前沿技术书籍的梦想,但奈何NIPS2021接收的论文一直未公开,在arxiv上不停地刷,也只翻到了零碎的几篇。于是,我想到该写一下双塔模型了,刚进美团的第一个月我就用到了Sentence-BERT。
对白
2022/04/01
8150
业界总结 | 如何改进双塔模型,才能更好的提升你的算法效果?
北大&FAIR&自动化所&快手提出基于动量对比学习的层次Transformer—HiT,用于视频文本检索!代码已开源!
随着互联网上多媒体数据的增长,视频文本检索已经成为一个热门的研究课。用于视频文本学习的Transformer因其良好的性能而受到越来越多的关注。然而,现有的跨模态Transformer方法通常受到两个限制:
CV君
2021/12/02
6270
北大&FAIR&自动化所&快手提出基于动量对比学习的层次Transformer—HiT,用于视频文本检索!代码已开源!
双塔模型的瓶颈究竟在哪?
开放域问答系统的泛化性和鲁棒性一直是一个业界难题,其中位于最顶层的稠密检索模型(Dense Retriever)常常被诟病其OOD泛化能力不如传统的BM25算法。
NewBeeNLP
2024/04/26
2880
双塔模型的瓶颈究竟在哪?
WSDM Cup 2020检索排序评测任务第一名经验总结
美团搜索与NLP部与国内两所高校组队,提出了一种基于BERT和LightGBM的多模融合检索排序解决方案,拿下了WSDM Cup 2020 Task 1榜单的第一名。本文系获奖作者的经验总结文章。
美团技术团队
2020/03/26
9100
检索式对话系统在美团客服场景的探索与实践
在传统的客服、IM等场景中,坐席需要花费大量时间回答用户的各种咨询,通常面临答案查询时间长、问题重复、时效要求高等挑战。因而,使用技术手段辅助坐席快速、准确、高效地回答用户的各类问题非常有必要。
美团技术团队
2022/12/16
1.2K0
检索式对话系统在美团客服场景的探索与实践
RAG检索策略深度解析:从BM25到Embedding、Reranker,如何为LLM选对“导航系统”?
大家好!今天我们来聊聊一个热门技术——RAG(检索增强生成)中至关重要的“检索”环节。如果你正在探索如何让你的大型语言模型(LLM)更智能、回答更靠谱,那这篇文章你可千万别错过。
LeonAlgo
2025/07/01
4230
RAG检索策略深度解析:从BM25到Embedding、Reranker,如何为LLM选对“导航系统”?
MT-BERT在文本检索任务中的实践
基于微软大规模真实场景数据的阅读理解数据集MS MARCO,美团搜索与NLP中心提出了一种针对该文本检索任务的BERT算法方案DR-BERT,该方案是第一个在官方评测指标MRR@10上突破0.4的模型。
美团技术团队
2020/08/28
1.8K0
MT-BERT在文本检索任务中的实践
推荐阅读
相关推荐
WWW 2022 | 信息检索方向值得一读的3篇论文详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档