QANET : COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPRE-HENSION
摘要
当前的端到端机器读取和问答(Q&A)模型,是主要基于具有注意力(Attention)的递归神经网络(RNN)。尽管取得了成功,但由于RNN的顺序性的性质,这些模型通常对于训练和推理都很慢。我们提出了一个名为QANet的新的Q&A架构——它不需要循环网络(Recurrent Network)。它的编码器完全由卷积(convolution)和自注意力模型(self-attention)组成,其中卷积对局部交互建模而自注意力模型对全局交互建模。在SQuAD数据集上,我们的模型的训练速度提高了3至13倍,而推理速度提高了4到9倍,且能和循环网络达到同样的准确率。速度上的增益使得我们可以用大得多的数据集来进行训练。因此,我们将我们的模型与神经机器翻译模型的反向翻译生成的数据结合起来。在SQuAD模型上,我们使用增强数据训练的单一模型,在测试集上获得了84.6的F1 Score,这明显优于公布过的最佳F1 Score 81.8。
1 绪论
人们对于机器阅读理解和智能问答越来越感兴趣。在过去的几年中,端到端模型取得了重大的进展,在许多具有挑战性的数据集上展现出让人乐观的结果。最成功的模型一般包括两个关键因素:(1)一个处理顺序性输入的循环网络模型(recurrent model),以及(2)一个应对长期交互的注意力(attention)模型组件。Seo等人研究的双向注意力流动模型(BiDAF,2016年)是对这两种元素的一个成功结合,它在SQuAD数据集上取得了良好的成绩。但是这一类模型往往有一个缺点,即翻译和推理都很慢,特别是处理长文本时,这是由于循环网络的性质所造成的。这样昂贵的训练成本不但会导致实验的周转时间长、研究人员受限于迭代速度,也会妨碍模型应用到更大的数据集上。与此同时,缓慢的推理速度也会妨碍机器理解(machine comprehension)系统部署到实时应用中。
在这篇论文中,我们建议移除这些模型中的循环网络以提高机器理解的速度。作为替代,我们仅使用卷积和自注意力模型作为问题和上下文的编码器的模块结构。然后我们通过standard attentions(Xiong 等人, 2016; Seo等人, 2016; Bahdanau等人,2015)。在最后解码成每个位置作为答案区间的开始位置和结束位置的概率之前,训练结果会被我们的无循环编码器再度编码。我们把这一结构称作QANet,如图1所示。
如下是我们设计这个模型的主要动机:卷积捕获了局部文本的结构,而自注意力模型学习每一对词语全局的相互影响(global interations)。附加的语境查询注意力模型是一个典型的为上下文段落中每个位置构建查询感知上下文向量的模块,它随后被用于为每一个层建模。我们的结构的前馈性质使得显著提升了模型的速度。在使用SQuAD数据集实验时,我们的模型在训练上快3至13倍,在推理上快4至9倍。作为一个简单的比较,我们的模型可以在3小时以内的训练后达到和BiDAF模型(Seo et al., 2016)同样的准确率(77.01 F1 Score),而后者则需要花费15个小时。加速增益使得我们可以用更多的迭代来训练模型,以获得比其它模型更好的结果。譬如,如果我们让模型训练18个小时,它将在开发集上获得82.7的F1 Score,这比(Seo et al., 2016)的模型要好得多,并且与公开过的最佳结果相当。
由于我们的模型速度很快,所以我们可以用比其它模型所使用的大得多的数据集来训练。为了进一步改良模型,我们提出了一种另外的数据增强技术来改善训练数据。这一技术通过将原始的句子从英文翻译成另一种语言来解释这些例子,然后翻译回英文,这样不但提高了训练样本的数量,也使得表达(的词语)多样化。
在SQuAD数据集上,使用增强数据训练的QANet在测试集上获得84.6 的F1 Score设置,显著优于Hu等人的81.8分的最佳公布结果。我们也进行了消融测试以证明我们的模型的每个组件都是有用的。总之,本文的成绩如下:
- 我们提出了一个仅使用卷积和自注意力模型(self-attention)的高效阅读理解模型。据我们所知,我们是第一个这样做的。这一组合可以获得很好的准确率,并相对于RNN,在训练时获得13倍的提速,在每次训练迭代中获得9倍提速。这样的加速增益使得我们的模型最有希望适用于更大的数据集。
- 为了改良我们在SQuAD上的结果,我们提出了一种新颖的数据增强技术——通过翻译来丰富训练集数据。它使得模型可以达到更高的准确性,这比最先进的技术更好。
2 模型
在本章中,我们首先提出(formulate)了机器阅读理解问题,然后介绍了我们提出的QANet模型:它是一个只由卷积(convolution)和自注意力(self-attention)组成的前馈模型,从经验上讲,这个组合有很高的效率,并且这也是我们工作的一个创新点。
2.1 问题建模
在本文中考虑的阅读理解工作定义如下:给定一个有n个单词的上下文段落C={ C1,C2,…,Cn},和有m个单词的问句Q=q1,q2,…,qm ,输出一个段落C的片段S={ Ci,Ci+1,…,Ci+j}。接下来,对于每个x∈C,Q ,我们用x表示源单词或者它的嵌入向量(embedded vector)。
2.2 模型概览
我们的模型结构和大多已知模型的结构是相似的,由五个部分组成:嵌入层(an embedding layer),嵌入编码器层(an embedding encoder layer),“上下文-问题”注意力层(a context-query attention layer),模型编码器层(a model encoder layer),输出层(an output layer)。如图1所示。这是大多数甚至所有的阅读理解模型的典型的模块结构。尽管如此,我们模型的方法和其他方法还是有不同之处的,主要差别如下:对于嵌入和模型编码模块(For both the embedding and modeling encoders),我们只用了卷积和自注意力机制(convolutional and self-attention mechanism),而丢弃了大部分阅读理解模型中用到的循环神经网络(RNNs)。结果表明,我们的模型很快,因为它可以并行处理输入符号。值得注意的是,尽管自注意力(self-attention)已经被广泛地用在Vaswani et al. (2017a),卷积和自注意力机制的混合模型还是很新颖的,它明显地比单独的自注意力模型要好,并且在我们的实验中获得了2.71 F1的增益(gives 2.7 F1 gain)。卷积的运用使我们可以利用在卷积神经网络(ConvNets)中常规的正则化方法,如随机深度(such as stochastic depth (layer dropout)) (Huang et al., 2016),它在我们的实验中获得了0.2 F1的额外增益。
图 1 - QANet结构概览(左),它有几个编码器块。我们在整个模型中使用相同的编码器块(右),仅改变每个块的卷积层数。我们在编码器中的每一层之间使用了layernorm和残差连接。我们还共享上下文和问题编码器以及三个输出编码器的权重。如(Vaswani et al., 2017a)所定义的,在每个由不同波长的sin和cos函数组成的编码器的开始处,将位置编码添加到输入中。(A positional encoding is added to the input at the beginning of each encoder layer consisting of sin and cos functions at varying wavelengths)。在编码器结