《Natural Questions: a Benchmark for Question Answering Research》TACL2019论文阅读

目录

提出数据集的目的:

目标:

NQ摘要:

标注流程:

与其他数据集对比:

任务定义和数据收集:

标注质量的评估:

专家评估正确性:

Precision Measurements 结果

Annotations的可变性:

评估策略:

定义评价措施:

有关数学证明:

Baseline 表现:

Document-QA:

Custom Pipeline (DecAtt + DocReader):

长答案的选择:

短答案选择:

训练:

结果:

最后:

NQ数据集的一些性质:


 


机构为:Google

这是一篇关于如何构建数据集的论文。

这是去年的一篇论文,但在数据集方面算是最新的标杆了。

提出数据集的目的:

论文认为目前在机器翻译、语音识别、图像识别有很大的进步,一方面是由于深度学习的表现超过之前的方法,另一方面是有质量很高的训练数据。

但是目前有关开放域问答获取问题的方法和问题的来源、用于注释和收集答案的方法、用于度量和确保注释质量的方法以及用于评估的度量。都是具有一定局限性。

因此提出了NQ数据集。

目标:

1.在QA问题上提供一个大规模端到端的训练数据。2.希望能够推动NLU的研究发展。3.在为自然问句注释时研究的人的表现。

NQ摘要

NQ的问题来自谷歌搜索真实的问题。annotator会得到一个问题和top 5维基百科页面,如果页面上有一个长答案(通常是一个段落)和一个简短的答案(一个或多个实体)进行标注,否则注释者会标记为null(如果没有长/短答案)。公开发行版包括307373个带有单个注释的训练例子,7830个具有5-way annotated的dev data,以及另外7842个5-way annotated数据作为test data。

论文通过实验验证了数据的质量。还描述了对302个例子的25-way annotations的分析,给出了注释任务中人类可变性的观点。为了评估问答系统,论文引入了稳健的指标;论证了这些指标的人类上限;并使用从相关文献中提取方法来构建baseline。

标注流程:

论文的注释过程如下。annotator会看到(question, Wikipediapage)对。注释器返回(long answer,short answer)对。长答案(l)是Wikipedia页面上的HTML边界框—通常是包含回答问题所需信息的段落或表格。如果页面上没有答案,或者回答问题所需的信息分散在多个段落中,annotator可以返回l=NULL。简短的答案可以是l中回答问题的一个或一组spans(通常是实体)、“Yes”/“No”答案,以及NULL。如果l=NULL,那么s=NULL是必然的。下图展示一个例子:

与其他数据集对比:

对于SQuAD、SQuAD2.0 和Narrative QA 以及HotpotQA,这些数据集的问答对是由annotator阅读一段带有答案的文本生成的,相比对NQ来说,

SQuAD有两个局限:1.问题和答案十分相似。2.SQuAD的任务是使用单独的问题从一个带答案的文本中选择答案。

SQuAD2.0增加了无答案问题,有进步。但论文认为,在SQuAD 2.0中识别人工无法回答的问题所需的推理远远少于确定特定段落是否包含足够的信息来完全回答NQ中要求的问题。同时目前最好的model的在SQuAD2.0上已经很接近人类表现了,但是在NQ上仍然有很大的差距。

Narrative QA通过要求annotator从摘要文本中生成问题和答案,避免了出现的一些priming effects(启动效应),该摘要文本与评估时用作验证的故事文本是分开的。数据集没有为此提供人类表现。这些问题也是人造的。它们不太可能代表真实用户查询中带有歧义和预设问题。

HotpotQA被设计成包含需要对来自不同维基百科页面的文本进行推理的问题。为了达到这个目的,annotator得到了严格的标注指示,但论文认为,这会导致一些不自然的问题。

Trivia QA:包含question/answer/collection 三元组,问题和答案取自网上的小测验。集合是一个或多个文档的集合。其中每一个都保证包含答案字符串。论文认为,解决trivia quizzes与回答寻求信息的用户问题有关,但不一致。在TriviaQA中,也不能保证答案出现在包含正确evidence的上下文中(TriviaQA的创建者将数据描述为远程“distant”监督)。在NQ中,所有答案都是在正确的上下文中提供的。

QuAC 和 CoQA 数据集:是多轮对话加上一个问题,但是询问的问题倾向于在小范围的文本中,NQ则是一个问题可能需要对整个段落或者页面的信息进行推理。

WikiQA 和MS Marco:WikiQA定义方法和NQ类似,但是数据量对于神经网络来说太小了,MS Marco使用的free-form的文本,但是很难去评估标注质量。但是对于NQ来说评估数据是关键的。

任务定义和数据收集:

NQ是由(question,wikipedia page,long answer,short answer)四元组组成。

NQ中的问题都是由多个用户在Google上搜索8个单词以上的句子。问题分为以下类:1.由who、when、where开始后跟:a) do或情态动词的有限形式; b) “be”或“have”的有限形式,动词位于后面的某个位置; 2. 以“who”开头,后面紧跟一个动词,该动词不是“be”的有限形式;3.包含多个实体以及形容词、副词、动词或限定词;4. 包含紧跟在介词或关系从句前面的名词短语;5. 以名词性名词词组结尾,不包含介词或关系从句。

对问题进行筛选,去掉一些非问题的查询。聚焦于长问题,这样对deep NLU是一种挑战。未来的数据收集工作可能会引入较短的查询、“how to”问题或维基百科以外的领域。

人工识别答案:

首先进行问题识别,判断问题是否是一个好问题,好问题应该是清晰的,可以通过解释或实体进行回答的。对于好问题,annotators选择第一个HTML边界框—包含回答问题所需信息的段落或表格一系列实体。或者无答案选择。之后进行短答案的选择。

标注质量的评估:

数据包含(q,d,l,s)四元组,同时论文引入随机变量Q、D、L、S对应这些实体。L是文本的span或者为NULL,同理S一个或多个spans在L中,bool或NULL。先考虑(q,d,l)三元组,对于(q,d,s)方法也一样。每个数据(q,d,l)是独立同分布(IID)抽样:

p(q,d)是抽样分布(probability mass function (PMF) 是离散随机变量在各特定取值上的概率)关于q/d对的概率。PMF的抽样流程如下:1. 从分布随机取样question,2.将问题进行搜索并作为潜在的答案。最后1)返回p(q,d)如果d是top 5的搜索结果,返回第一个d;2)如果top 5没有Wikipedia page则丢弃question。之后不断重复迭代。

p\left(l\middle| q,d\right)是条件分布(PMF),长答案取决于\left(q,d\right)对。l值获取:(1)从annotators pool 中随机均匀地选择annotator;(2)给annotator提供\left(q,d\right)对,然后返回l不是绝对的,是因为两点随机性:(1)annotator的随机选择(2)一个annotator的潜在随机行为(annotator可能根据一天中的时间给出不同的答案等等)。

论文也考虑如下分布:

P(L\neq NULL)=\sum_{l,q,d:l\neq N U L L}p(l,q,d)\ p(l,q,d|L\neq NULL)是三元组\left(l,q,d\right)的概率。

也定义了annotations的precision,考虑function\pi(l,q,d)等于1当l\left(q,d\right)的正确答案,否则就是0。之后会给\pi一个确切定义。Annotation的准确度定义为:

专家评估正确性:

论文用了四位专家来做这些判断。这些专家为annotation编写了指南。在第一阶段,四位专家各自独立地注释了示例的正确性。在第二阶段,四位专家开会讨论判断中的分歧,并就每个例子达成一致的判断。

关键是确定实例的正确性标准,给定三元组(l,q,d),我们在dpage上抽取与l相对应的l^\prime(q,l^\prime)给专家,专家将(q,l^\prime)进行分成三类:

                                                                                                          Correct(C)、Correct(but debatable)(C_d )、Wrong(W )

对于这些情况,注释者之间对于页面是否包含答案常常存在分歧:在考虑25-way annotations时,会看到这样的现象。

Precision Measurements 结果

评估流程如下

1.独立同分布随机取样从p(l,q,d|L\neq NULL)分布,设置集合S,|S|=139,

2.四个专家分别将S分类成C、C_d、WC_d、WW

3.四个专家对每个例子进行协商统一。

对每个(l^i,q^i,d^i)\in S,我们定义c^i作为最后判断。以上过程对于短答案也一样。

我们计算各类所占比例如下图所示,\hat{E}^(C)=\frac{1}{|S|}[[c^i=C]],其中[[e]]e为true时为1,e为false时为0。

Annotations的可变性:

为了研究variability,论文从单独的annotators收集附加24个annotations,对应S中每一个(l,q,d)三元组。对于每个(l,q,d),我们目前有5元组(q^i,d^i,l^i,c^i,a^i),其中a^i=a_1^i...a_{25}^i是一个25维的标注vector。c^i作为l^i最后判断。对于每个i有如下定义:

是非空25-way annotations的比例。

论文认为u^i和annotation precision有很高的联系。定义:

在25 个annotators中大于80%的标记非空长答案的中所占比例。

在上面的基础上增加了c^i=\ C,类似的定义可以应用C_d、WW上,在不同区间(0,0.2],(0.2,0.4]等等。

 最大争议在于C_d类上,有的人认为是信息足够回答问题有的人却感觉不足以回答问题。除了不同意(q,d)是否包含有效答案之外,注释者也可能不同意最佳答案的位置。在许多情况下,页面上的多个不同位置都有多个有效的长答案。在我们的25-way annotated数据中,我们看到的最极端的例子是“命名用于制造灯泡灯丝的物质”与维基百科关于白炽灯的网页配对。annotator确定了7段讨论钨丝的章节。

简短的答案可以被任意划分,这会导致极端的变化。我们在25-wayannotated数据中看到的最极端的例子是“血液离开右心室后被泵入何处”这一问题有关11个不同但正确的答案。在这里,14位annotator将“to the lungs”的子串作为最好的简短答案。其中,6个标记整个字符串,4个将其减为“the lungs”,4个将其减为“lungs”。还有6位annotator认为这个简短的答案不够充分,他们选择了更精确的短语,例如“through the semilunar pulmonary valve into the left and right main pulmonary arteries (one for each lung)”。剩下的5个annotator认为没有足够的简短答案。

对于每个问题,我们根据选择25个annotator对答案注释的数量进行排序。我们发现,只要取top 1的长答案,数据占到长答案注释的83%。取top 2长答案占长答案注释的96%。一个问题有超过三个不同的long答案注释是非常罕见的。Short answer具有更大的可变性,但top 1的独特的short 答案仍然占所有short答案注释的64%。top 3的short答案占所有short答案注释的90%。

评估策略:

这一部分,论文利用u^i与准确度之间的相关性来定义一个评估答案质量的指标,同时,论文还展示了一个基于(l,q,d)三元组训练的模型度量优于单个annotator通过考虑答案是否存在的不确定性。

NQ将5-way annotations 7830个items上为验证集,将为7842个items(5-way annotations)作为测试集。这部分描述了使用评估数据的评估指标,并给出了这些指标的合理性。

论文选择5-way annotations的原因如下:首先,我们有证据表明,从5个annotators在一起注释可能比依赖单个annotator更robust。第二,5个annotators是一个足够小的数目,注释数千个dev和test items的成本并不高。

定义评价措施:

假设有个带有\theta参数模型f_\theta是个映射,把(q,d)输入到长答案l=\ f_\theta(q,d)。评估这个模型的准确率。\left \{q^{(i)},d^{(i)},a^{(i)}\right \},i=1…n为评估样例,q^{(i)}为问题,d^{(i)}为文档,a^{(i)}是5维的vector包含a_j^{(i)},j=1…5.每一个a_j^{(i)}代表了第j个annotator的输出,输出可以是d^{(i)}中的段落也可以为NULL。5个annotators是随机统一从annotators pool中选取的。

评估策略如下:

如果5个annotators中至少有2个在示例中给出了非null长答案,则系统需要输出在5个annotations中至少出现一次的非null答案;反之,如果少于2个annotators给出非null长答案,则系统需要返回null作为其输出。

为了更加规范,定义g(a^{(i)})作为a^{(i)}中非空的注释数。定义h_\beta(a,l)为判断标签l给定注释a=a_1...a_5的正确性,该函数带有整数参数\beta。如果l是判断正确返回1,判断错误返回0。

在实验中\beta=2,模型的准确度为:

A_\beta是对underlying分布的准确性的估计。定义\overline{A_\beta}(f_\theta)=E[h_\beta(a,f_\theta(q,d))]。这个期望关于a=1-\overline{a}p(a,q,d)=p(q,d)\Pi_{j=1}^5p(a_j|q,d),其中p(a_j|q,d)=P(L=a_j|Q=q,D=d),注释a_1...a_5独立同分布从p(l|q,d)中抽取出来。

模型训练在(l^{(i)},q^{(i)},d^{(i)}),三元组是从p(l,q,d)独立同分布中抽取出来的,在度量(measure)上会超越单个annotator的表现。

如果我们有模型p(l|q,d;\theta)训练三元组(l,q,d),是能够很好的近似到p(l|q,d),可能使用p(l|q,d;\theta)去预测表现会优于单个随机从p(l|q,d)出来的预测结果。

贝叶斯最优假设(Bayes optimal hypothesis)为h_\beta,定义为argmax_fE_{q,d,a}[[h_\beta(a,f(q,d))]]p(\cdot|q,d)的后验分布,通常会超过单个随机annotation的性能E_{q,d,a}[[\sum_{l}p(l|q,d)\times h_\beta(a,l)]]

有关数学证明:

具体的讲,对于输入(q,d),如果我们定义l^\ast=argmax_{l\neq N U L L}p(l|q,d),r=p(l^\ast|q,d),\overline{r}=p(NULL|q,d)r=p(l^\ast|q,d)\overline{r}=p(NULL|q,d)(q^{(i)},d^{(i)},a^{(i)},b^{(i)})。贝叶斯最优假设:

如果P(h_\beta(a|l^\ast)=1|r,\overline{r})\geq P(h_\beta(a|NULL)=1|r,\overline{r})输出l^\ast,否则输出NULL。已知r,\overline{r}使用这种策略是直接的。使用这种策略可以获取超过从p(l|q,d)简单采样l并进行同样的方式进行预测的准确率。预测模型p(l|q,d;\theta)训练三元组(l,q,d),可以收敛到r,\overline{r}。特别的是当r+\overline{r}=1时,我们有

                                                                                                                P(h_\beta(a|NULL)=1|r,\overline{r})={\overline{r}}^5+5{\overline{r}}^4(1-\overline{r})

                                                                                                            P(h_\beta(a|l^\ast)=1|r,\overline{r})=1-P(h_\beta(a|NULL)=1|r,\overline{r})

表示贝叶斯最优假设预测l^\ast,如果r\geq a\ ,a\approx0.31381,其他情况下为NULL。a=1-\overline{a},则{\overline{a}}^5+5{\overline{a}}^4(1-\overline{a})=0.5

我们还从经验上证明了这一点,通过从20-way annotations构造一个p(l|q,d)的近似值,然后使用这个近似值来做出显著优于单个annotator的预测。

准确率(P)和召回率(R):

设置指标的上限,利用之前25-way annotated数据来创造一个“super-annotator”。使用四元组(q^{(i)},d^{(i)},a^{(i)},b^{(i)}),前三个分别代表了question、document以及5维vector的注释。b^{(i)}是一个20维标注的vector,b_j^{\left(i\right)}j=1…20.和a^{(i)}类似都是从相同的分布中抽取出来。如果g(b^{(i)})<a则预测维null,否则l^\ast=argmax_{l\in d}\sum_{j=1}^{20}[[l=b_j]]。论文将“super-annotator”作为最高上限

Baseline 表现:

NQ是为了提供一个评估问答系统性能的基准。NQ中的每一个问题在字符串匹配下都是唯一的,并且我们将NQ中的问题随机地分割成单独的训练集/验证集/测试集。为了便于比较,我们引入了基线,在这里我们提出了在提交时是最先进的完善的基线。论文建议读者参考Alberti等人(2019),该书收录了问答建模的最新进展。我们所有的基线都集中在长答案和短答案提取任务上。我们把bool的答案放在未来解决。

NQ的long answer选择任务允许几个未经训练的baseline。Wikipedia页面的第一段通常作为关于页面主题的最重要信息的摘要。因此,我们实现了一个long answer baseline,它只简单选择所有页面选择第一段。

此外,由于验证集中有79%的wikipedia页面也出现在训练集中,所以我们实现了两个’copying’baseline。第一个简单地选择应用于训练集中给定页面的最频繁的注释。第二种方法根据TF-IDF加权词重叠选择最接近验证集问题的训练集问题的注释。这三个基线分别在下表中列为“First paragraph”、“Most frequent”和“Closest question”。

Document-QA

Document-QA参考实施用于NQ task。这个系统在SQuAD和TriviaQA的short答案提取任务上表现良好,但它不能用来表示:(i)不包含short答案的long答案,以及(ii)NQ中出现的空答案。

为了解决(i)我们在训练时选择最短的可用答案跨度,通过识别long答案候选对象的特殊开始和结束标记来区分长答案和短答案。在预测时,模型可以预测long答案(没有短答案),也可以预测短答案(意味着有长答案)。

为了解决(ii),我们尝试添加特殊的NULL段落来表示缺少答案。然而,我们通过对有答案的问题子集bz_l=W^T[x_l,r_l,u_l,v_l]+b行训练,然后只预测得分超过阈值的答案,从而获得了更好的性能。

通过这两个修改,我们可以将Document-QA应用于NQ,将文档删减到与问题具有最高TFIDF相似度的段落集。在这种方法下,我们认为前16个段落是长答案。我们认为short答案最多包含17个单词。我们训练Document-QA为30 epochs,batch_size=15。设置事后评分(post-hoc score)阈值到3.0。所有这些值都是根据验证集性能选择的。

Custom Pipeline (DecAtt + DocReader)

长答案选择任务的一种观点是,它与自然语言推理(NLI)的关系比短答案提取更为密切。有效的长答案必须包含推断答案所需的所有信息。short答案不需要包含这些信息,它们需要被这些信息包围。

出于这种直觉,我们实现了一种流水线方法,从NLI文献中提取的模型来选择长答案。然后short答案提取模型来自short答案提取的文献中。

长答案的选择:

t(d,l)表示序列d中候选长答案l的token,使用可分解注意力模型(Decomposable Attention model)去对每个问题计算一个分数,候选对x_l=DecAtt(q,t(d,l))。在此基础上,我们添加了一个10维可训练的embeddingr_lr_l表示序列中长答案候选者的位置。标量v_l包含qt(d,l)共享的权重,其按IDF(inverse document frequency.)加权。

长答案分数z_l是lienar function,z_l=W^T[x_l,r_l,u_l,v_l]+bW^Tb是可训练权重vector和bias。

短答案选择:

给定长答案,Document Reader model缩写DocReader,用来提取短答案

训练:

长答案选择模型最小化正确答案 l^i负对数似然带一个超参\eta,用来降低null的权重

我们发现,包含\eta对于解释标签的不对称性是有用的,因为空标签比答案位置信息量少。与预测分数的事后阈值化(post-hoc thresholding)相比,可变\eta似乎也提供了一种更稳定的设置模型精度点的方法。在short answer 模型中,使用了类似的策略,没有实体答案的例子被赋予不同的权重。

结果:

上表显示了所有基线、single annotator以及上面介绍super-annotator的的结果。显然,这两项任务都有很大的发展空间。我们发现,在长答案识别方面,DocumentQA的表现明显比DecAtt+DocReader差。这是可能是因为DocumentQA只针对short answer任务而设计的。

为了将这些结果建立在可比较任务的背景下,我们对长答案和短答案都有非空标签的NQ子集的性能进行了度量。

DecAtt+DocReader在长回答任务中获得68.0%的F1,在短答案任务中获得40.4%的F1。我们还研究了在给出长答案和已知短答案的情况下,短答案抽取系统的性能。

最后:

论文认为由于缺乏适当的训练和测试数据,问答的进展受到阻碍。为了解决这个问题,提出了NQ。这是第一个将真实用户查询与文档中答案的高质量注释配对的大型公共可用数据集。为了评估问答系统的性能,论文还提出了与NQ一起使用的指标。我们展示了这些度量的一个高上限,并表明现有的方法没有接近这个上限。我们认为,他们要做到这一点,就需要在NLU取得重大进展。

NQ数据集的一些性质:

  1. 问题是自然的,都来源都是来自真实世界的询问。
  2. 使用5-way annotated,并在后文中验证其是合理的。
  3. 该任务被设计为接近端到端问答。
  4. 确保大规模的高质量注释
  5. 进行评估质量
  6. 研究问题的可变性(variability)
  7. 引入了robust的评价指标

 

 

 

### GLUE 基准及其在自然语言理解 (NLU) 多任务评估中的应用 #### 什么是 GLUE 基准? GLUE(General Language Understanding Evaluation)基准是一种用于评估自然语言处理模型语义理解能力的多任务框架[^1]。它由一系列 NLU 任务组成,旨在全面衡量模型的语言理解和泛化能力。 #### GLUE 的任务构成 GLUE 包含 9 个核心任务,这些任务均涉及单句或双句的理解问题,具体如下: - **MNLI**(Multi-Genre Natural Language Inference):跨多个领域判断句子之间的推理关系。 - **QQP**(Quora Question Pairs):检测 Quora 上的问题是否重复。 - **QNLI**(Question-NLI):通过自然语言推断回答给定问题。 - **RTE**(Recognizing Textual Entailment):识别文本蕴含关系。 - **STS-B**(Semantic Textual Similarity Benchmark):测量两个句子间的语义相似度。 - **MRPC**(Microsoft Research Paraphrase Corpus):判定两句话是否互为同义表达。 - **CoLA**(Corpus of Linguistic Acceptability):预测句子语法和语义接受程度。 - **SST-2**(Stanford Sentiment Treebank):分析电影评论的情感倾向。 - **WNLI**(Winograd NLI):解决代词消解问题。 上述任务涵盖了多种语言现象,包括但不限于逻辑推理、情感分析以及语义匹配等。 #### GLUE 在多任务学习中的作用 为了更好地支持多任务场景下的 NLP 模型开发,研究人员提出了基于 GLUE 的解决方案。例如,在一篇来自微软的研究论文中提到一种名为 MT-DNN(Multi-Task Deep Neural Networks)的方法,该方法能够有效提升单一模型在多项 NLU 任务上的综合表现[^2]。 此外,还有其他工作扩展了传统意义上的 GLUE 设计理念。比如 ASR-GLUE 将自动语音识别引入到标准 NLU 测试集中,进一步考察当输入存在不同程度噪音干扰时系统的鲁棒性表现[^4]。 #### 实际案例展示 以 BERT 和其变体为例说明如何利用 GLUE 数据集进行实验验证。下图展示了 SST-2 这一特定子任务上几种主流架构的表现情况对比图表显示即使面对加入随机扰动后的样本集合,“人类级”的基线仍然难以超越某些精心设计的人工智能算法。 ```python import matplotlib.pyplot as plt # Sample data representing accuracy across different noise levels. noise_levels = ['Clean', 'Low Noise', 'Medium Noise', 'High Noise'] human_performance = [0.87, 0.85, 0.83, 0.78] model_a_accuracy = [0.92, 0.88, 0.86, 0.80] plt.figure(figsize=(10, 6)) plt.plot(noise_levels, human_performance, label='Human Performance') plt.plot(noise_levels, model_a_accuracy, label="Model A's Accuracy", linestyle="--") plt.title('Accuracy Comparison Between Human and Model Under Various Noises on SST-2 Task') plt.xlabel('Noise Levels') plt.ylabel('Accuracy Score') plt.legend() plt.grid(True) plt.show() ``` 此代码片段绘制了一条折线图用来直观呈现随着环境复杂性的增加两者之间差距的变化趋势。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值