Teaching Machines to Read and Comprehend
昨天的文章text comprehension系列的第一篇,是最近剛剛submit的文章,今天分享一篇去年的文章,也是一篇非常經典的文章。我記得Yoshua Bengio在Quora Session一個問題中推薦這篇文章。本文的題目是Teaching Machines to Read and Comprehend,作者是來自Google DeepMind的科學家Karl Moritz Hermann,是Oxford的博士後,兩家機構的合作好多,很多文章都是一起寫的。
本文的貢獻主要有兩點:一是提出了一種構建用於監督學習的閱讀理解大型語料的方法,並開源在Github上,並且給出了兩個大型語料,CNN和Daily Mail;二是提出了三種用於解決閱讀理解任務的神經網路模型。
首先,聊一聊語料的構建方法。基本的思路是受啟發於自動文摘任務,從兩個大型的新聞網站中獲取數據源,用abstractive的方法生成每篇新聞的summary,用新聞原文作為document,將summary中去掉一個entity作為query,被去掉的entity作為answer,從而得到閱讀理解的數據三元組(document,query,answer)。這裡存在一個問題,就是有的query並不需要聯繫到document,通過query中的上下文就可以predict出answer是什麼,這也就失去了閱讀理解的意義。因此,本文提出了用entity替換和重新排列的方法將數據打亂,防止上面現象的出現。這兩個語料在成為了一個基本的數據集,後續的很多研究都是在數據集上進行訓練、測試和對比。處理前和後的效果見下圖:
接下來,介紹下本文的三個模型:
用神經網路來處理閱讀理解的問題實質上是一個多分類的問題,通過構造一些上下文的表示,來預測詞表中每個單詞的概率,概率最大的那個就是所謂的答案。說起這一點,不禁想起了一個有趣的說法,任何nlp任務都可以用分類的思路來解決。
1、Deep LSTM Reader
看上圖,其實非常簡單,就是用一個兩層LSTM來encode query|||document或者document|||query,然後用得到的表示做分類。
2、Attentive Reader
這個模型將document和query分開表示,其中query部分就是用了一個雙向LSTM來encode,然後將兩個方向上的last hidden state拼接作為query的表示,document這部分也是用一個雙向的LSTM來encode,每個token的表示是用兩個方向上的hidden state拼接而成,document的表示則是用document中所有token的加權平均來表示,這裡的權重就是attention,權重越大表示回答query時對應的token的越重要。然後用document和query的表示做分類。
3、Impatient Reader
這個模型在Attentive Reader模型的基礎上更細了一步,即每個query token都與document tokens有關聯,而不是像之前的模型將整個query考慮為整體。感覺這個過程就好像是你讀query中的每個token都需要找到document中對應相關的token。這個模型更加複雜一些,但效果不見得不好,從我們做閱讀理解的實際體驗來說,你不可能讀問題中的每一個詞之後,就去讀一遍原文,這樣效率太低了,而且原文很長的話,記憶的效果就不會很好了。
實驗部分,作者選了幾個baseline作為對比,其中有兩個比較有意思,一是用document中出現最多的entity作為answer,二是用document中出現最多且在query中沒有出現過的entity作為answer。這個和我們在實際答題遇到不會做的選擇題時的應對策略有一點點異曲同工,所謂的不會就選最長的,或者最短的,這裡選擇的是出現最頻繁的。
最終的結果,在CNN語料中,第三種模型Impatient Reader最優,Attentive Reader效果比Impatient Reader差不太多。在Daily Mail語料中,Attentive Reader最優,效果比Impatient Reader好了多一些,見下表:
開始在看語料構建方法的時候,我在想應該是用extractive的方法從原文中提取一句話作為query,但看到paper中用的是abstractive的方法。仔細想了一下,可能是因為extractive的方法經常會提取出一些帶有指示代詞的句子作為摘要,沒有上下文,指示代詞就會非常難以被理解,從而給後面的閱讀理解任務帶來了困難,而用abstractive的方法做的話就會得到質量更高的query。本文的最大貢獻我認為是構建了該任務的大型語料,並且配套了三個神經網路模型作為baseline,以方便後面的研究者進行相關的研究,從很大地程度上推進了這個領域的發展。
推薦閱讀:
※數據分析入門(Python) | 猴子社群第2期闖關遊戲怎麼玩?
※A Diversity-Promoting Objective Function for Neural Conversation Models
※【解讀】機器學習應用在量化投資中失敗的7個主要原因
※【最優化】凸函數的駐點是全局最優點
TAG:自然语言处理 | 深度学习DeepLearning | 机器学习 |