公众号关注 “ML_NLP
设为 “星标”,重磅干货,第一时间送达!
来自 | 知乎
地址 | https://zhuanlan.zhihu.com/p/67214500
作者 | 川陀学者
编辑 | 机器学习算法与自然语言处理公众号
本文仅作学术分享,若侵权,请联系后台删文处理
问答系统(Question Answering)
实际需求很多,比如我们常用的谷歌搜索就可看做是问答系统。通常我们可以将问答系统看做两部分:从海量的文件中,找到与问题相关的可能包含回答的文件,这一过程是传统的information retrieval;从文件或段落中找到相关的答案,这一过程也被称作
Reading Comprehension阅读理解
,也是这一讲关注的重点。

SQuAD

Reading Comprehension需要数据是Passage即文字段落,Question问题以及相应的Answer回答。SQuAD(Stanford Question Answering Dataset)就是这样的数据集。对于每个问题都有人类提供的三个标准答案,为了评估问答模型,有两个metric:
  1. Exact Match,即模型回答与任意一个标准答案匹配即计数为1,否则为零。统计整体的准确率。
  2. F1,即将模型答案与标准答案当做bag of words,计算 
     , 
     ,并计算它们的harmonic mean 
     ,然后对所有问题的F1求平均值。
通常F1 score被当做是更可靠的metric。
SQuAD 1.0版本中所有问题的答案都包含在段落中,而2.0版本中引入了一些问题在段落中是没有答案的,对于这类问题,当模型输出没有答案时得分1,否则为0。
当然SQuAD存在其局限性:1.答案需直接截取自段落中的文字,没有是非判断、计数等问题。2.问题的选择依赖于段落,可能与实际中的信息获取需求不同那个。3.几乎没有跨句子之间的理解与推断。

Stanford Attentive Reader

接下来讲的是Manning组的关于QA的模型Stanford Attentive Reader。
其思路是对于Question,先利用Bidirectional LSTM提取其特征向量。
再对Passage中的每个单词进行Bidirectional LSTM提取其特征向量, 并对每个单词对应的特征向量与问题的特征向量进行Attention操作,分别得到推测答案起始位置与终止位置的attention score,损失函数为 
 。
之后还在该模型基础上进行了改进:
  1. 对于question部分,不仅仅是LSTM最后的输出,而是用了类似于self-attention的weighted sum来表示,并且增多了BiLSTM的层数。
  2. 对于passage的encoding,除了利用Glove得到的word embedding之外,还加入了一些语言学的特征,如POS(part of speech)和NER(named entity recognition) tag以及term frequency。另外还加入了比较简单的特征如段落中单词是否出现在问题中的binary feature,对于这种match,又分为三种即exact match, uncased match(不区分大小写), lemma match(如drive和driving)。更进一步,还引入了aligned question embedding, 与exact match相比,这可以看做是对于相似却不完全相同的单词(如car与vehicle)的soft alignment: 
     ,其中 
     代表了段落中单词 
     与问题中单词 
     的相似度。

BiDAF

另一个比较重要的QA模型是BiDAF(Bi-Directional Attention Flow),其模型结构如下。
其核心思想是Attention应该是双向的,既有从Context(即passage)到Query(即Question)的attention,又有从Query到Context的attention。
首先计算similarity matrix
其中 
 分别代表context vector与query vector。
对于Context2Query Attention,我们想要知道对于每个context word,哪些query word比较重要,因此得到attention score及weighted vector:
而对于Query2Context Attention,我们想要知道对于query,哪些context words与任意一个query words相似度较高,我们得到对于query来说最关键的context words的加权求和:
由此,我们得到了Attention Flow Layer 的输出
再对其进行多层LSTM与Softmax得到相应的输出。
更近期的发展基本上是更复杂的结构以及attention的各种结合。对于embedding的提取方面,也更多采用contextual embedding,收到了很好的效果,关于contextual embedding如Elmo,BERT等会在第13讲详细讲解。
参考资料
第十讲讲义web.stanford.edu/class/
补充材料web.stanford.edu/class/
第十讲视频youtu.be/yIdF-17HwSk
论文
A Thorough Examination of the CNN/Daily Mail Reading Comprehension Task
Reading Wikipedia to Answer Open-Domain Questions
Bidirectional Attention Flow for Machine Comprehension
重磅!忆臻自然语言处理-学术微信交流群已成立
可以扫描下方二维码,小助手将会邀请您入群交流,
注意:请大家添加时修改备注为 [学校/公司 + 姓名 + 方向]
例如 —— 哈工大+张三+对话系统。
号主,微商请自觉绕道。谢谢!
继续阅读
阅读原文