一种开放域问答下基于KL正则化的检索器预训练方法技术

技术编号:33929603 阅读:11 留言:0更新日期:2022-06-25 22:15
本发明专利技术公开了一种开放域问答下基于KL正则化的检索器预训练方法。本发明专利技术通过使用当前问题重写以及历史问题(可包含答案)和当前问题的拼接这两种形式进行训练,利用KL散度来拉进两种问题形式的检索结果,不仅提高了训练的稳定性,而且提升了问题编码器对问题的语义理解能力。本发明专利技术通过引入了困难负样本,即由TF

【技术实现步骤摘要】
一种开放域问答下基于KL正则化的检索器预训练方法


[0001]本专利技术涉及对话式开放域问答领域,尤其涉及基于KL正则化的检索器预训练方法。

技术介绍

[0002]在开放域问答领域,主要采用两阶段的系统,它由两个组成部分:一个检索器和一个阅读器。首先,检索器根据对话问题预先从大量维基百科文章中找出与问题相关性较高的N篇文章,其次,阅读器根据对话问题从这N篇文章中找到正确答案。
[0003]本专利技术重点关注检索器,传统的检索器可由TF

IDF、BM25等检索算法实现。这些检索算法是基于单词的重叠频率的,它不能处理语义高度相关但是词汇重叠少的情况,并且它是不可训练的。近些年来,随着预训练模型的逐步发展和以faiss为例的向量检索工具不断优化,为了解决传统稀疏检索器的一些不足,有许多研究人员对向量检索器展开了研究。向量检索器大多采取双编码器的架构,由问题编码器和文章编码器组成,分别将问题和文章编码为低维向量。许多相似度函数,如内积和欧几里德距离,可以用来衡量问题和文章之间的相关程度。目前的向量检索器运用于对话问题的相关文章的检索还存在以下不足:
[0004](1)对对话问题的理解不够准确。由于对话问题中会有一些指示代词,需要联系上下文才能领会问题。为了缓解这个问题带来的影响,已有系统将当前问题进行重写,用真实的实体代替代词来预先训练检索器。但是在后续的推理阶段,问题的表示用的是历史问题(可包含答案)和当前问题的组合,训练和推理的时候,问题表征不一致导致模型无法真正理解对话问题。
>[0005](2)正负样本的语义相差大,难以提升训练效果。目前的系统是采用同一训练批次中的其他问题的正样本作为当前问题的负样本。由于同一批次中的其他问题的相关文章和当前问题的相关文章的内容差距过大,训练时区分正负样本比较简单,而在推理阶段,可能需要在许多内容相似的文章中找到最相关的文章,训练时难度不够就会导致训练效果不佳。

技术实现思路

[0006]针对上述问题,本专利技术公开了一种基于KL正则化的检索器预训练方法,该方法可以使检索器检索到与对话问题更相关的文章集合。
[0007]本专利技术解决技术问题所采取的技术方案为:
[0008]步骤1,构建训练数据:
[0009]针对每一个对话问题,给出当前问题重写q
rw
与历史问题(可包含答案)和当前问题的拼接q
or
这两种形式,并给出对应问题的一篇相关文章与一篇不相关文章(由TF

IDF检索到但不包含正确答案的文章)。
[0010]步骤2,构建检索器模型:
[0011]检索器采用了双编码器架构,由问题编码器和文章编码器组成。其中问题编码器
和文章编码器都可由ALBERT模型实现。
[0012]步骤3,将训练数据集输入检索器进行训练:
[0013]同一训练批次的q
rw
和q
or
传入问题编码器,将同一训练批次的p
+
和p

传入文章编码器。训练时的损失函数由两部分组成,分别是交叉熵损失和KL散度(Kullback

Leibler divergence)损失。最终训练得到问题编码器和文章编码器。
[0014]步骤4,获取维基百科的页面数据,并得到维基百科段落的向量表示:
[0015]从网页上获取维基百科的页面数据后,将它们切分成长度不超过384个词的文章段落。将切分后的段落用检索器中的文章编码器进行编码,得到维基文章的向量表示。
[0016]步骤5,使用faiss向量检索工具构建维基百科文章的索引。
[0017]步骤6,使用问题编码器对对话问题进行编码,根据问题表示向量从faiss中查询到最相关的topK篇文章。
[0018]本专利技术具有的有益效果是:
[0019]1、本专利技术通过使用当前问题重写以及历史问题(可包含答案)和当前问题的拼接这两种形式进行训练,利用KL散度来拉进两种问题形式的检索结果,不仅提高了训练的稳定性,而且提升了问题编码器对问题的语义理解能力。
[0020]2、本专利技术通过引入了困难负样本,即由TF

IDF检索到但不包含正确答案的文章,提高了检索器的训练效果,使得检索器能在内容相似的一批文章甄别出与当前问题关联更强的文章。
附图说明
[0021]图1为本专利技术提出的基于KL正则化的检索器预训练方法的流程图。
[0022]图2为本专利技术提出的检索器模型图。
[0023]图3为本专利技术提出的基于KL正则化的检索器预训练方法的训练示意图。
具体实施方式
[0024]为了阐明本专利技术的技术方案和工作原理,下面将结合附图对本专利技术公开的实施方式做进一步的详细描述。本实施例提供了一种开放域问答下基于KL正则化的检索器预训练方法,如图1所示,该方法主要包括以下步骤:
[0025]步骤1,构建训练数据:
[0026]从OR

QuAC的训练数据集中得到当前问题q
c
以及历史问题和答案对取历史对话窗口大小为w,将问题和答案的拼接作为问题,记为
[0027]q
or
=[CLS]q1[SEP]a1[SEP]q
c

w
[SEP]a
c

w
[SEP]…
[SEP]q
c
‑1[SEP]a
c
‑1[SEP]q
c
[SEP]。
[0028]当前问题的重写q
rw
是CANARD数据集提供的,它将当前问题中的一些指示代词都替换成了实词。当前问题的相关文章包含了该问题的答案,而不相关文章则是由TF

IDF检索到的并且不包含该问题答案的文章。
[0029]最终将训练数据记为其中m代表共有几组训练数据,和是问题的两种表示方式,是当前问题与历史问题(可包含答案)的拼接,是当前问题的重写,是当前问题对应的相关文章,是当前问题对应的n
篇不相关文章。这n篇不相关文章中,有一篇是该问题对应的困难负样本,即用TF

IDF检索到但不包含正确答案的文章,其它n

1篇是来自同一训练批次的其他问题的正样本和困难负样本,困难负样本的具体获取详见步骤3。
[0030]步骤2,构建检索器模型:图2为检索器的模型图,检索器采用了双编码器架构,由问题编码器和文章编码器组成。其中问题编码器和文章编码器的内部实现是一致的,如下所述:
[0031](1)首先,在ALBERT预训练语言模型内部使用双向的Transformer编码器对问题/文章输入进行处理,取[CLS]位置的向量作为输出,维度是768。
[0032](2)其次,将上一层[CLS]位置的向量传入Dropout层,防止训练出来的模型产生过拟本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种开放域问答下基于KL正则化的检索器预训练方法,其特征在于该方法包括以下步骤:步骤1,构建训练数据:针对每一个对话问题,给出问题的两者形式,分别为当前问题重写q
rw
,历史问题和当前问题的拼接q
or
;给出对应问题的一篇相关文章p
+
与一篇不相关文章p

;步骤2,构建检索器模型:所述检索器采用双编码器架构,由问题编码器和文章编码器组成;步骤3,将训练数据集输入检索器进行训练:同一训练批次的q
rw
和q
or
传入问题编码器,将同一训练批次的p
+
和p

传入文章编码器,其中训练时的损失函数由两部分组成,分别是交叉熵损失和KL散度损失;步骤4,获取维基百科的页面数据,并得到维基百科文章的向量表示:步骤5,使用faiss向量检索工具构建维基百科文章的索引;步骤6,使用问题编码器对对话问题进行编码,根据问题表示向量从faiss向量检索工具中查询到最相关的topK篇文章。2.根据权利要求1所述的一种开放域问答下基于KL正则化的检索器预训练方法,其特征在于:步骤1中当前问题的...

【专利技术属性】
技术研发人员:殷昱煜江艺璇梁婷婷陶志伟胡海胖李尤慧子李玉
申请(专利权)人:杭州核新软件技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1