【QANet】譯文

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分的最佳公佈結果。我們也進行了消融測試以證明我們的模型的每個組件都是有用的。總之,本文的成績如下:

  1. 我們提出了一個僅使用卷積和自注意力模型(self-attention)的高效閱讀理解模型。據我們所知,我們是第一個這樣做的。這一組合可以獲得很好的準確率,並相對於RNN,在訓練時獲得13倍的提速,在每次訓練迭代中獲得9倍提速。這樣的加速增益使得我們的模型最有希望適用於更大的數據集。
  2. 爲了改良我們在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)。在編碼器結構內部的位置編碼(卷積,自注意或前饋網絡之一)之後的每個子層被包裹在殘餘塊內。

 

詳細地來講,我們的模型由如下五層組成:

1.Input Embedding Layer.

我們採用常規的技術,通過連接單詞的詞嵌入(word embedding)和字符嵌入(char embedding),來獲取每個單詞的嵌入。詞嵌入在訓練中是固定的(is fixed),用p1=300 維的預訓練好的GloVe (Pennington et al., 2014)單詞向量來初始化,這些單詞向量在訓練中是固定的。所有的不在詞典中的單詞都被映射到一個<UNK>標記,這個標記的嵌入是隨機初始化的並且是可訓練的。字符嵌入如下獲得:每個字符被表示成爲一個p2=200 維的可訓練向量,意味着每個單詞可以看作是它的每個字符的嵌入向量的連接。每個單詞的長度都增加或者刪減到16(truncated or padded to 16)。我們選取這個矩陣的每行中的最大值來獲得一個固定大小的單詞的向量表示。最終,一個給定單詞x在這一層的輸出是該連接:xw;xcRp1+p2 ,其中xwxc分別是是單詞X的嵌入和字符嵌入的卷積輸出(xw and xc are the word embedding and the convolution output of character embedding of x respectively)。繼Seo等人之後(Following Seo et al. (2016)),我們在這個表示之上也採取了一個兩層的高速網絡(a two-layer highway network (Srivastava et al., 2015))。爲了保持簡潔性,我們也用x來表示這一層的輸出。

2.Embedding Encoder Layer.

編碼器層是以下基本塊的堆砌:[卷積層 ×#+ 自注意力層 +前饋層]([convolution-layer × # + self-attention-layer + feed-forward-layer]),如右上圖1所示。我們用深度可分離卷積結構(depthwise separable convolutions (Chollet, 2016) (Kaiser et al., 2017))而不是傳統的結構,因爲我們發現它內存效率高(memory efficient)並且有更好的泛化能力(has better generalization)。內核(kernel)的大小爲7,過濾器(filters)數量爲d=128 ,而且一個塊(block)中的卷積層數(conv layers)是4。 對於注意力層(self-attention layer),我們採用了nulti-head機制(Vaswani et al,2017a),for each position in the input, called the query, computes a weighted sum of all positions, or keys, in the input based on the similarity between the query and key as measured by the dot product.(暫時不知道如何翻譯)。在整個層中(throughout all the layers) heads的數量是8,每個這些基本的操作(卷積、注意力、前饋)都被放在了一個殘差塊裏(a residual block),如圖1右下所示。對於一個輸入x和一個給定的操作f,輸出是flayernormx+x ,也就是從每個塊的輸入到輸出都有一個完整的標識路徑(a full identity path),其中layernorm是指(Ba et al,2016)提出的層正規化(layer-normalization)。編碼器塊的總數爲1。需要注意的是,對每一個單詞來說,在這個層的輸入是一個p1+p2=500 維的向量,這個向量會立即被一維卷積映射到d=128 。這一層的輸出也是d=128 維。

3.Context-Query Attention Layer.

這個模塊在幾乎所有之前的閱讀理解模型中都是標準的,如Weissenborn et al. (2017)Chen et al. (2017)。我們用C和Q來表示編碼後的上下文和問題。Context-to-query attention構造如下:我們首先計算每一對上下文和查詢詞的相似度,其後表示成爲一個相似度矩陣S∈Rn×m。然後我們用softmax函數對S的每一行進行歸一化,得到矩陣S。然後context-toquery attention計算如下:A=SQTRn×d。在這裏用的相似度函數是三線性函數(trilinear function Seo et al,2016):

fq,c=W0q,c,qc

其中⊙是元素乘法(the element-wise multiplication),W0是可訓練的變量。

大多數高性能模型還使用某種形式的query-to-context attention,比如BiDaF(Seo et al 2016)和DCN(xiong et al 2016)。從經驗上講,我們發現,相比於簡單地採用context-to-query attention,DCN attention可以提供一些好處,所以我們採用了這個策略。更具體的來說,我們通過softmax函數計算了矩陣S的列標準化矩陣S,然後,query-to-context attention是B=SSTCT

4.Model Encoder Layer.

Seo et al.(2016)相似,在這一層的輸入的每個位置是c,a,ca,cb,其中a和b分別是attention矩陣A和B中的一行。層的參數除了每一塊的卷積層的個數是2,總的塊數是7以外,其餘編碼層與嵌入編碼層相同。模型編碼層的3個重複模塊有相同的權重。

5.Output layer.

這一層是功能性的。每一個SQuAD的樣例都被一個文本中包含着答案的片段標記。我們採取Seo et al(2016) 的策略來預測每一個位置是答案片段的起始點和終止點的概率。更具體地說,起始點和終止點的概率被建模爲:

p1=softmaxW1M0;M1

p2=softmaxW2M0;M2

其中W1W2是兩個可訓練的變量,M0,M1,M2分別是從下到上3個模型編碼器(model encoders)的輸出。一個片段的得分是起始點概率和終止點概率的乘積。最後,目標函數被定義爲由真正的開始和結束下標索引的預測分佈的對數概率的負和(the negative sum of the log probabilities of the predicted distributions indexed by true start and end indices),在所有訓練樣本上取平均值:

Lθ=-1NiNlogpyi11+logpyi22

其中yi1yi2分別是樣例i的標定好的真實的起始和終止位置,θ包含了所有的可訓練的變量。我們所提出的模型可以被定製專門用於其他的閱讀理解任務,比如,通過相應地改變輸出層,從候選答案中做選擇。

推論

在推斷階段,選擇預測的片段s,e使得ps1pe2是最大的並且s≤e 。標準動態規劃可以在線性時間內得到結果。

 

3 通過反翻譯改良數據

鑑於模型的速度很快,我們可以採用更多的數據來訓練它。因此我們將我們的模型與一種簡單的數據加強技術結合起來來豐富訓練數據。思路是使用兩個翻譯模型來實現文章的釋義,一個將文章從英語翻譯成法語,一個將文章從法語翻譯成英語。這種方法有助於自動地增加任何基於語言的任務的訓練數據量,包括我們感興趣的閱讀理解任務。我們期望用更多的數據來更好地規範化我們的模型。改良過程如圖2所示,法語是中樞語言。

       在這項工作中,我們考慮使用基於注意力(attention-based)的機器神經翻譯模型(NMT)Bahdanau et al. (2015); Luong et al. (2015),Wu et al. (2016),作爲我們數據改良管道的核心模型,這些模型都表現出了非常優秀的翻譯水準。具體來說,我們利用了Luong et al. (2017)提供的公開的代碼庫,這一代碼庫復現了谷歌的Wu et al. (2016)的NMT系統(GNMT)。我們在公開的WMT數據上爲英語-法語(36M大小的句子對)和英語-德語(4.5M大小的句子對)兩種組合都訓練了一個四層的GNMT模型。所有數據都被符號化並被分離成子字(subword)單元,如同Luong et al. (2017)所描述。所有模型共享一樣的超參數並且被訓練不同的次數,其中英語-法語模型訓練2M次,而英語-德語模型訓練370K次。在newstesst2014數據集上,我們的英語-法語系統在從英語翻譯到法語時達到36.7 BLEU,而在從法語翻譯到英語時達到了35.9BLEU。而對於英語-德語模型,在翻譯到德語時達到了27.6BLEU而在從德語翻譯到英語時達到了29.9BLEU。

       我們的釋義過程如下,其中將法語作爲中樞語言。首先,我們將輸入序列饋送到英語-法語模型的波束編碼器(beam encoder)中以獲得k句法語翻譯。然後,每句翻譯的法語結果通過反向翻譯模型的波束解碼器以獲得總共k^2個序列的釋義。

       與現有作品的關聯。儘管之前已經引入了反向翻譯的概念,但它通常要麼用於改進Sennrich et al. (2016)的相同的翻譯任務,要麼用於Wieting et al. (2017); Mallinson et al. (2017).的內在釋義評估。我們的方法是對反向翻譯的一種新穎的應用,它能爲數據向下流動的(down-stream)任務豐富訓練數據,譬如問答(QA)任務。值得注意的是,(Dong et al., 2017)採用釋義技術來改良QA,然而,他們只對問題作釋義而不關注我們在這篇論文中所重視的數據改良概念。

       處理SQuAD文檔(Document)和答案(Answer)。我們現在來討論我們針對SQuAD數據集的具體處理過程,這對於性能的提升尤爲關鍵。SQuAD的每個訓練樣本都是一個三元組(d,q,a),其中文檔d是具有答案a的一個多句組成的段落。當釋義時,我們保持問題q不變(以避免不小心改變其含義)併產生(d’,q,a’)的新三元組,使得新文檔d在其中具有新答案。這個過程由兩步組成:(1)文檔釋義——把d釋義爲d’以及(2)答案提取——從d’中提取與答案a近似匹配的答案a’。

       在文檔釋義步驟中,我們首先將段落劃分成多個句子並將它們獨立地進行釋義。我們將k設爲5,對每個句子我們就能得到25個釋義結果可供選擇。對於原文d中的每個句子,通過簡單地隨機選擇一個釋義來替換它,從而形成一篇新文章。這種樸素的方法的一個很明顯的問題在於,原始答案a可能將不再位於新的文檔d中。

       答案提取步驟解決了上述問題。假定s是包含答案a的原始句子,s’是其釋義。我們使用下述的簡單的啓發式規則識別新的釋義後的答案。計算s中的每個單詞和答案a的開始/結束字符之間的Character-level 2-gram分數,以找到s中有可能是答案起始和答案結束的位置。在所有可供選擇的釋義過的答案中,選擇相對於a具有最高的Character-level 2-gram分數的那個作爲新答案a’。表1展示了一個使用這種方法找到一個新答案的例子。

       釋義的質量和多樣性對於數據改良方法至關重要。仍有可能改善該方法的質量和多樣性。質量可以通過使用更好的翻譯模型來提高。譬如,我們發現長度顯著長於我們模型的最大訓練序列長度的釋義往往會在句子中間被切斷。多樣性可以通過波束搜索解碼期間的採樣以及在數據集中對問題和答案也釋義來改善。此外,我們可以將這個方法和其它數據改良方法組合起來以獲得更豐富的釋義多樣性,例如類型交換方法(Raiman & Miller, 2017)。

      在我們的實驗中,我們觀察到我們所提到的數據改良方法可以在準確性方面帶來非凡的改進。我們相信這種技術也適用於其它監督的自然語言處理任務,特別是當訓練數據不足時。

4 實驗

在這一部分,我們進行試驗以研究我們的模型和數據增強技術的的性能。我們將主要在SQuAD數據集(Rajpurkar et al., 2016)上進行基準測試,這一數據集被認爲是Q&A領域中最具權威性的數據集之一。我們也同樣在另一個Q&A數據集——TriviaQA (Joshi et al., 2017)上進行相似的研究來證明我們的模型的有效性和效率具有普適性。

4.1 在SQuAD上的實驗

4.1.1 數據集和實驗設置

數據集

我們考慮斯坦福問答數據集(Stanford Question Answering Dataset)用於機器閱讀理解。SQuAD中包含107.7K個“問題-答案”對,其中87.5K對用於訓練,10.1K用於驗證,另外10.1K用於測試。段落(paragraph)的長度一般爲250左右,問題長度一般爲10左右,當然他們的長度也都有非常長的情況。只有訓練數據和驗證數據時公開的,而測試數據是隱藏的,必須提交代碼到Codalab上並且與(Rajpurkar et al., 2016)這篇論文的作者一同操作以重現最終的測試得分。在我們的實驗中,我們呈現了我們最好的單一模型的測試集結果。爲了進一步分析,我們只呈現了驗證集上的結果,因爲我們不想大量頻繁地提交來預測“看不見的”測試集。根據我們的實驗結果和以前的工作,如(Seo et al., 2016; Xiong et al., 2016; Wang et al., 2017; Chen et al., 2017),驗證分數與測試分數密切相關。

數據預處理

我們用NLTK tokenizer來預處理數據。最大上下文長度被設置爲400,任何超過該長度的段落都被捨棄。在訓練過程中,我們按長度批量處理示例,並使用特殊符號<PAD>動態填充短句。答案最大長度被設置爲30,我們用預訓練好的300維的詞向量數據——GLoVe(Penning-ton et al., 2014),所有的不在詞典中的單詞都被替換爲特殊符號<UNK>,這個特殊符號的嵌入在訓練期間更新。每一個字符嵌入被隨機初始化爲一個200維的向量,這個向量在訓練過程中也是會被更新的。我們生成了兩個額外的數據增強數據集。我們生成了從第3節獲得的另外兩個增強數據集,其中包含140K和240K個樣例,分別表示爲“data augmentation×2”和“data augmentation×3”,包括原始數據。

訓練細節

我們採用兩種類型的標準正則化。首先,我們對所有可訓練的參數使用L2權重衰減,參數λ=3×10-7。我們還在單詞、字符嵌入和層之間用了dropout,單詞和字符的dropout率分別是0.1和0.5,在兩層之間的dropout率是0.1。我們還在每個嵌入或模型編碼層中採用隨機深度方法(layer dropout)(Huang et al., 2016),其中子層ι具有生存概率pι=1-ιL1-pL,其中L是最後一個層並且pL=0.9

Hidden size和卷積濾波器數均爲128,batch size爲32,原始數據的訓練步長爲150K,“data augmentation×2”爲250K,“data augmentation×3”爲340K。Embedding 和 modeling encoder中的卷積層數分別爲4和2,kernel size分別是7和5,編碼器的塊數量分別爲1和7。

我們使用ADAM優化器(Kingma&Ba,2014),其中β1=0.8β2=0.999ϵ=10-7。我們還使用一個學習率預熱方案(a learning rate warm-up scheme),在前1000個步驟中反向指數增加從0.0到0.001,然後在剩餘的訓練中保持恆定的學習率。指數移動平均值(Exponential moving average)適用於所有可訓練變量,衰減率爲0.9999。

4.1.2 結果

準確性

F1和精確匹配(EM)是模型準確度的兩個評估指標。F1測量的是預測的答案和groundtruth之間的重疊部分,而如果預測與groundtruth完全相同則精確匹配得分爲1,否則爲0。我們將結果與表2中的其他方法進行比較。爲了進行公平和徹底的比較,我們會在最新的論文或初稿中呈現已發佈的結果,並會在排行榜上呈現已更新但尚未成文的結果。我們認爲後者是未發表的結果。從表中可以看出,我們模型的精度(EM / F1)性能與最先進的模型相當。特別地,我們在原始數據集上訓練的模型在EM和F1得分方面優於文獻中的所有記錄結果(參見表2的第二列)。當使用適當的採樣方案訓練增強數據時,我們的模型可以在EM / F1上獲得顯著的增益1.5 / 1.1。最終,我們在官方測試集上的結果是76.2 / 84.6,這明顯優於最佳記錄結果73.2 / 81.8。

 

 

相比於RNNs的加速效果

爲了測量我們的模型相對於RNN模型的加速,我們還測試相應的模型架構,其中每個編碼器塊替換爲大多數現有模型中使用的雙向LSTM堆棧。具體地來說,每個(嵌入和模型)編碼器塊分別用1,2或3層雙向LSTM替換,因爲這樣的層數是閱讀理解模型(Chen等人,2017)的通常取值。所有這些LSTM的hidden size爲128。加速比較的結果如表3所示。我們可以看到我們的模型明顯快於所有基於RNN的模型,訓練時加速3-13倍,推理階段快4-9倍。

相比於BiDAF的加速效果

此外,我們還用相同的硬件(NVIDIA p100 GPU),並比較我們的模型和BiADF模型(Seo et al., 2016),獲得相同表現的訓練時間。BiADF模型是SQuAD上基於RNN的經典模型。我們大多都採用源代碼中的默認設置以取得最好的表現,其中對於訓練和推斷來說batch size都是60。The only part we changed is the optimizer, where Adam with learning 0.001 is used here, as with Adadelta we got a bit worse performance.(暫時不知道怎麼翻譯合適)。結果如表4所示,我們的模型在訓練和推斷上要比BiADF分別快4.3和7.0倍。此外,在開發集上我們只需要訓練時間五分之一的時間就能達到BiADF最好的F1得分(77.0)。

 

 

4.1.3 模型簡化測試與分析(ABALATION STUDY AND ANALYSIS)

我們對提出的模型的組成部分進行消融研究(abalation study),並研究增強數據的影響。開發集的驗證分數如表5所示。從表中可以看出,在編碼器中使用卷積是至關重要的:如果卷積被移除,F1和EM則會急劇下降近3%。編碼器中的self-attention也是一個必要的組件,它可以爲最終性能提供1.4 / 1.3的EM / F1增益。我們將這些現象解釋如下:卷積捕獲上下文的局部結構,而self-attention能夠對文本之間的全局交互進行建模(model the global interactions between text)。因此,他們互補但不能互相替換。使用可分離卷積代替傳統卷積也對性能有顯著貢獻,因爲通過用正常卷積替換可分離卷積,精度就稍微差了一些。

數據增強的影響

我們另外進行了實驗以瞭解當它們的數量增加時增強數據的價值。正如表中最後一行所示,數據增強有助於進一步提升性能。僅僅添加En-Fr-En數據來使訓練數據擴大兩倍(原始訓練數據和增強數據之間的比率爲1:1,如行“data augmentation × 2 (1:1:0)”所示),可以得到F1增加了5%。雖然使用法語作爲樞紐添加更多的增強數據並不能有性能提升,但注入相同數量的額外增強數據En-De-En會使F1再次提高0.2,正如“data augmentation × 3 (1:1:1)”所示。我們可以將這種數據歸因於新數據的多樣性,這種多樣性是由新語言的翻譯器產生的。

抽樣方案的效果

雖然注入超過 × 3的更多數據並不對模型產生增益,但我們發現在訓練期間原始數據和增強數據之間的良好採樣率可以進一步提高模型性能。特別是,當我們將增強數據的採樣權重從1:1:1增加到1:2:1時,EM / F1性能下降0.5 / 0.3。我們推測這是因爲增強數據因反向轉換而產生噪聲,所以它不應該是訓練的主要數據。我們通過將原始數據的比率從1:2:1增加到2:2:1來確認這一點,獲得了對EM / F1的0.6 / 0.5性能增益。然後我們修復部分增強數據(fix the portion of the augmented data),並探索原始數據的採樣權重。從經驗上講,比率3:1:1能夠獲得最佳性能,在EM / F1上比基本模型增加1.5 / 1.1。這也是我們提交的用於測試集評估的模型。

4.1.4 模型健壯性探究(ROBUSTNESS STUDY)

在下文中,我們對對抗性數據集SQuAD (Jia & Liang, 2017)進行試驗,來研究我們提出的模型的穩健性。在該數據集中,將一個或多個句子句子附加到測試集的原始SQuAD上下文中,以故意誤導訓練過的模型產生錯誤的答案。但是,在訓練過程中,對於那些對抗性的樣例來說模型是不可知的。我們關注兩種類型的誤導型句子,即AddSent和AddOneSent。AddSent生成與問題類似的句子,但與正確答案不矛盾,而AddOneSent添加了一個隨機的人類認可的(human-approved)句子,該句子不一定和上下文有關。

使用的模型就是用原始SQuAD數據訓練出的模型(在測試集上獲得84.6的F1的分的模型),但是現在它被提交到了對抗服務器上(adversarial server)進行評估。結果如表6所示,其他模型的F1得分均來自Jia & Liang (2017)。同樣,我們只比較單個模型的性能。從表6中我們可以看出,我們的模型與最先進的模型在伯仲之間(our model is on par with the state-of-the-art model Mnemonic),而且顯著比其他模型要好。我們模型的穩健性可能是因爲它是用增強數據訓練得到的。

訓練數據中注入的噪聲可能不僅可以改善模型的泛化能力,還能使其對於對抗句來說更加健壯(but also make it robust to the adversarial sentences)。

 

 

 

 

 

 

4.2 在TRIVIAQA上的實驗

在這一節,我們在另一個數據集TriviaQA上測試模型,這個數據集包含650K的文本——問題——答案三元組。有95K個不同的問答對,它們由Trivia愛好者編寫,平均每個問題有6個文檔(上下文)可以作爲依據,這些文章可以從維基百科或者網頁搜索中獲得。與SQuAD相比,TriviaQA更具挑戰性,因爲(1)它的樣本有着長得多的上下文(平均每篇文章2895個符號),並且可能包含多個段落,(2)由於缺少人工標記,所以它比SQuAD有更多噪音。(3)文章很有可能和答案毫無聯繫,因爲它是通過關鍵字被獲取到的。

       在這篇論文中,我們將專注於在由維基百科的答案組成的子集上測試我們的模型。根據前人的工作(Joshi et al., 2017; Hu et al., 2017; Pan et al., 2017),同樣的模型將在維基百科和Web搜索結果上由相似的性能,但是後者所花的時間要大五倍。爲了使訓練時間易於管理,我們省略了對Web數據機型實驗。

       由於文章多段落的性質,研究人員還發現運用一些簡單的分層或多步閱讀的小技巧可以顯著提升TriviaQA的性能,譬如先預測要讀哪個段落,然後使用像BiDAF之類的模型在那個段落中去確定答案(Clark & Gardner, 2017)。然而,在本論文中,我們只(將模型性能)和單段閱讀的基準水平(baselines)比較。我們相信我們的模型可以被插入到其它多端閱讀的方法中去,達到相似或更好的性能,但那超出了本文的範圍。

       維基百科部分的子數據集包含大約92K的訓練集數據以及11K的開發集數據。文章和問題的長度分別爲495和15。除了完整的開發集,Joshi et al. (2017)的作者還挑選出了一個驗證過的集合,集合中所有的文章都能找到其對應問題的答案。由於文本可能很長,所以我們採用類似Hu et al. (2017); Joshi et al. (2017).的數據處理方法。特別地,對於訓練集和驗證集,我們分別隨機選擇一個包含256和400個數據的窗口,用於封裝答案。除了訓練步驟設置爲120K之外,其它所有的設置都和使用SQuAD實驗時一致。

準確率。開發集上的準確率如表7所示。同SQuAD實驗,我們可以看到,模型在完整的(Full)開發集上的F1和EM優於基準水平,並在驗證過的(Verified)開發集上與最優性能水平相當。

相對於RNN的提速。除了準確率,我們還測試了我們的模型相對於RNN模型的速度。如表8所示,我們的模型在訓練時提速了3-11倍,而在推理時有3-9倍的加速,這和在SQuAD數據集上所發現的結果相似。

5 相關工作

    機器閱讀理解和自動問答已經成爲了NLP領域的一個重要主題。它們的發展得益於公開可用的數據集增加,譬如SQuAD (Rajpurkar et al., 2016), TriviaQA (Joshi et al., 2017), CNN/Daily News (Hermann et al., 2015), WikiReading (Hewlett et al., 2016), Children Book Test (Hill et al., 2015)等。大量的端到端神經網絡模型被提出以應對這些挑戰,包括BiDAF (Seo et al., 2016), r-net (Wang et al., 2017), DCN (Xiong et al., 2016), ReasoNet (Shen et al., 2017b), Document Reader (Chen et al., 2017), Interactive AoA Reader (Cuiet al., 2017) and Reinforced Mnemonic Reader (Hu et al., 2017)。

       在過去紀念裏,循環神經網絡在自然語言處理中佔主要地位。文本的連續性與RNN的設計理念相符合,所以他們很受歡迎。事實上,上面提到的所有閱讀理解模型都是基於RNN的。儘管很常見,但是RNN的順序性妨礙了其使用並行計算,因爲所有的符號必須按順序輸入RNN中。RNN的另一個缺點是難以對長依賴建模,儘管使用Gated Recurrent Unit (Chung et al.,2014)或Long Short Term Memory architectures (Hochreiter & Schmidhuber, 1997)能對此有所緩解。對於類似文本分類的簡單任務,(Yu et al., 2017)模型已被建議使用增強學習(RL)技術跳過不相關的符號以進一步解決長依賴問題並加快程序執行。然而,這一方法能否處理諸如Q&A的複雜任務並不明朗。本文中考慮的閱讀理解任務往往需要處理長文本,因爲文章段落可能長達幾百個詞。近年來,人們嘗試了完全使用卷積和注意力結構(Kim, 2014; Gehring et al., 2017; Vaswani et al., 2017b; Shen et al., 2017a)來替換循環網絡。人們發現這些模型不但比RNN結構快,在處理其它任務時也更高效,譬如文本分類,機器翻譯或者情緒分析。

       據我們所知,本文是第一個通過摒棄循環網絡而使用前饋神經網絡來來實現快而準確的閱讀理解模型的(文章)。本文也首創了卷積和注意力模型的混合是使用,而這被證明效率極高並且能帶來2.7 F1的顯著增益。需要指出,Raiman & Miller (2017)近期提出通過避免雙向注意力機制並使計算以搜索beams爲條件來加速閱讀理解。然而,他們的模型任然是基於RNN的並且精度不高,EM和F1分別爲68.4和76.2。Weissenborn et al. (2017)也嘗試了通過刪除文本-問題模塊來構建快的Q&A模型。然而,它也依賴於RNN並因此本質上比我們的模型慢。注意力模型的消除進一步犧牲了性能。(EM爲68.4,F1爲77.1)。

       NLP領域也同樣探索了數據改良技術。譬如Zhang et al. (2015)提出通過似乎用同義詞來替換單詞來優化數據集,並在文本分類領域展現了其高效性。 Raiman & Miller (2017)建議使用類型交換來優化SQuAD數據集,核心是將原段落中的詞語用其它類型相同的詞語來做替換。雖然它被證明可以提高準確性,但優化後的數據具有與原始數據相同的句法結構,因此不夠多樣化。Zhou et al. (2017)通過生成更多問題提高了SQuAD數據的多樣性。然而,根據Wang et al.(2017)的報告,這一方法並不能幫助提高性能。本文提出的數據優化技術是基於通過來回翻譯原文來對句子進行釋義。主要的好處是它能爲優化的數據帶來更爲豐富的句法結構。

 

文章由另一個同學和我翻譯完成。

緒論   By Long

Chapter1  緒論  By Long

Chapter2  模型  By Jia

Chapter4  實驗  4.1 By Jia   4.2 By Long

Chapter5  相關工作  By Long

6  總結&鳴謝&引用 尚未翻譯,有空再補

PS.  1.有兩句話不知道怎麼翻譯合適。

        2.word直接複製過來的,公式和圖片不能正常顯示,先湊合看,有時間再說吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章