0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对预训练模型在召回与排序部分的应用做一个总结

深度学习自然语言处理 来源:NewBeeNLP 作者:Chilia 2022-09-06 10:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文对预训练模型在召回(retrieval), 排序(re-ranking),以及其他部分的应用做一个总结。

1. 背景

搜索任务就是给定一个query或者QA中的question,去大规模的文档库中找到相似度较高的文档,并返回一个按相关度排序的ranked list。

由于待训练的模型参数很多(增加model capacity),而专门针对检索任务的有标注数据集较难获取,所以要使用预训练模型。

2. 检索模型的分类

检索的核心,在于计算query和document的 相似度 。依此可以把信息检索模型分为如下三类:

基于统计的检索模型

使用exact-match来衡量相似度,考虑的因素有query中的词语在document中出现的词频TF、document长度(惩罚长文本,例如一个词在300页的文章中出现过2次远远不如一个词在一小段微博动态里出现过两次)、逆文档词频IDF(惩罚在所有文档中都出现过很多次的词,例如“的”)。

代表性的模型是BM25,用来衡量一个term在doc中的重要程度,其公式如下:

82f8f35c-2d86-11ed-ba43-dac502259ad0.png惩罚长文本、对词频做饱和化处理

实际上,BM25是检索模型的强baseline。基于exact-match的检索模型是召回中必不可少的一路。

Learning-to-Rank模型

这类模型需要手动构造特征,包括

query端特征,如query类型、query长度(还可以加入意图slot?);

document端特征(document长度,Pagerank值);

query-document匹配特征(BM25值,相似度,编辑距离等)。

其实,在现在常用的深度检索模型中也经常增加这种人工构造的特征。根据损失函数又可分为pointwise(简单的分类/回归损失)、Pairwise(triplet hinge loss,cross-entropy loss)、Listwise。

深度模型

使用query和document的embedding进行端到端学习。可以分为

representation-focused models(用双塔建模query和document,之后计算二者相似度,双塔之间无交互,用于召回)

interaction-focused models(金字塔模型,计算每个query token和每个document token的相似度矩阵,用于精排。精排阶段还可增加更多特征,如多模态特征、用户行为特征、知识图谱等)

3. 预训练模型在倒排索引中的应用

基于倒排索引的召回方法仍是在第一步召回中必不可少的,因为在第一步召回的时候我们面对的是海量的文档库,基于exact-match召回速度很快。但是,其模型capacity不足,所以可以用预训练模型来对其进行模型增强。

3.1 term re-weighting

代表论文: DeepCT (Deep Contextualized Term Weighting framework: Context-Aware Sentence/Passage Term Importance Estimation For First Stage Retrieval).

普通的exact-match中衡量一个词在query/document中的重要程度就是通过词频(TF)或者TFIDF,或者TFIDF的改进版本--BM25,例如在建立倒排索引的时候,每个term在不同document的重要程度就是用TF来衡量的。

但是,一个词在两个document中出现频率相同,就说明这个词在两个document中同样重要吗?其实词的重要程度比词频要复杂的多。

所以,可以使用contextualized模型,例如BERT,Elmo等获得每个词的 上下文 表示,然后通过简单的线性回归模型得到每个词在document中的重要程度。文档真实词语权重的估计如下,这个值作为我们训练的label:

其中, 是与文档 d 相关的查询问题的集合; 是包含词语 t 的查询问题集合 的子集; 是文档 d 中词语 t 的权重。的取值范围为,以此为label训练。这样,我们就得到了一个词在document中的重要程度,可以替换原始TF-IDF或BM25的词频。对于query,也可以用同样的方法得到每个词的重要程度,用来替换TFIDF。

830cc8e6-2d86-11ed-ba43-dac502259ad0.png

3.2 Document expansion

除了去估计不同term在document中的重要程度,还可以直接显式地扩增document,这样一来提升了重要词语的权重,二来也能够召回"词不同意同"的文档(解决lexical-mismatch问题)。

例如,可以对T5在query-document对上做微调,然后对每个document做文本生成,来生成对应的query,再加到document中。之后,照常对这个扩增好的document建倒排索引,用BM25做召回。代表工作:docTTTTTquery[3]

同样地,也可以对query进行扩增。例如对于QA中的question,可以把训练目标定为包含答案的句子、或者包含答案的文章title,然后用seq2seq模型训练,再把模型生成的文本加到query后面,形成扩增的query。

3.3 term reweighting + document expansion

那么,我们可不可以同时做term reweighting和document expansion呢?这方面的代表工作是Sparterm[4]

此模型分为两部分:重要度预测模块(用来得到 整个vocab上 的重要程度)和门控模块(得到二进制的门控信号,以此来得到最终保留的稀疏token,最终只能保留 个token)。由于重要度是针对整个vocab而言的,所以可以同时实现重要度评估+词语扩增。

8329f038-2d86-11ed-ba43-dac502259ad0.png


重要度预测模块采用了类似MLM的思想,即先用BERT对句子做好contextualized embedding,然后乘上vocab embedding 矩阵 E ,得到这个词对应的重要度分布:

这句话整体的重要度分布就是所有词对应的重要度分布取relu(重要度不能是负数),然后加起来的和:

门控模块和重要度评估模块的计算方法类似,只是参数不再是 E , 而是另外的变换矩阵。得到gating distribution G 之后,先将其0/1化为 G' (如果G中元素>threshold则取1,否则取0);然后得到我们需要保留的词语(exact-match必须保留,还增加一些扩增的token)。

通过端到端的方式训练,训练的损失函数有两个,其中一个就是我们常见的ranking loss,即取 三元组,然后求对比cross-entropy loss。这里的q', p'都是经过重要度评估模块+门控模块之后得到的句子表征,因此loss反传可以对重要度评估模块和门控模块进行更新。

8342d22e-2d86-11ed-ba43-dac502259ad0.png

另一个loss专门对门控模块做更新,训练数据是对,对于一个document,先得到其门控向量G, 然后去和实际的query进行对比:

836164d2-2d86-11ed-ba43-dac502259ad0.jpg


T为真实query的bag of words




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 矩阵
    +关注

    关注

    1

    文章

    441

    浏览量

    35819
  • 机器学习算法

    关注

    2

    文章

    47

    浏览量

    6798

原文标题:总结!语义信息检索中的预训练模型

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Ubuntu20.04系统中训练神经网络模型些经验

    本帖欲分享Ubuntu20.04系统中训练神经网络模型些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为
    发表于 10-22 07:03

    基于大规模人类操作数据训练的VLA模型H-RDT

    近年来,机器人操作领域的VLA模型普遍基于跨本体机器人数据集训练,这类方法存在两大局限:不同机器人本体和动作空间的差异导致统训练困难;现
    的头像 发表于 08-21 09:56 784次阅读
    基于大规模人类操作数据<b class='flag-5'>预</b><b class='flag-5'>训练</b>的VLA<b class='flag-5'>模型</b>H-RDT

    模型时代的深度学习框架

    量是约为 25.63M,ImageNet1K数据集上,使用单张消费类显卡 RTX-4090只需大约35~40小时 ,即可完成ResNet50模型
    的头像 发表于 04-25 11:43 663次阅读
    大<b class='flag-5'>模型</b>时代的深度学习框架

    恩智浦eIQ Time Series Studio工具使用教程之模型训练

    大家好,eIQ Time SeriesStudio又和大家见面啦!本章为大家带来工具核心部分-模型训练
    的头像 发表于 03-25 15:25 1440次阅读
    恩智浦eIQ Time Series Studio工具使用教程之<b class='flag-5'>模型</b><b class='flag-5'>训练</b>

    用PaddleNLP为GPT-2模型制作FineWeb二进制训练数据集

    作者:算力魔方创始人/英特尔创新大使刘力 《用PaddleNLP4060单卡上实践大模型训练技术》发布后收到读者热烈反响,很多读者要求进
    的头像 发表于 03-21 18:24 3846次阅读
    用PaddleNLP为GPT-2<b class='flag-5'>模型</b>制作FineWeb二进制<b class='flag-5'>预</b><b class='flag-5'>训练</b>数据集

    训练好的ai模型导入cubemx不成功怎么处理?

    训练好的ai模型导入cubemx不成功咋办,试了好几个模型压缩了也不行,ram占用过大,有无解决方案?
    发表于 03-11 07:18

    从Open Model Zoo下载的FastSeg大型公共训练模型,无法导入名称是怎么回事?

    从 Open Model Zoo 下载的 FastSeg 大型公共训练模型。 运行 converter.py 以将 FastSeg 大型模型转换为中间表示 (IR): pyth
    发表于 03-05 07:22

    小白学大模型训练大语言模型的深度指南

    在当今人工智能飞速发展的时代,大型语言模型(LLMs)正以其强大的语言理解和生成能力,改变着我们的生活和工作方式。最近的项研究中,科学家们为了深入了解如何高效地训练大型语言
    的头像 发表于 03-03 11:51 1212次阅读
    小白学大<b class='flag-5'>模型</b>:<b class='flag-5'>训练</b>大语言<b class='flag-5'>模型</b>的深度指南

    用PaddleNLP4060单卡上实践大模型训练技术

    作者:算力魔方创始人/英特尔创新大使刘力 之前我们分享了《从零开始训练大语言模型需要投资多少钱》,其中高昂的
    的头像 发表于 02-19 16:10 2136次阅读
    用PaddleNLP<b class='flag-5'>在</b>4060单卡上实践大<b class='flag-5'>模型</b><b class='flag-5'>预</b><b class='flag-5'>训练</b>技术

    腾讯公布大语言模型训练新专利

    大语言模型训练过程中引入第摘要文本和第二摘要文本,为模型提供了更为丰富的学习信息。这两摘要文本
    的头像 发表于 02-10 09:37 720次阅读

    【「基于大模型的RAG应用开发与优化」阅读体验】+大模型微调技术解读

    集对模型进行进训练的过程。 大模型微调是利用训练模型
    发表于 01-14 16:51

    模型训练框架(五)之Accelerate

    Hugging Face 的 Accelerate1是用于简化和加速深度学习模型训练的库,它支持多种硬件配置上进行分布式
    的头像 发表于 01-14 14:24 1775次阅读

    TimSort:标准函数库中广泛使用的排序算法

    排序算法呢? 本文将带你走进 TimSort,标准函数库中广泛使用的排序算法。 这个算法由工程师 Tim Peters 于 2001
    的头像 发表于 01-03 11:42 961次阅读

    KerasHub统、全面的训练模型

    深度学习领域正在迅速发展,处理各种类型的任务中,训练模型变得越来越重要。Keras 以其用户友好型 API 和对易用性的重视而闻名,始终处于这
    的头像 发表于 12-20 10:32 776次阅读

    GPU是如何训练AI大模型

    AI模型训练过程中,大量的计算工作集中矩阵乘法、向量加法和激活函数等运算上。这些运算正是GPU所擅长的。接下来,AI部落小编带您了解GPU是如何
    的头像 发表于 12-19 17:54 1345次阅读