《Fast and Accurate Reading Comprehension by Combining Self-attention and Convolution》閱讀筆記
來源:ICLR 2018
原文鏈接:link轉載請註明出處:學習ML的皮皮蝦
Introduction
當前機器閱讀和問答(Q&A)的端到端模型主要是基於有attention的循環神經網路(RNN)。儘管他們取得了成功,但由於RNN的連續性,這些模型往往對訓練和測試都很慢。因此作者提出了一種不需要RNN的新型Q&A體系結構:其編碼器完全由convolution和self-attention組成,其中convolution關注局部關係,self-attention關注全局關係。在SQuAD數據集中,該論文提出的模型訓練速度提高3倍到13倍,測試速度提高4倍到9倍,同時獲得與RNN模型等效的正確率。加快的速度使作者能夠用更多的數據來訓練模型。因此,作者將他們的模型與來自神經機器翻譯模型的反向翻譯生成的數據結合起來。在SQuAD數據集上,作者使用增強數據訓練的單一模型在測試集上獲得了84.6的F1分,顯著優於公布的F1最佳分數81.8。
該論文有以下兩個創新點:(1)作者提出了一個專門建立在convolution和self-attention之上的高效的閱讀理解模型。(2)為了改進在SQuAD上的結果,作者提出了一種新的數據增強技術,以通過改寫來豐富訓練數據。
Task Definition
Context paragraph: C = { }
Query sentence: Q = { }
Output a span: S = { }
Original word and its embedded vector:
Model
- Reading Comprehension Model
該模型的結構與大多數現有模型類似,主要包含五個組成部分:an embedding layer, an embedding encoder layer, a context-query, attention layer, a model encoder layer and an output layer。不過在embedding和modeling encoders里,該模型只使用了convolutional和self-attention機制,拋棄了RNNs。
1. Input Embedding Layer
模型通過連接word embedding和character embedding來獲得每個詞 w 的embedding,其中word embedding( )使用維度p1=300的GloVe的預訓練,character embedding( )使用維度p2=200向量表示(每個character embedding 用一個200-D的向量隨機初始化,並在訓練中更新), 。
然後在Embedding的輸出加上一個兩層的highway network,並使用 x 表示此層的輸出。
2. Embedding Encoder Layer
編碼層包含以下幾個基本組件:[convolution-layer * # + self-attention-layer + feed-forward-layer],其中使用depthwise separable convolutions和multi-head attention mechanism。該層的輸出維度為d。
3. Context-Query Attention Layer
首先計算context和query中每個詞的相似度,得到一個相似度矩陣 (相似度計算採用trilinear函數):
然後對每一行softmax得到 ,所以context-to-query attention是 。
同時,作者採用[1]中DCN的策略,對相似度矩陣的每一列進行softmax得到 ,所以query-to-context attention是
4. Model Encoder Layer
該層的參數和Embedding Encoder Layer大致相同,除了convolution層數和block的個數不同,該層每個位置的輸入是 ,a 和 b 分別表示 A 和 B 的每一行。同時三個model encoder里參數共享。
5. Output layer
作者採用[2]中Seo et al的策略來預測context里答案span的開始和結束位置:
其中, 和 是可訓練參數, 、 和 是三個model encoders的輸出。
其中, 和 是第 i 個例子中答案span的正確開始和結束位置, 是全部可訓練參數。
在測試時,預測的 選擇 最大的值,且 。
- Data Augmentation
因為該閱讀理解模型訓練速度快,所以作者提出將該模型和一個簡單的數據增強工具結合起來來豐富訓練數據,方法是使用兩個翻譯模型,一個翻譯模型是將英語翻譯成法語(或德語),然後再用另一個翻譯模型,將法語(或德語)翻譯為英語。這裡,作者使用的是GNMT模型。
一個輸入句獲得k個翻譯語句,同時k個翻譯句又反過來生成k^2個輸入句子的改寫句子。
1. Handling SQuAD Document and Answers
SQuAD的每個樣本是一個 的三元組,d是一個多句子的段落,q是問題,a是答案,經過數據改寫後的,三元組變成 。
為了生成d,對於 d 的每一個句子,模型是用隨機的一個改寫句子來替換。為了在改寫的 d 中找到正確答案,模型使用Character-level 2-gram score來計算含有目標答案句子 s 中每一個詞與 a 中開始和結束的詞來找到 s 中可能答案的開始和結束位置,並選擇character 2-gram分數最高作為新的答案 a。(這裡設置一個分數閾值,如果所有改寫句子的答案的2-gram分數都低於閾值,則該句子被捨棄)
Experiment
1. Accuracy
為了進行公平和全面的比較,大家都會在最新的論文/預印本中報告公布的結果,並在排行榜上報告更新但未記錄的結果,大家認為後者是未發表的結果。對比可以發現,該論文提出的模型獲得了最好的結果,而且隨著數據的增強,效果進一步提升。
2. Speedup over RNNs
數值表示batches/second,數值越大越快。Baseline為有不同層數和隱藏單元的RNN。
3. Speedup over BiDAF model
- Abalation Study
從表中可以發現convolution和self-attention都是必要的成分,而且separable convolutions比傳統convolutions要好。
1. The Effect of Data Augmentation
可以發現數據增強可以提高模型的表現水平。
2. The Effect of Sampling Scheme
但也可以發現原始的數據、E-F-E和E-G-E三個數據集的佔比對於模型的表現水平有一定的影響,作者通過實驗發現三者佔比為3:1:1的時候,效果最好。
- Robustness Study
通過故意誤導模型來產生錯誤的答案來驗證其魯棒性,主要研究兩種誤導性句子。AddSent生成類似於問題的句子,但與正確的答案不矛盾,而AddOneSent添加了一個隨機的人為確定的句子,它不一定與上下文相關。
可以發現,該模型表現效果較好,因為其在數據增強中,引入了一些雜訊,這有效提升了該模型的魯棒性。
- Experiments on TriviaQA
該實驗只研究TriviaQA數據集中只有一個段落的文本context,可以發現模型的正確率和速度都很高。
Conclusion
該論文提出了一種快速準確的機器閱讀理解端到端模型。核心創新是徹底消除基礎模型中的RNN。得到的模型是完全前饋的,由separable convolutions, attention, linear layers, 和 layer normalization組成,這適合於並行計算。由此產生的模型既快速又準確:它超過了SQuAD數據集上最好的公布結果,而訓練/推理迭代的速度分別比RNN模型快13/9倍。此外通過數據增強獲得了顯著的收益,這種增強包括將context和passage對翻譯成另一種語言並從另一種語言翻譯回來,作為questions和contexts的一種改寫方式。
參考文獻
[1] Caiming Xiong, Victor Zhong, and Richard Socher. Dynamic coattention networks for question answering. CoRR, abs/1611.01604, 2016. URL http://arxiv.org/abs/1611.01604.
[2] Min Joon Seo, Aniruddha Kembhavi, Ali Farhadi, and Hannaneh Hajishirzi. Bidirectional attention flow for machine comprehension. CoRR, abs/1611.01603, 2016. URL http://arxiv.org/abs/1611.01603.
推薦閱讀:
TAG:深度學習DeepLearning | 閱讀理解 |