CS224N(10)-QA
QA
一般来说,问答系统的目的就是根据给定的问题给出相应的答案。我们可以将其分解为两个步骤:1、查找(可能)包含答案的文档;2、在段落或文档中找到答案。
一、阅读理解
阅读理解是NLP中的一个比较重要的任务。它的发展分为以下几个阶段:
1、1977年的Yale A.I. Project;2、Revived by Lynette Hirschman in 1999;3、2013年Chris Burges提出的MCTest;4、2015/2016年随着预料规模扩大而产生的有监督神经网络系统。
1、MCTest
MCTest要求机器回答关于虚构故事的多选择阅读理解问题,且这些答案通常只能在故事中找到。
下面是一个简单的关于MCTest的示例:
二、开放领域的问答系统
开发领域的问答系统,也经历了多个发展阶段:
1、Simmons et al.(1964)首先探索了基于问题和答案的匹配依赖性解析来从说明文本中回答问题
2、Murax(Kupiec1993)旨在使用IR和浅层语言处理回答在线百科全书的问题
3、1999年开始的NIST TREC QA赛道首次严格调查了大量文件中的回答事实问题
4、IBM’s Jeopardy! System (DeepQA, 2011))引起了对问题版本的关注; 它使用了许多方法的集合DrQA(Chen等人,2016)使用IR,然后使用神经阅读理解,为开放域QA引入了深度学习方法
The architecture of LCC (Harabagiu/Moldovan) QA system的结构图如下所示:
三、Stanford Question Answering Dataset (SQuAD1.1)
这个数据集包含100K个例子,且每个问题的答案都位于同个段落中,且具备一定的跨度性。
下面是这个数据集中的一个样本示例:
对于当前的SQuAD,我们每次选取3个黄金答案,在评价模型的时候,我们有两个评价指标:1、完全匹配,如果三个答案中匹配到了一个值就为1,否则为0;2、F1-Score(macro),把系统和每个黄金答案作为一个词袋模型,计算精确度和召回率,进而得到F1-Score。
在实际应用中,通常使用F1-Score,因为它更加可靠。
四、SQuAD2.0
SQuAD 1.0的一个缺陷是每个问题都有单胺且所有问题的答案都在段落中。系统隐式的对候选结果进行排名并选择最佳候选结果,并且我们无需判断组成答案的回答是否是存在跨度。
在SQuAD 2.0中,1/3的训练问题没有答案,大约1/2的验证/测试问题没有答案,对于NoAnswer示例,对于完全匹配和F1,NoAnswer得分为1,其他的为0。
SQuAD 2.0最简单的系统方法,它对于组成答案的回答是否是存在跨度具有阈值分数或者您可以二次验证的方法来确认回答,它有点类似于自然语言推理(NLI)或“答案验证”。
SQuAD 2.0的例子:
虽然就目前来看,Bert系列模型在SQuAD 2.0上的表现已经十分接近于人类的表现,但是这些模型还是存在一些问题,如NLU错误。
SQuAD是一个目标明确,结构良好,干净的数据集,当然SQuAD还是有些不足的:
1.只有基于跨度的答案(没有是/否,计数,隐含的原因)。
2.答案来源于段落,没有涉及到事实/句子推断有时候得不到我们想要的答案。
五、Stanford Attentive Reader
这是一个在阅读理解和问答方面小巧且非常有用的框架。
其结构图如下所示:
基于这个结构,后续还提出了Stanford Attentive Reader++架构,其结构示意图如下:
对于这个架构来说,3层的BiLSTM表现是非常好的。
主要公式说明部分如下:
是段落中每个token拼接后的向量表示
Word Embedding选取Glove-300d
语言特征:POS & NER,one-hot encoded
Term frequency (unigram probability)
完全匹配:单词是否出现在问题中,它包含3个二进制特征: exact, uncased, lemma
六、BiDAF: Bi-Directional Attention Flow for Machine Comprehension
多年来,BiDAF架构有各种变体和改进,但核心思想是注意力流层,注意力流程的核心思想是想法:注意力应该双向流动-从上下文到问题,从问题到上下文。
其相似矩阵的表达式为:
Context-to-Question (C2Q) attention,主要是找出哪些查询词与每个上下文词最相关,其计算公式如下:
Question-to-Context (Q2C) attention: 主要是通过最大值的不对称性找出关于查询的上下文中最重要的单词的加权和,其计算公式如下:
对于每个段落的位置,其输出为:
对于BiDAF的modelling layer,其包含一个2层的双向LSTM。在进行答案选择时,将BiDAF的输出和modelling layer连接到密集的FF层,然后连接到softmax。然后将建模层M的输出通过另一个BiLSTM给出M2,然后与BiDAFlayer连接,再次通过密集的FF层和softmax。
七、其他高级模型
2016年,2017年和2018年的大部分工作都采用了越来越复杂的模型,其中包含各种注意力机制的变体,都产生了不错的收益。
1、Dynamic CoattentionNetworks for Question Answering
缺陷:问题具有与输入无关的表示
全面的QA模型需要相互依赖
Coattention layer提供了上下文和问题之间的双向注意力。但是Coattention涉及到了一个二级attention计算,在这里使用C2Q注意力分布αi来获取Q2C注意力输出bj的加权和。这给了我们二级关注输出si:
2、FusionNet(Huang, Zhu, Shen, Chen 2017)
模型结构图如下:
核心公式如下:
Multi-level inter-attention:
在多级互访之后,使用RNN,自注意力和另一个RNN来获得上下文的最终表示:。