一种基于大规模问题自学习的无监督机器阅读理解方法与流程

文档序号:28168993发布日期:2021-12-24 23:13阅读:109来源:国知局
一种基于大规模问题自学习的无监督机器阅读理解方法与流程

1.本发明涉及机器阅读理解领域,尤其是涉及一种基于大规模问题自学习的无监督机器阅读理解方法。


背景技术:

2.许多用于自然语言处理(nlp)任务的最新算法都需要人工标注的数据。在早期我们通常没有任何特定于域的标记数据集,并且对足够数量的此类数据进行注释通常是昂贵且费力的。因此,对于许多nlp应用程序,即使是资源丰富的语言(如英语)也仅在少数几个域中标记了数据。
3.在许多nlp应用程序中,获取大量带标签的数据非常困难。因此,在许多情况下,我们会从少量数据中训练模型。但是,训练后的模型通常过拟合,需要将其推广到看不见的数据。因此,研究人员通过预训练语言模型来利用大量未标记的数据集,这通常可以缓解网络权重用于随机初始化的问题,从而找到更好的局部最优值并提高代理在不可见环境中的健壮性。
4.最近机器阅读理解(mrc)的重大进步通过在大量未标记文本数据上对transformer语言模型进行预训练,并在手动标注的qa数据集上对预训练的模型进行了微调来实现。在预训练语言模型的上下文中,gururangan显示了使用域内数据进行额外预训练对改善下游特定任务性能的重要性。


技术实现要素:

5.本发明主要是提供一种基于大规模问题自学习的无监督机器阅读理解方法,从而可以在一个全新的领域实现冷启动。
6.本发明针对上述技术问题主要是通过下述技术方案得以解决的:首先将数据分为四种类型:未标注的通用数据,已标注的通用数据,未标注的域内数据,已标注的域内数据,然后按以下步骤进行:
7.s1、针对未标注的通用数据,使用标准预训练模型进行训练,得到基于transformer的预训练语言模型作为架构的最底层;
8.s2、针对已标注的通用数据,使用步骤s1得到的预训练语言模型进行训练得到问题生成器,同时使用已标注的通用数据来生成特定任务通用领域模型;
9.s3、针对未标注的域内数据,使用步骤s2中构建的问题生成器生成合成的域内数据,然后使用特定任务通用领域模型进行过滤,过滤后得到高质量的合成的域内数据集和低质量的合成数据集,再对高质量的合成的域内数据集进行训练得到新预训练模型;
10.s4、针对已标注的域内数据,通过过滤得到的低质量的合成数据集进行混合并标记答案,然后使用新预训练模型进行训练得到最终机器阅读理解模型;
11.基于最终机器阅读理解模型,输入数据得到机器阅读理解的结果。
12.作为优选,步骤s1中,采用gpt

2模型或者t5模型来进行模型学习。
13.作为优选,基于训练后t5模型进行问题生成具体为:提取答案;依据提取的答案生成问题;接受该问题并产生一个答案;对提取的答案和产生的答案进行比较,判断生成的问题是否正确;
14.基于训练后的gpt

2模型进行问题生成具体为:给定语言的自然顺序,将序列s=(s1,

,s
n
)的联合概率分解为条件式的乘积:
[0015][0016]
在gpt

2模型训练完成后,对每一个新的单词,模型计算出根据现有所有字符为依据,下一个词的概率;然后根据概率,选出前k位的高概率词,在这k个候选词中进行随机采样;这个过程不断重复,直到特殊符号或者句子结束符号出现;
[0017]
针对问题生成这个场景,用特别的符号标注源文中潜在答案的位置,对于一个段落c=[c1,...c
n
]和其中的一个潜在答案a=[a1,..,a
n
],会被表示为:
[0018]
x=([cls],c,[sep],a)
[0019]
给定上述x,我们将其输入训练后的gpt

2模型或者训练后的t5中后得到隐向量:
[0020]
h=model(x)
[0021][0022]
x是输入长度,h是隐向量的大小;最后h会再输入一层全链接网络得到最终结果:
[0023][0024][0025]
式中,w是一个单词,w是一个矩阵,b是系数,最终得到的是argmax输出的最佳单词。w和b均通过学习得到。
[0026]
作为优选,步骤s3中,对具有往返一致性的生成数据进行主动学习,从而根据现有模型在不同纬度上的优缺点,主动筛选出训练数据分布中的薄弱环节,建议应标记的下一批数据。
[0027]
作为优选,步骤s3中,通过往返一致性进行数据过滤,通过主动学习提高学习效率。
[0028]
本发明带来的实质性效果是,适用于没有任何标记和非常小的标记数据的情况,显著提高了模型的准确度。
附图说明
[0029]
图1是本发明的一种流程图。
具体实施方式
[0030]
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
[0031]
实施例:我们使用多种预训练语言模型(例如gpt

2和t5)从域内文本的未标记段
落生成大量的潜在问题和答案数据,有这种方法让我们可以在一个全新的领域实现冷启动。然后我们根据这些生成的样本对模型进行预训练,最后对特定的标记数据集进行微调。
[0032]
尽管在squad1.1训练数据集上进行了特定领域训练的模型在squad1.1 dev数据集上达到了最先进的性能(em分数为85%),但完全无法在全新的领域进行同样水准的推理,即newqa(em得分为32%)。我们发现,在使用合成数据集对模型进行预训练时,防止合成数据集过拟合至关重要,因为它通常包含很多嘈杂的样本。但是,当早期没有或只有很少的域内训练数据时,这些合成数据集非常有用,因为我们可以通过这种方法在一个全新领域自动生成“机器”标注的训练数据。
[0033]
通过这种方法,无需任何标记数据的情况下,获得80%的最终性能。而且,当我们注入少量带标签的数据(原始数据的10%)时,由预训练的模型可以快速达到相当于94%的最终性能水平。最后我们通过用来严格测试nlp模型的nlp checklist测试框架来评估data dream。我们的方法在nlp checklist中通用语言能力测试项目中(如同义词,问题拼写,时间变化等)将错误减少了18%。
[0034]
问题生成是一个有悠久历史的研究课题,使用生成的问答对来改善质量保证体系,显示了在仅仅具有少样本数量的情况下,在低资源环境下的巨大改进。然而,验证和提高这些生成的qa对的准确性还相对缺乏探索。
[0035]
在机器翻译中,在两个翻译方向上通过双重学习或回译进行建模一致性可以提高翻译模型的质量。反向翻译将合成生成的并行数据添加为训练示例,这是这项工作的灵感,并在有监督的和无监督的设定下中都得到了最优秀的性能。可以在给定上下文的情况下对问题和答案的联合分布进行建模,并直接使用此模型,而我们的工作使用生成模型来生成用于预训练的综合数据。将这两种方法结合起来可能会是一个富有成果的未来工作领域。
[0036]
qg被用于扩充用于回答问题的训练数据,并且专注于基于文本的质量检查任务,旨在从给定输入问题的文本中选择一个或多个答案句子。通过对句子进行排名时比较生成的问题和原始问题,从而配置在训练时每个数据点的权重。
[0037]
基于翻译的数据增强机制可以引入来回答问题。但是,这些方法高度取决于翻译系统的可用性和质量。尽管我们可以在使用mt的训练中增加更多数据,但是由于难以找到其他语言的领域特定数据,因此它仍未得到明显改善。
[0038]
使用synthetic qa corpora generation可以通过往返一致性改善总体mrc任务。为了使往返一致,应该已经训练了模型。与我们工作的主要不同之处在于我们假设我们的数据集很小,并且很难建立初始模型。但是,他们假设他们已经有模型,以及何时要进一步改进模型。因此,很难显示出对新域数据集的改进,并且难以始终如一地提高跨域的性能。
[0039]
我们提出的data dream带来的主要贡献有四个方面:
[0040]
1.我提出了针对小样本情况下构建nlp系统的四个步骤。
[0041]
2.我们使用多种不同的异类预训练语言模型构建synthetic qa corpora,并显示在新域上的性能改进。
[0042]
3.我们在nlp checklist上进行了测试,该评测方法可以用于对nlp模型的严格测试,我们提出的方法超出了基线的准确性,并且发现在通用语言功能的错误率大幅度降低。
[0043]
4.如果预测的答案不同,我们通过对生成的问题进行主动学习来进一步提高性能。
[0044]
根据不同数据集,我们的总体流程分为四个阶段。首先对于任何nlp领域或者任务,我们可以将数据集分为四种类型:
[0045]
1.未标注的通用数据(例如,bookcorpus,wikipedia等)。
[0046]
2.已标注的通用数据(或域外数据)(例如,squad,triviaqa,hotpotqa等)。
[0047]
3.未标注的域内数据(例如,司法判例,保险条款,技术说明等)。
[0048]
4.有标注的域内数据(例如,人工标注的法律卷宗)。
[0049]
这4个步骤基于数据集的大小,我们采取不同的处理方式:
[0050]
第一步(未标注的通用数据):对未标记的通用域数据集的研究已积极开展了3年。大量文本数据用于构建基于转换器的预训练语言,bert,gpt

2,t5等预训练模型已成为标准的nlp处理。我们使用基于transformer的语言模型作为我们架构的最底层。
[0051]
第二步(标注过的通用数据):我们的目标是建立机器阅读理解模型,因此有许多公开可用的数据集。我们使用该数据集制作合成数据生成器,以制作大规模的域内数据集。此外,我们使用标记的领域通用数据集来使任务特定的(本工作中的mrc任务)成为通用领域模型。
[0052]
第三步(未标注的行业数据):我们使用步骤2中构建的问题生成器生成许多合成的域内数据。生成大量数据后,我们使用域模型模型进行过滤,该模型借鉴了往返一致问题生成的思想。高质量的样本将被用于构建预训练模型,并且我们使用进一步的滤波方法来提高性能。并且,当我们人工标注这些数据时,可以将预训练的模型用作注释助手。
[0053]
第四步(标注过的行业数据):在最后一步,我们应用主动学习,该学习使用来自一般模型的否定合成数据发送到人工注释者来标记答案。如果生成的问题不合语法且难以理解,我们会要求注释者尽可能修改生成的问题并注释答案。最后,我们使用域内标记的数据集训练最终模型。
[0054]
在下面的章节,我们将详细讲解每一步的实现方式。
[0055]
第一步:未标注通用数据自学习
[0056]
这一步我们采用了两种不同的策略对于未标注的通用数据进行模型学习。第一种方法由gpt

2提出。gpt

2是openai于2019年2月发布的基于transformer的大型语言模型,包含15亿参数、在一个800万网页数据集上训练而成。该模型是对gpt模型的直接扩展,在超出10倍的数据量上进行训练,参数量也多出了10倍。在性能方面,该模型能够生产连贯的文本段落,在许多语言建模基准上取得了sota表现。而且该模型在没有任务特定训练的情况下,能够做到初步的阅读理解、机器翻译、问答和自动摘要。
[0057]
第二种策略由t5提出。t5的训练数据包括为colossal clean crawled corpus(即c4语料库),该数据集从common crawl网站上抓取数百个千兆字节干净的英文文本。而t5的模型是一个标准的基于transformer的encoder

decoder模型,模型参数量达到了110亿。
[0058]
第二步:通过标注过的通用数据训练生成模型。
[0059]
问题生成是根据文本段落自动生成问题的任务。最简单的方法是回答问题。在知道答案的问题生成中,向模型提供答案和段落,并通过考虑段落上下文来要求为该答案生成问题。原因之一是大多数较早的论文都使用复杂的模型/处理管道,并且没有可用的预训练模型。因此,机器生成的问题通常是不合语法的且难以理解,因此很难在实际应用中使用生成的数据。但是,由预训练转换器模型支持的文本生成技术的最新进展使我们能够生成
合理的合成数据。我们使用了现成的最强大的生成方法:基于t5的生成和基于gpt

2的生成。
[0060]
基于t5的问题生成:t5是一个非常庞大的新型神经网络模型,它在混合了来自流行自然语言处理任务的未标记文本和标记数据的基础上进行了训练,然后针对其作者要解决的每个任务进行单独的微调。t5是在无监督和受监督任务的多任务混合物上进行预训练的编码器

解码器模型,为此,每个任务都转换为文本到文本格式。为了生成知道答案的问题,我们通常需要3个模型,第一个将像跨度那样提取答案,第二个模型将在该答案上生成问题,第三个将是一个qa模型,它将接受该问题并产生一个答案,然后我们可以将两者进行比较回答以查看生成的问题是否正确。具有3个用于单个任务的模型非常复杂,因此目标是创建一个可以同时完成这3个任务的多任务模型。
[0061]
基于gpt

2的问题生成:对于使用gpt

2生成问题,我们遵循原始的标准文本生成策略。给定语言模型的自然顺序,可以将序列s=(sl,..,sn)的联合概率分解为条件式的乘积
[0062][0063]
在上述概率模型训练完成后,问题生成的部分可以通过多种随机采样策略实现,包括序列top

k。对于每一个新的单词,模型计算出根据现有所有字符为依据,下一个词的概率。然后根据概率,选出前k位的高概率词,在这k个候选词中进行随机采样。这个过程不断重复,直到特殊符号,包含“?”或者句子结束符号出现。
[0064]
此外,针对问题生成这个场景,我们用特别的符号标注源文中潜在答案的位置,比如说对于一个段落c=[c1,...c
n
]和其中的一个潜在答案a=[a1....a
n
],会被表示为:
[0065]
x=([cls],c,[sep],a)
[0066]
给定上述x,我们可以将其输入gpt

2或者t5中后得到隐向量:
[0067]
h=model(x)
[0068][0069]
x是输入长度,h是隐向量的大小。最后h会再输入一层全链接网络得到最终结果:
[0070][0071][0072]
第三步:通过第二步的模型标注行业数据。
[0073]
针对ai模型训练需要大量的人工标注。但人工标注的过程成本很高。另外,注释者很难决定在机器学习理解中要问什么,并且人类注释者有很多重复项。如果主动学习者在预测方面产生最多分歧,则决定查询oracle以标记数据样本。这可以通过熵和kl

散度来度量。输出预测中的高方差表示信息最多的数据样本。在本文中,我们对具有往返一致性的生成数据进行主动学习,从而根据现有模型在不同纬度上的优缺点,主动筛选出训练数据分布中的薄弱环节,建议应标记的下一批数据,从而降低了数据标记的成本,并增加了每个手
动标记的数据点的价值。
[0074]
在获得上述问题生成模型之后,我们可以用基于t5或者gpt

2的问题模生成模型对于任何未标注的行业数据进行标注,自动产生潜在的相关问题,用来训练第四部的问答模型。可是,直接使用所有生成的问题实现训练效果并不理想,这是因为生成的问题涵盖大量杂音。因此,我们发明了往返一致性的方法来实现对于数据质量的把控。
[0075]
通过往返一致性进行数据过滤:可以使用往返一致性来过滤数据。如果模型无法回答所生成的问题,则可以过滤示例。我们也采用了这个方法对数据进行过滤。但是,已有的工作与我们的工作之间存在一些差异:
[0076]
我们假设不存在迅雷链数据,所以我们的mrc是直接训练在生成数据之上。
[0077]
他们的方法假设有训练数据,并且目标是在有训练数据的前提下提高性能。
[0078]
在训练的过程中,我们用使用indicator function i(q):
[0079][0080]
其中是生成的问题,是给定的答案。而i(q)被用来过滤一个数据点是否被使用。
[0081]
通过主动学习提高学习效率:首先,我们对命名实体或名词短语生成问题,然后从通用域运行训练过的的mrc模型。如果模型无法预测答案,我们将保存所有样本以进行主动学习。我们通过如下策略选择模型最没有把握的数据实现主动学习。
[0082][0083]
其中是生成的问题,和是给定的答案和上下文。而i(q)被用来过滤一个数据点是否被使用。
[0084]
第四步:用标注过的行业数据进行精调
[0085]
训练细节:当我们拥有大量在现实世界中大多数情况下的域内未标记数据时,我们的方法可以对那些大量未标记数据集进行特定于任务的预训练。整个培训流程遵循以下步骤;
[0086]
1.在公开可用的qa数据集(例如squad,nq和marco)上,从多种预训练语言模型(例如gpt

2和t5)构建多个问题生成器。
[0087]
2.使用问题生成器生成大量的问题。
[0088]
3.利用生成的数据集进行预训练。
[0089]
4.将上一步的模型在标注过的数据集上进行微调。
[0090]
我们使用大量生成的质量检查数据集进行预训练。我们使用了span bert架构进行预训练和微调。微调过程的目标功能是仅使用标记的数据来减少训练错误。微调步骤的主要目的是重新调整权重,这些权重可能由于生成错误而被错误地训练。
[0091]
使用squad和newsqa评估最终模型。squad用于探究域内qg预训练的效果,这意味
着使用相同的数据集进行问题生成和跨度预测模型。为了验证与qg模型源完全不同的新域,我们假设newsqa数据集是新域数据集,并且不包含任何训练,既不生成问题也不进行预训练。评估指标包括标准mrc指标:em和f1评分。
[0092]
·
exact match(em):top

1个答案的范围与正确答案完全匹配。
[0093]
·
fl

score:我们在单词级别计算返回的跨度和地面真相答案之间的单词重叠。
[0094]
域内vs.域外:在对来自同一数据集的示例进行训练和测试时,最近的自然语言处理模型已经取得了令人印象深刻的性能,但是在域外(ood)的示例上往往表现不佳,因为在测试中会出现许多看不见的事件。
[0095]
我们使用spanbert体系结构,该体系结构专注于预训练跨度表示形式以实现当前的最新结果,以显示域内和域外数据集之间的性能差异如何。我们假设
[0096]
squadl.l训练数据集是使用训练问题生成和预训练的域内数据集。我们使用newsqa数据集作为域外语料,其中不包含任何训练样本。我们发现,对域外数据进行测试时,em得分降低了78.5%(80.40%

>17.26%)0但是,借助问题生成器,我们能够在未标记的样本上生成域内质量检查数据。在squad1.1上,没有任何标记数据,我们可以达到最终性能的75%,在newsqa上没有任何标记数据,我们可以达到最终性能的60%。因为我们在构建问题生成时包括了在squad1.1训练数据。
[0097]
checklist评测:尽管测量保持的准确性一直是评估泛化的主要方法,但它常常高估了性能nlp模型,而评估模型的替代方法则着重于单个任务或特定行为。为启发根据软件工程中行为测试的原理,可以引入了checklist,一种用于测试nlp模型的与任务无关的方法。checklist包括一个通用语言能力和测试类型的矩阵,这些矩阵有助于进行全面的测试构想。他们通过测试三个任务来说明checklist的实用性,确定了商业模型和最新模型中的关键故障。所提出的方法,基于问题生成的预训练,实现了18%的失败率降低,尤其是在动物vs车辆v2(降低39%),公平(降低44%),时间(降低93%)方面。
[0098]
标注数据大小的影响:为了探索数据大小的预训练的有效性,我们在10%的数据集和100%的数据集上测试了qg预训练。结果表明,当我们有足够的数据集时,该模型收敛速度更快,但与最终得分没有太大差异。这表明,qg预训练在早期要比在后期更有用。
[0099]
生成数据大小的影响我们发现使用基于t5的生成的预训练模型比基于gpt

2的生成的性能更好。但是,当我们同时添加这两个数据时,性能将大大提高。生成的问题通常比人类更长,并且同时使用gpt和t5生成,我们能够添加更多不同的问题和答案来进行培训。在同一答案“moninder singh pandher”上,t5,gpt和人类完全提出了疑问吗?(t5:谁被下级法院判处死刑?”,gpt:杀害这名少年的工匠?,人类:谁被无罪释放?”)每个模型之间只有很少的单词重叠。因此,模型的多样性提高了后续mrc模型的泛化性。
[0100]
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
[0101]
尽管本文较多地使用了标注、域内等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1