前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >总结!语义信息检索中的预训练模型

总结!语义信息检索中的预训练模型

作者头像
NewBeeNLP
发布2022-11-11 11:08:33
1.8K0
发布2022-11-11 11:08:33
举报
文章被收录于专栏:NewBeeNLP

作者 | Chilia 哥伦比亚大学 nlp搜索推荐 整理 | NewBeeNLP

大家好,这里是NewBeeNLP。

本文对预训练模型在召回(retrieval), 排序(re-ranking),以及其他部分的应用做一个总结,参考学长们的综述:Pre-training Methods in Information Retrieval[1]

1. 背景

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

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

2. 检索模型的分类

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

基于统计的检索模型

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

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

惩罚长文本、对词频做饱和化处理

实际上,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[2]).

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

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

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

Q T R_{t, d}=\frac{\left|Q_{d, t}\right|}{\left|Q_{d}\right|}

其中,

Q_{d}

是与文档 d 相关的查询问题的集合;

Q_{d,t}

是包含词语 t 的查询问题集合

Q_{d}

的子集;

QTR_{t,d}

是文档 d 中词语 t 的权重。

QTR_{t,d}

的取值范围为

[0,1]

,以此为label训练。这样,我们就得到了一个词在document中的重要程度,可以替换原始TF-IDF或BM25的词频。对于query,也可以用同样的方法得到每个词的重要程度,用来替换TFIDF。

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,最终只能保留

\lambda

个token)。由于重要度是针对整个vocab而言的,所以可以同时实现重要度评估+词语扩增。

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

I_i = BERT(h_i) E^T +b

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

I = \sum_{i=0}^L Relu(I_i)

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

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

L_{\text {rank }}\left(q_{i}, p_{i,+}, p_{i,-}\right)=-\log \frac{e^{\operatorname{sim}\left(q_{i}^{\prime}, p_{i,+}^{\prime}\right)}}{e^{\operatorname{sim}\left(q_{i}^{\prime}, p_{i,+}^{\prime}\right)}+e^{\operatorname{sim}\left(q_{i}^{\prime}, p_{i,--}^{\prime}\right)}}

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

T为真实query的bag of words

下一篇将介绍预训练模型在深度召回和精排中的应用。

本文参考资料

[1]

Pre-training Methods in Information Retrieval: https://arxiv.org/pdf/2111.13853.pdf

[2]

Context-Aware Sentence/Passage Term Importance Estimation For First Stage Retrieval: https://arxiv.org/abs/1910.10687

[3]

https://cs.uwaterloo.ca/~jimmylin/publications/Nogueira_Lin_2019_docTTTTTquery-v2.pdf: https://cs.uwaterloo.ca/~jimmylin/publications/Nogueira_Lin_2019_docTTTTTquery-v2.pdf

[4]

https://arxiv.org/pdf/2010.00768.pdf: https://arxiv.org/pdf/2010.00768.pdf

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NewBeeNLP 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. 检索模型的分类
    • 基于统计的检索模型
      • Learning-to-Rank模型
        • 深度模型
        • 3. 预训练模型在倒排索引中的应用
          • 3.1 term re-weighting
            • 3.2 Document expansion
              • 3.3 term reweighting + document expansion
                • 本文参考资料
                相关产品与服务
                灰盒安全测试
                腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档