Lecture 10: (Textual) Question Answering

在这里插入图片描述


在这里插入图片描述
在谷歌搜索谁是澳大利亚第三任总理,会得到一个答案,包含了图片和简介。这个答案不是直接从结构化数据中搜索得来的,而是从网页(图中是从维基百科)中抽取出来的。文本问答就是完成的就是这样的任务。

motivation

  • 拥有大量的全文文档集合,例如网络,简单地返回相关文档的作用是有限的
  • 相反,我们经常想要得到问题的答案
  • 尤其是在移动设备上
  • 或是使用像Alexa、Google assistant这样的数字助理设备。
  • 我们可以把它分解成两部分
    1. 查找(可能)包含答案的文档
      可以通过传统的信息检索/web搜索处理
      (下个季度我将讲授cs276,它将处理这个问题)
    2. 在一段或一份文件中找到答案
      这个问题通常被称为阅读理解
      这就是我们今天要关注的

在这里插入图片描述
A Brief History of Reading Comprehension

  • 很多早期的NLP工作尝试阅读理解
    Schank, Abelson, Lehnert et al. c. 1977 –“Yale A.I. Project”
  • 由Lynette Hirschman在1999年复活
    NLP系统能回答三至六年级学生的人类阅读理解问题吗?简单的方法尝试
  • Chris Burges于2013年通过 MCTest 又重新复活 RC
    再次通过简单的故事文本的问答
  • 2015/16年,随着大型数据集的产生,闸门开启,这些数据集可以建立监督神经系统
    Hermann et al. (NIPS 2015) DeepMind CNN/DM dataset
    Rajpurkaret al. (EMNLP 2016) SQuAD
    MS MARCO, TriviaQA, RACE, NewsQA, NarrativeQA, …

Machine Comprehension (Burges 2013)
“一台机器能够理解文本的段落,对于大多数母语使用者能够正确回答的关于文本的任何问题,该机器都能提供一个字符串,这些说话者既能回答该问题,又不会包含与该问题无关的信息。”

MCTestReading Comprehension
在这里插入图片描述
A Brief History of Open-domain Question Answering (开放域问答)

  • Simmons et al. (1964)首次探索了基于问答匹配依赖性分析的说明文问答
  • Murax(Kupiec1993)旨在使用IR和浅层语言处理回答在线百科全书上的问题
  • NIST TREC QA跟踪始于1999年,首先对大量文件的事实问题进行了严格调查
  • IBM的危险!系统(DeepQA,2011)引起了对问答的关注;它使用了许多方法的集成
  • DrQA(Chen等人。2016)使用信息检索和神经阅读理解,为开放领域质量保证带来深度学习

Turn-of-the Millennium Full NLP QA:
[architecture of LCC (Harabagiu/Moldovan) QA system, circa 2003] Complex systems but they did work fairly well on “factoid” questions
在这里插入图片描述

Stanford Question Answering Dataset (SQuAD)

(Rajpurkaret al., 2016)
在这里插入图片描述
100K个例子,答案必须实在文章中,即就是抽取型问答

SQuADevaluation, v1.1

  • 作者搜集三个正确答案
    在这里插入图片描述

  • 将会在两个方法对系统打分
    精确匹配:精确到1/0,取决于你的答案是否与三个标准答案之一匹配
    F1:将系统和每个答案都视为词袋,并评估
    在这里插入图片描述
    分数是(宏观)平均每题F1分数

  • F1测量被认为是更可靠的,作为主要指标使用

  • 它不是基于选择与人类选择的完全相同的跨度,这很容易受到各种影响,包括换行

  • 这两个指标忽视标点符号和冠词(a, an, the only)

SQuAD2.0

  • SQuAD1.0的一个缺点是所有问题在段落中都有答案
  • 系统(隐式)对候选进行排名并选择最佳答案
  • 你不必判断一个span是否能回答这个问题
  • 在SQuAD2.0中,1/3的训练集问题没有答案,1/2的开发集/测试集问题没有答案
    • 对于No Answer examples, no answer 获得的得分为1,对于精确匹配和F1,任何其他响应的得分都为0
  • SQuAD2.0最简单的系统方法
    • 设置一个分数threshold来决定一个span是否回答了一个问题
  • 或可设置第二个组件来确认是否是真的答案
    • 类似 自然语言推理 或者 答案验证
  • 例子
    在这里插入图片描述

Good systems are great, but still basic NLU errors
得分高的系统很好,但依旧含有简单的自然语言理解问题
在这里插入图片描述
SQuADlimitations

  • SQuAD 也有其他一些关键限制
    • 只有 span-based 答案(没有 yes/no,计数,隐式的为什么)
    • 问题是看着段落构造的
      • 通常不是真正的信息需求
      • 一般来说,问题和答案之间的词汇和句法匹配比IRL更大
    • 问题与文章高度重叠,无论是单词还是句法结构
    • 除了共同参照,几乎没有任何多事实/句子推理
  • 不过这是一个目标明确,结构良好的干净的数据集
    • 它一直是QA dataset上最常用和最具竞争力的数据集
    • 它也是构建行业系统的一个有用的起点(尽管领域内数据总是很有帮助!)
    • 并且我们正在使用它

一些QA系统

Stanford Attentive Reader

[Chen, Bolton, & Manning 2016] [Chen, Fisch, Weston & Bordes2017] DrQA [Chen 2018]

  • 展示了一个非常成功的阅读理解和问答系统
  • 后来被称为Stanford Attentive Reader
  • 架构
    在这里插入图片描述
    问题:使用BiLSTM对问题进行编码,因为问题较短,所以只使用正向和反向得到的编码,对其进行拼接得到问题的最终表示
    在这里插入图片描述
    文章:同样使用BiLSTM对文章进行编码,因为文章较长,不能只使用RNN最后一个时间步来表示(seq2seq中提到的信息瓶颈问题),而是使用每个词的隐藏状态表示,将正反向拼接起来就得到了文章的最终表示,如下式所示
    在这里插入图片描述
    在这里插入图片描述
    问题和文章的交互(attention层):这一层通过使用注意力机制,来获取文章中的哪些词对于问题更加重要。文章表示就相当于我们之前提到的value,问题表示相当于query。以下为计算公式, o o 为本层输出,即文章和问题的最终表示。
    在这里插入图片描述
    根据我们之前所学的注意力机制,我们可以知道,这里使用了第二种计算注意力分数的方法
    预测层:直接使用softmax求解答案起始位置和结束位置。如下式
    在这里插入图片描述
    细节请看解析博客:https://www.imooc.com/article/28801

Stanford Attentive Reader++

在这里插入图片描述
在这里插入图片描述
问题部分:

  • 不再使用BiLSTM最后的隐藏状态,而是每个词隐藏状态的加权和(类似于self-attention的weighted sum)
  • 采用了更深的BiLSTM(3层最好)
    文章部分:
  • 依旧采用每个词的嵌入来表示
  • 不过嵌入发生了改变,由以下几部分组成
    • 词嵌入(GloVe300d)
    • 语言学特征:如POS(part of speech)和NER(named entity recognition) tag
    • term frequency (unigram probability)
    • 精确匹配:词是否在问题中出现
      • 又分为三种即exact match, uncased match(不区分大小写), lemma match(如drive和driving)
    • aligned question embedding
      与exact match相比,这可以看做是对于相似却不完全相同的单词(如car与vehicle)的soft alignment
      在这里插入图片描述
      右边的式子有错误,应该求的是 a i , j a_{i,j} ,表示文章中单词 p i p_i 与问题中单词 q j q_j 的相似度, α \alpha 是一层简单的FFNN

在这里插入图片描述
在这里插入图片描述

BiDAF: Bi-Directional Attention Flow for Machine Comprehension

(Seo, Kembhavi, Farhadi, Hajishirzi, ICLR 2017)
在这里插入图片描述
BiDAF的核心思想在于the Attention Flow layer

  • 注意力应该是双向的,既有从Context(即passage)到Query(即Question)的attention,又有从Query到Context的attention。
  • 首先计算相似矩阵
    在这里插入图片描述
    其中 c i , q j c_i, q_j 分别代表context vector与query vector。求得的 S i j S_{ij} 表示 c i , q j c_i, q_j 的相似度值,为一个实数。 w w 的维度为6d(每个向量维度为2h,因为是双向拼接,所以是2h,有三个向量拼接在一起(分号表示拼接),所以是6h)
  • 然后计算Context-to-Question (C2Q) attention,即对于每个context word,哪些query words更相关,计算结果为用query words词向量表示context word,即对所有query words词向量求一个加权和,权值为注意力分布。
    在这里插入图片描述
    注意这里的符号与架构图中的符号不太一样,其中 M M 相当于图中的 J J 表示问题的单词数目, N N 相当于图中的 T T ,表示文章的长度。
  • Question-to-Context (Q2C) attention:
    关于query,求文章中最重要词的加权和,这里只用一个向量表示整个问题,故对每列求了最大值,然后使用siftmax求文章中每个词的权值。
    在这里插入图片描述
  • 该层最终的输出为
    在这里插入图片描述
    分号表示向量拼接,其中 c i c_i :文章中第i个词的词向量, a i a_i :文章中第i个词关于问题的注意力表示, c c^` 表示问题的注意力表示

更加详细的解释看博客:https://zhuanlan.zhihu.com/p/53626872

  • modeling layer
    将上一层的输入经过一个2层的BiLSTM编码
  • answer span selection更加复杂
    • Start:通过BiDAF 和 modelling 的输出层连接到一个密集的全连接层然后softmax
    • End:把 modelling 的输出 M M 通过另一个BiLSTM得到 M 2 M_2 ,然后再与BiDAF layer连接,并通过密集的全连接层和softmax

Recent, more advanced architectures

  • 2016年、2017年和2018年的大部分工作都采用了越来越复杂的架构,并有许多不同的注意力机制,通常会带来良好的任务收益

Dynamic Coattention Networks for Question Answering
(CaimingXiong, Victor Zhong, Richard Socher ICLR 2017)

  • 缺陷:问题具有独立于输入的表示
  • 一个全面的QA模型需要相互依赖
    在这里插入图片描述
    CoattentionEncoder
    -
  • 首先得到文章P和问题Q的编码,然后计算相关性矩阵,对其进行softmax分别得到question里面每一个词和passage里面每一个词的attention分数 A D A^D 和passage里面的每一个词和question的attention分数 A Q A^Q 。然后计算经过attention的问题的新表示 C Q C^Q ,将问题的源编码矩阵 H Q H^Q 和经过attention的新表示 C Q C^Q 拼接在一起,然后根据 A D A^D 计算文章的新表示得到 C D C^D ,将 C D C^D H D H^D 拼接在一起,最后经过BiLSTM得到最终的文章和问题的表示。
  • 详细过程见博客:https://blog.csdn.net/chazhongxinbitc/article/details/78825704
  • 使用了双层注意力机制,将第一层注意力的输出作为第二层注意力的输入。
  • 这样做的好处,我的观点是:经过两层注意力,获取了更多了文章和问题之间的联系。
  • 在SQUAD上的表现
    在这里插入图片描述
  • SQUAD最近的结果:https://rajpurkar.github.io/SQuAD-explorer/

FusionNet(Huang, Zhu, Shen, Chen 2017)

  • Attention functions
    • MLP (Additive) form: S i j = s T t a n h ( W 1 c i + W 2 q j ) S_{ij} = s^Ttanh(W-1c_i+W_2q_j)
      space: O ( m n k ) , W O(mnk),W is kxd
    • Bilinear (Product) form:
      S i j = c i T W q j S_{ij} = c^T_iWq_j
      S i j = c i T U T V q j S_{ij} = c^T_iU^TVq_j
      S i j = c i T W T D W q j S_{ij} = c^T_iW^TDWq_j
      S i j = R e l u ( c i T W T ) D R e l u ( W q j ) S_{ij} = Relu(c^T_iW^T)DRelu(Wq_j)
      空间小,非线性
      空间:$O((m+n)k)
  • FusionNet tries to combine many forms of attention**
    在这里插入图片描述
  • Multi-level inter-attention
    在这里插入图片描述
    经过多层inter-attention,使用RNN,自注意力和 另一个RNN来获得context的最终表示: u i C {u^C_i}

在这里插入图片描述

ELMo and BERT preview

  • 使用类似语言模型的目标函数的上下文单词表示
    在这里插入图片描述

  • transformer:(Vaswani et al, 2017)

  • DrQA: Open-domain Question Answering
    (Chen, et al. ACL 2017) https://arxiv.org/abs/1704.00051
    在这里插入图片描述

  • Document Retriever
    在这里插入图片描述

  • General questions
    结合网络搜索,DrQA可以正确回答57.5%的琐碎问题

    总结

  • QA的历史

  • 开放域QA的步骤:1.找到包含答案的一份文件或一段文本 2.从文本中找到答案

  • 数据集:SQUAD1.1 和 SQUAD 2.0

  • 一些架构:

    • Stanford Attentive Reader:文章和问题编码,然后使用注意力获得两者语义联系,最后找出答案
    • Stanford Attentive Reader++:文章表示更加复杂,结合了多个特征。使用了更深的网络
    • BiADF:引入双向注意力
    • DCN:使用双向两层注意力
    • FusionNet:多层注意力
  • ELMo和BERT:类似语言模型的上下文的词表示

发布了29 篇原创文章 · 获赞 10 · 访问量 7162

猜你喜欢

转载自blog.csdn.net/weixin_42017042/article/details/104176936
今日推荐