文章目录
ABSTRACT
机器阅读理解(machine comprehension,MC),即根据上下文段落回答问题,要求对上下文和问题之间的复杂交互进行建模。最近,注意力机制成功应用在MC上。特别是这些模型使用attention对context的部分内容进行专注,并简化成特定大小的向量,有时结合attention,或是构造uni-directional attention。本文介绍Bi-Directional Attention Flow (BIDAF),多阶段的多层次的处理,把文本表现成不同级别上的粒度,并使用bidirectional attention flow mechanism 获得没有摘要抽取的问题的文本表示。实验表示,模型在Stanford Question Answering Dataset (SQuAD) 和CNN/DailyMail cloze test获得最好的结果。
1 INTRODUCTION
机器阅读理解machine comprehension (MC) 和问答系统question answering (QA)在NLP和CV获得很大的发展。系统在text和image上训练end-to-end模型,获得预期结果。促进进步的重要因素是neural attention的使用,允许系统专注context的部分内容(MC),或是图像的一部分(Visual QA),这和回答问题相似。之前和attention相关的工作有如下的特征:
- 1 、计算好的attention权重通常用来抽取上下文最相关的特征来回答问题,并把上下文概括成特定长度的向量。
- 2、在text领域中,他们通常是temporally dynamic,因此当前time step的attention weight是之前time step的获得向量的函数。
- 3、通常使用uni-bidirectional 模型,问题通常在上下文或图像获得。
本文介绍了Bi-Directional Attention Flow (BIDAF)网络,一个层次级多阶段架构,在不同粒度上对上下文段落的表示进行建模。BIDAF包括了字符级,词级和上下文词嵌入,并使用 bi-directional attention flow获得具有问题意识的上下文表示。我们的attention具有以下的改进:
- attention层不是用来概括上下文段落,并获得特定大小的向量。而是在每步计算attention,并获得向量,伴随之前的层,允许流通到接下来的层。这降低了概括造成的损失。
- 使用内存占用更少的attention机制。当顺着时间计算attention时,在每个time step的attention是当前time step的问题和上下文段落的函数,不依赖于之前time step的attention。我们假设这个简化导致attention层和建模层的分工合作。这迫使attention层专注学习query和context之前的attention,允许建模层专注学习具有问题意识的上下文表示(即attention层的输出)query-aware context representation (the output of the attention layer)。这允许每个time step的attention不受之前time step的错误结果的影响。
- 在两个方向上使用attention机制,query-to-context and context-to-query,提供互补信息。
2 MODEL
模型包括6层:
- 1 Character Embedding Layer:通过character-level的CNNs,把每个词映射到向量空间。
- 2 Word Embedding Layer:通过训练好的word embedding将每个词映射到一个向量空间。
- 3 Contextual Embedding Layer :从周围词中使用情境线索过滤词嵌入。query和context都使用了3个层。
- 4 Attention Flow Layer:结合query和context向量获得具有context中每个词具有query-aware特征的向量。
- 5 Modeling Layer:使用RNN扫描context。
- 6 Output Layer:对query提供一个答案。
1 Character Embedding Layer
字符嵌入层主要把每个词映射到高维向量空间。和输入上下文段落和query的词语,每个词语使用CNN获得字符级的词嵌入。字符映射成向量,可以认为是CNN的1D输入,大小是CNN的输入通道的大小。CNN的输入进行max-pooled获得每个词的特定长度的向量。
2 Word Embedding Layer
把每个词映射到高维向量空间。使用训练好的向量,GloVe,获得每个词的固定词嵌入。
character和word的向量进行concatenation,输入到两层的highway网络,highway网络的输入时d维向量,也就是矩阵,即context输出和query输出
3 Contextual Embedding Layer
在前两层的后面使用LSTM,获得词语之间的时间信息。LSTM使用双向,对两个LSTM的输出进行concatenation,从上下文词的向量获得,query的词向量获得,和是2d,因为是前向LSTM和后向LSTM的concatenation,每个都是d维的输出。
前三层都是从不同的粒度计算query和context的特征,和CNN的多尺度特征相似。
4 Attention Flow Layer
这层是连接和融合context和word的信息。和之前流行的attention机制不同, attention flow layer不用来概括query和context获得单个特征向量。相反的,每个time step的attention向量,和前一层的embedding可以传入到模型接下来的其他层,这可以降低由于概括而导致的信息损失。
这层的输入是上下文和问题的上下文向量表示。输出是具有问题意识的上下文词语的向量表示,还有前一层的上下文的词嵌入。
这层从两个方向计算attention:context到query和query到context,共享同一个矩阵,在context和query的上下文embedding之间。表示第个context词和第个query词的相似度,相似矩阵的计算如下:
是可训练数量,表示两个输入向量的相似度,是的第列向量,是的第列向量
5 Modeling Layer
6 Output Layer