当前位置: 代码迷 >> 综合 >> FastQA(Making Neural QA as Simple as Possible but not Simpler)
  详细解决方案

FastQA(Making Neural QA as Simple as Possible but not Simpler)

热度:63   发布时间:2024-01-31 15:44:58.0

摘要

近年来大规模问答数据集的发展引起了大量的端到端的问答神经网络模型。这些模型越来越复杂但是没有一个非常简单的神经网络基准模型与它们作对比从而证明它们复杂型的合理性。本文针对提取式QA任务提出一个非常简单的基于神经网络的基准模型。我们发现构建一个高性能的QA模型有两点重要成分:第一:在处理文章单词的时候要能够关注到问题的单词。第二:一个强有力的编码模型如RNN。我们的实验结果表明只需要满足上述两点的模型就可以达到很好的效果。

引言

一种特殊形式的QA任务-提取式QA任务:从文章中提取出问题的答案。
在这里插入图片描述
目前MRC模型的整体结构如图。
大部分模型在嵌入层,编码层和输出层类似,仅有少量创新,而主要集中于交互层的设计。
模型的简化实验仅仅只是去掉复杂结构中的一小部分而缺乏与基准模型的合理对比。本文提出的FastQA以一种不需要复杂交互机制的网络模型质疑那些设计复杂交互机制模型的必要性。

2 A Bag-of-Words Neural QA System

论文的启发思想在于,文章中答案的跨度类型应该与问题的所问的类型一致。
比如:
问题问的是When…?那么答案的跨度应该是一段时间。问题问的是Who…?那么答案的跨度就一定是人名。
此外,文章中正确答案的位置周围的单词应该与问题中的单词语义相近或者一致。比如论文中给出的那么例子。问题问的是When,那么锁定文章中所有是时间跨度的文本,然后问题中有名词St.Kazimierz Church,那么直接就可以定位到文章中St.Kazimierz Church名词周围的时间范围,大概率是答案,而不需要什么复杂的DCN,BiDAF等交互机制。

2.1 Embedding

FastQA采用单词嵌入+字符嵌入。

2.2 Type Matching

对于BoW词袋模型,我们提取问题中那些具有鲜明的提问形式的文本如who,when,why,how many等,或者某些提问单词后的第一个单词如what year did把year提取出来,这种方式也叫LAT(Lexical answer type)指的是这类问题的单词具有提问的色彩。
通过连接这些单词的词嵌入以及问题跨度单词的词嵌入通过一个全连接层得到一个向量

同样的编码文章中每一个可能的答案跨度(s,e),最大长度设置为10.通过连接答案跨度的第一个单词和最后一个单词的词嵌入以及跨度内所有单词词嵌入表示的平均值。而答案跨度周围的单词往往也提供着重要的线索。因此本文在每一个答案跨度外两边各自再选取5个单词。
然后同样的通过全连接层得到一个向量.
最后对于LAT表示以及每一个可能答案跨度表示连接通过输出维度是1的全连接层得到当前这个可能答案的类型分数 g t y p e ( s , e ) g_{type}(s,e)

类比于上面的例子,对于问题中的单词When我们在文章中找到三个可能的答案位置,并且分别计算各个的类型分数。

2.3 上下文匹配

为了考虑一个答案跨度周围的单词,我们引入两种word-in-question特征。

binary

二元word-in-question特征表示的是如果文中的单词出现在问题里,那么该特征值为1,反之为0

weighted

公式2表达的含义是根据问题中的单词的词嵌入表示 q i q_i 和文章中单词的词嵌入表示 x j x_j 计算它们之间的相似性(因为Word2Vec指出语义越相近的单词在向量空间中距离也越近)
所以公式(3)计算的是文中每一个单词和问题的相似性,按照这种思路一个可能答案跨度内所有单词与问题的相似性,最后得到 g c t x t ( s , e ) g_{ctxt}(s,e)

2.4 Answer Span Scoring

最终一个可能答案跨度它的得分就是类型匹配的得分+上下文匹配的得分。

3 FastQA

词袋模型不能步骤单词之间的语序关系,此外这种方式下答案的范围是限制在固定长度的。

我们的另一个baseline是利用BiRNN结合一个答案输出层。
FastQA由三个层组成,缺少的就是交互层。FastQA不像之前的模型设计复杂的交互机制,而是在嵌入层和编码层中加上一些可以计算得到的单词层面的一些特征,比如文章中那个单词出现在问题中,以及在单词层面上计算文章中每一个单词与问题的相似度。

3.1 Encoding

编码层的输出是嵌入层的输出,本文的嵌入层有词嵌入+字符嵌入,还有每一个单词的二元和权重word-in-question特征,整体作为编码层的输入。

3.2 Answer Layer

在编码了文章X以及问题Q后,

  • 把问题Q表示为一个固定维度的向量,具体的就是将Q通过输出维度是1的全连接层然后softmax,再利用计算结果对Q加权求和得到一个向量。
  • 然后利用这个向量和文章表示通过一层激活函数为ReLU的全连接层,然后再通过输出维度是1的全连接层,softmax后就计算得到了文章中每一个单词作为答案起始位置的概率
  • 接下来计算答案终止位置,公式9中的 h s h_s 代表的应该是上一步预测出来的答案起始位置那个单词的向量表示,以此计算答案终止位置的概率。

4 对比之前的模型

在嵌入层方面FastQA采用词嵌入+字符嵌入,而这种方法很多论文都这样做的。编码层几乎很多论文都是BiRNN,

FastQA与其它论文唯一的不同点是编码层的输入加上了两个额外的word-in-question特征。

回顾前面模型的交互层,比如单向注意力的模型有:
Match-LSTM,双向的有BiDAF和DCN。这些交互机制的整体思想为了丰富文章的语义信息从而更好的预测答案,具体的就是利用文章的语义向量和问题做注意力然后将问题融合到文章里。FastQA根本没有交互层。

  相关解决方案