课程主页:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/

视频地址:https://www.bilibili.com/video/av46216519?from=search&seid=13229282510647565239

这里回顾CS224N Lecture 10的课程内容,这一讲主要介绍了Question answering。

备注:图片均来自课程课件。

Question answering

Question answering类似于阅读理解,给定原文P和问题Q,我们希望给出回答A,模式如下:

Stanford Question Answering Dataset (SQuAD)

SQuAD是问答系统的一个经典数据集:

每个问题有3个答案,下面介绍两种评估结果的方式:

  • Exact match:如果和3个答案之一相同则为$1$,否则为$0$

  • $F_1$:把系统和每个答案作为bag of words,计算

注意回答A都是原文P的一段连续的话,所以输出只要指定Start和End即可,SQuAD 2.0是SQuAD数据集的改进,增加了没有回答A的数据。

Stanford Attentive Reader

该模型的整体架构如下:

具体方式为分别对原文P以及问题Q进行编码,然后利用attention计算start以及end,具体如下:

在上图中,首先利用双向LSTM对Q进行编码,最后生成加权和;另一部分,利用Q的词向量和P的词向量做attention,然后进行编码;最后将编码之后的结果利用attention计算start以及end。

Stanford Attentive Reader++

这部分介绍P中单词的特征表示$p_i$,其由如下几点构成:

  • 词嵌入(GloVe 300d)
  • 语言学特征:POS,NER标签,one-hot的形式
  • 单词频率(一元语言模型)
  • 完全匹配:单词是否出现在问题中
    • 3个二进制特征:精确,无大小写,lemma(不知道具体含义)
  • 对齐问题嵌入(“汽车” vs“车辆”)

BiDAF: Bi-Directional Attention Flow for Machine Comprehension

BiDAF的架构如下:

  • BiDAF体系结构有各种变体和改进,但中心思想是“注意流”层

  • 想法:注意流应该双向传播——从上下文到问题,从问题到上下文

  • 生成相似度矩阵($w$的长度为$6d$):

  • Context-to-Question (C2Q) attention:

  • Question-to-Context (Q2C) attention:

  • 对于每个通道位置,BiDAF层的输出为

  • 然后是一个建模层:通道上还有另一个深层(2层)BiLSTM

  • 答案范围的选择更加复杂:

    • 开始:将BiDAF和建模层的输出拼接,传递给全连接层,然后传递softmax
    • 结束:将建模层M的输出通过另一个BiLSTM生成M2,然后与BiDAF层拼接,然后再次通过全连接层和softmax