目前(2017年)機器閱讀技術發展得如何?能達到什麼水平?有哪些應用?
本題已收錄至知乎圓桌:人工智慧 · 語言智能,更多「人工智慧」相關話題歡迎關注討論
前段時間剛好調研了一下這個topic,試著答一下。
機器閱讀理解技術可以從兩方面來看,數據集和演算法。
數據集
有時候,提出問題比解決問題更有意義。那麼,如何評估機器的理解水平呢?問答是一種常見的評估形式。目前來看,機器閱讀主要有兩種問答形態:
- 完型填空(cloze)
- 文本段(text span)
2015年,deepmind[1]根據cnn新聞語料構建了一個(也是首個)大規模閱讀理解數據集——CNN/Daily Mail。隨後,fair[2]從兒童故事書中也構建了一個數據集,也是完型填空類型——CBT。此後的工作主要圍繞這兩個數據集展開。
然而,完型填空這種限定條件的問答形式基本無法應用於實際。Chen[3]對CNN數據集進行了詳細的評估後指出,現有方法基本達到了CNN數據集的準確率上限,並且CNN數據集中包含的推理十分簡單。更接近實際的問答形式和更有挑戰的數據集是迫切需要的。
2016 emnlp會議上,Rajpurkar等人[4]提出了SQuAD數據集,這是首個大規模文本段類型的問答數據集。在給定文檔D,給定問題Q的情況下,答案A是D中的一個text span。數據集一經提出就受到了學界的廣泛關注,截至到目前,leaderboard (The Stanford Question Answering Dataset) 上排名第一的模型已經可以給出84%的F1指標,而人類水平為91%。
後續一些工作,如NewsQA[5],MS MARCO[6],都是文本段問答類型的數據集,在構建方式上有別於SQuAD,難度也更大,但尚未引起關注。
除上述兩大類之外,還有一些其它類型的數據集如bAbI[7], Story Cloze[8], Winograd Schema Challenge[9]等等,主要聚焦於機器的推理能力,可能需要引入外部知識(主要是常識)。
演算法
目前主流的閱讀理解模型使用深度學習來做。
完型填空類型的問答,簡單來說就是一個匹配問題。問題的求解思路基本是:
- 獲取文檔中詞的表示
- 獲取問題的表示
- 計算文檔中詞和問題的匹配得分,選出最優
這篇專欄(深度學習解決機器閱讀理解任務的研究進展 - 知乎專欄)做了很好的總結。
文本段類型的問答,與完型填空類型的問答,在思想上非常類似,主要區別在於:後者的目標是文檔中的一個詞,前者的目標是文檔中的兩個位置,分別用來標誌答案的起點和終點。目標的差別帶來了網路模型上一些差別。
應用
最後說一下應用。閱讀理解本身是一個非常重要的技術,有很多潛在可以應用的點,比如問答系統、對話系統等等。
但目前的閱讀理解技術離實際應用還有一段距離。主要問題是,目前的閱讀理解評估形式仍然離真實場景較遠。Chen[10]做過一個嘗試,以維基百科為基礎構建一個通用問答系統。流程如下:
- 根據問題,從維基百科中檢索top5相關文章
- 閱讀文章中的每個段落,嘗試回答給出問題
以下是系統在SQuAD數據集上的效果,使用的評估指標是精確匹配。
Document Retriever top5相關文檔準確率77.8%。(對於一個問題,如果答案出現在檢索系統給出的top5相關文檔中,就算正確)
在給定top5相關文檔(準確率77.8%)的情況下,系統的準確率為27.1%。
在給定正確文章的情況下,系統的準確率為49.4%。
在給定正確段落的情況下,系統的準確率為69.5%。(SQuAD的官方評估形式)
主要問題在於:SQuAD數據構建過程中,問題是在提問者閱讀給定段落後針對此段落提出的。評估過程也是給你這個段落,從中選擇答案。而脫離了給定段落,問題往往是有歧義的。
況且,SQuAD數據集並不能反映真實場景。
真實場景下,用戶的需求往往更加複雜。MS MARCO數據集的構建,問題來源是bing的搜索日誌。獲得的問題中,答案為描述類的問題佔比為52.6%。遠遠超出了SQuAD中描述類答案的佔比。而當前的閱讀模型處理單個詞、when/where類型問題、事實型問答效果較好,而處理多個詞、how/why類型問題、描述型/過程型的問答效果較差,而且答案越長,效果越差。
再說一點,就是當前主流的閱讀理解(完型填空、文本段),一般都不利用世界知識,而真實環境下,人類的理解離不開知識。
總結
閱讀理解是一個AI-complete的問題,非常有挑戰性。從2015年到現在,評估數據集-演算法模型的攻防升級還是比較頻繁,topic的研究非常活躍。但要在實際應用中使用,還是需要找准應用的點。或許能在一些窄領域裡獲得應用,但在通用領域裡基本無法應用。
參考文獻
[1] Hermann, Karl Moritz, et al. "Teaching machines to read and comprehend." Advances in Neural Information Processing Systems. 2015.
[2] Hill, Felix, et al. "The Goldilocks Principle: Reading Children"s Books with Explicit Memory Representations." arXiv preprint arXiv:1511.02301 (2015).
[3] Chen, Danqi, Jason Bolton, and Christopher D. Manning. "A thorough examination of the cnn/daily mail reading comprehension task." arXiv preprint arXiv:1606.02858 (2016).
[4] Rajpurkar, Pranav, et al. "Squad: 100,000+ questions for machine comprehension of text." arXiv preprint arXiv:1606.05250 (2016).
[5] Trischler, Adam, et al. "NewsQA: A Machine Comprehension Dataset." arXiv preprint arXiv:1611.09830 (2016).
[6] Nguyen T, Rosenberg M, Song X, et al. MS MARCO: A Human Generated MAchine Reading COmprehension Dataset[J]. arXiv preprint arXiv:1611.09268, 2016.
[7] Weston, Jason, et al. "Towards ai-complete question answering: A set of prerequisite toy tasks." arXiv preprint arXiv:1502.05698 (2015).
[8] Mostafazadeh, Nasrin, et al. "A corpus and evaluation framework for deeper understanding of commonsense stories." arXiv preprint arXiv:1604.01696 (2016).
[9] Levesque, Hector, Ernest Davis, and Leora Morgenstern. "The winograd schema challenge." Thirteenth International Conference on the Principles of Knowledge Representation and Reasoning. 2012.
[10] Chen, Danqi, et al. "Reading Wikipedia to Answer Open-Domain Questions." arXiv preprint arXiv:1704.00051 (2017).
今天,我們邀請了微軟亞洲研究院自然語言計算研究組的機器閱讀理解研究團隊,為我們從技術角度分享了他們在機器閱讀理解方面所做的工作,以及機器閱讀理解的研究之路的困難和挑戰。
也歡迎大家和我們溝通交流。
————這裡是正式回答的分割線————
機器閱讀技術目前的水平
做機器閱讀理解研究的學者想必對由斯坦福大學自然語言計算組發起的SQuAD(Stanford Question Answering Dataset)文本理解挑戰賽並不陌生,它也被譽為「機器閱讀理解界的ImageNet」。諸多來自全球學術界和產業界的研究團隊都積極地參與其中,目前微軟亞洲研究院的自然語言計算研究組持續穩居榜首,與包括艾倫研究院、IBM、Salesforce、Facebook、谷歌以及CMU(卡內基·梅隆大學)、斯坦福大學等在內的全球自然語言處理領域的研究人員,共同推動著自然語言理解的進步。
2017年5月8日SQuAD排名和結果截圖,其中微軟亞洲研究院的集成模型(ensemble)和單模型(single model)分列各自排名首位
那麼,SQuAD機器閱讀理解挑戰賽是怎樣進行的呢?SQuAD通過眾包的方式構建了一個大規模的機器閱讀理解數據集(包含10萬個問題),即將一篇幾百(平均100,最多800)詞左右的短文給標註者閱讀,隨後讓標註人員提出最多5個基於文章內容的問題並提供正確答案。SQuAD向參賽者提供訓練集用於模型訓練,以及一個規模較小的數據集作為開發集,用於模型的測試和調優。與此同時,他們提供了一個開放平台供參賽者提交自己的演算法,並利用測試集對其進行評分,評分結果將實時地在SQuAD官網上進行更新。
得益於SQuAD所提供的龐大數據規模,參與該項挑戰賽的選手不斷地對成績進行刷新,SQuAD挑戰賽也逐步成為行業內公認的機器閱讀理解標準水平測試。在今年的ACL大會(自然語言處理領域最頂尖的會議之一)的投稿里,有非常多的論文就是關於這項挑戰賽的研究,其影響力可見一斑。從ACL 2017論文主題的可視分析中可以看到,「reading comprehension(閱讀理解)」是今年ACL錄取論文中最熱門的關鍵詞和任務,廣受自然語言處理領域研究人員的關注。
「雖然偶爾有一兩天其它團隊超過了我們的成績,但我們也有最新的演算法能夠很快地進行更新,並取得更好的成績,對於這一點我們的團隊始終十分自信。」機器閱讀理解研究的主要負責人、微軟亞洲研究院自然語言計算研究組主管研究員韋福如表示。
機器閱讀理解,自然語言計算領域皇冠上的明珠
如今,我們在圖像識別、機器翻譯和語音識別等研究領域已經看到了機器學習帶來的顯著成果。例如圖像識別技術對癌細胞病理切片的識別能力已逐步超過人類,目前機器圍棋棋手的棋力已經幾乎無人能敵……狂熱過後,當我們重新審視人工智慧這個問題時,一個最基本的問題可能尚未解決:計算機能夠理解多少我們的語言了?
計算語言學協會(ACL, Association for Computational Linguistics)候任主席,微軟亞洲研究院副院長周明博士認為:「自然語言處理的基本研究包括分詞、斷句、句法語義分析等等。而機器閱讀理解就是自然語言計算領域皇冠上的明珠。」
一般來說,人們在讀完一篇文章之後就會在腦海里形成一定的印象,例如這篇文章講的是什麼人,做了什麼事情,出現了什麼,發生在哪裡等等。人們能夠很輕而易舉地歸納出文章中的重點內容。機器閱讀理解的研究就是賦予計算機與人類同等的閱讀能力,即讓計算機閱讀一篇文章,隨後讓計算機解答與文中信息相關的問題。這種對人類而言輕而易舉的能力,對計算機來說卻並非如此。
很長一段時間以來,自然語言處理的研究都是基於句子級別的閱讀理解。例如給計算機一句話,理解句子中的主謂賓、定狀補,誰做了何事等等。但長文本的理解問題一直是研究的一個難點,因為這涉及到句子之間的連貫、上下文和推理等更高維的研究內容。
比如下面這段文本: The Rhine (Romansh: Rein, German: Rhein, French: le Rhin, Dutch: Rijn) is a European river that begins in the Swiss canton of Graubünden in the southeastern Swiss Alps, forms part of the Swiss-Austrian, Swiss-Liechtenstein border, Swiss-German and then the Franco-German border, then flows through the Rhineland and eventually empties into the North Sea in the Netherlands. The biggest city on the river Rhine is Cologne, Germany with a population of more than 1,050,000 people. It is the second-longest river in Central and Western Europe (after the Danube), at about 1,230 km (760 mi), with an average discharge of about 2,900 m3/s (100,000 cu ft/s). (大意:萊茵河是一條位於歐洲的著名河流,始於瑞士阿爾卑斯山,流經瑞士、 奧地利、列支敦斯登、法國、德國、荷蘭,最終在荷蘭注入北海。萊茵河上最大的城市是德國科隆。它是中歐和西歐區域的第二長河流,位於多瑙河之後,約1230公里。)
若針對該段內容提問:What river is larger than the Rhine?(什麼河比萊茵河長?)人們可以輕易地給出答案:Danube(多瑙河)。但目前即使是最佳的系統模型R-NET給出的輸出也並不盡人意,它的回答是:科隆,可見要讓計算機真正地理解文本內容並像人一樣可以對文字進行推理的難度是如此之大。在回答該問題時,計算機除了要處理文中的指代「it」,還需要演算法和模型進一步對「larger than」和「after」這兩個表述進行推理,從而得知Danube是正確答案。此外,由於文中並沒有顯式提到Danube是「river」,所以又加大了系統的推理難度。
但大數據的發展讓學者們看到了這一研究方向的曙光。可獲取的越來越大的文本數據,加上深度學習的演算法以及海量的雲計算資源,使得研究者們可以針對長文本做點對點的學習,即對句子、短語、上下文進行建模,這其中就隱藏了一定的推理能力。所以,目前自然語言處理領域就把基於篇章的理解提上研究的議事日程,成為目前該領域的研究焦點之一。而針對上文提及的相關難點,微軟亞洲研究院自然語言計算研究組正在進行下一步的研究和探索。
做頂尖的機器閱讀理解研究
正如前文所說,機器閱讀理解的研究之路始終充滿著許多困難和挑戰。
首先是數據問題。目前基於統計方法(尤其是深度學習模型)的機器閱讀理解的研究離不開大量的、人工標註的數據。在SQuAD數據集推出之前,數據集常常面臨規模較小,或是質量不佳(因為多是自動生成)的問題,而SQuAD無論是在數據規模還是數據質量上都有一個很大的提升。在基於深度學習方法的研究背景下,數據量不夠就很難做出有效、或是有用的模型,更難對模型進行合理、標準的測試。
另一方面則是演算法問題。之前自然語言處理在做閱讀理解或者是自動問答研究的時候,會把這個研究問題視作一個系統的工程,因而把這個問題分成許多不同的部分。例如先去理解用戶的問題;再去找答案的候選;再將候選答案進行精挑細選、互相比較;最後對候選答案進行排序打分,挑選出最可能的答案或者生成最終的答案。而這個繁複的過程中,似乎其中的每一步都是可以優化的。
但它相應地也會帶來一些問題。第一,當你分步去優化這其中的每一個過程的時候,你會去研究如何更好地理解這個問題,或是研究如何更好地把答案做對,這些分目標研究結果的整合未必能和「如何將閱讀理解的答案正確找出來」這個目標完全吻合。第二,如果想做局部的優化,就意味著每一個局部過程都需要相應的(標註)數據,這使得閱讀理解的研究進展緩慢。如果只使用問題-答案作為訓練數據,中間模塊的優化得到的監督信息不那麼直接,因而很難有效。
結合了上述問題,微軟亞洲研究院自然語言計算研究組的機器閱讀理解研究團隊採用的則是一個端到端的深度學習模型的解決方案,區別於上述的每一個細化環節的具體優化過程,他們採取的方法是把中間環節儘可能的省去,使得整體的過程能夠得到最優效果。
實際上,SQuAD的挑戰賽形式就是讓系統在閱讀完一篇幾百詞左右的短文之後再回答5個基於文章內容的問題。這個問題可能比大家熟知的高考英文閱讀理解,或是托福閱讀考試都要難得多。人們參加的這些考試往往是一個答案被限定住範圍的選擇題。
但是在SQuAD的數據集中,問題和答案具有非常豐富的多樣性。這五個問題中可能涉及文章中的某一個人,某一個地點,或是某一個時間等等實體;也有可能會問一些為什麼(Why)、怎麼樣(How)的問題。後者的答案可能實際上是一句話,甚至是一小段話,因此解決這個問題只會更加棘手。
另外,在SQuAD數據集中,除了問題的多樣性之外,研究員們發現還有更多的挑戰。比如語言(包括詞級別和句子級別)的歧義性,對於同一個意思,問題和短文會用不同的詞語或者句型表述(在標註指南中就明確要求標註者儘可能使用不同的表述)。另一個很有難度的挑戰是對於有些問題,找到正確答案需要用到整篇短文中的不同句子的信息,進而對這些信息進行聚合和比較才能最終得出正確的答案。當然,也有一部分問題需要用到比較複雜的推理、常識和世界知識,面對這類問題就更是難以處理。下表是發布SQuAD數據集一文中給出的總結。
表格來源: Rajpurkar et al. #x27;16
目前SQuAD挑戰賽採用兩個評價標準來對參與系統的結果進行評測。由人工標註的答案作為標準,系統自動依據準確性和相似度兩個不同的維度進行打分,較客觀地保證了評分系統的公平性。微軟亞洲研究院團隊在這兩個不同維度的評價標準上均取得了最優的成績,其準確度達到了76.922%,相似度達到了84.006%,高出第二名近兩個百分點。
R-NET: 基於神經網路的端到端系統
為了研究機器閱讀理解的問題,包括韋福如和楊南等在內的研究團隊試圖去建模人做閱讀理解的過程。他們採用了R-NET,一個多層的網路結構,分別從四個層面對整個閱讀理解任務的演算法進行了建模。
我們在做閱讀理解的過程中,一個常見的順序是這樣的:首先閱讀整篇文章,對文章有一個初步理解之後再去審題,從而對問題也有了一定認知。第二步,可能就需要將問題和文中的部分段落和內容做一些關聯。例如題干中出現的某些關鍵已知信息(或證據)的,找出一些候選答案,舉例來說:如果問題問的信息是時間,那麼文中出現的與時間相關的信息就可能是候選答案。第三步,當我們將候選答案與問題進行對應之後,我們還需要綜合全文去看待這些問題,進行證據的融合來輔證答案的正確性。最後一步,就是針對自己挑出的答案候選進行精篩,最終寫下最正確的答案。
有鑒於此,研究組提出的模型也就分為這樣的四層。最下面的一層做表示學習,就是給問題和文本中的每一個詞做一個表示,即深度學習里的向量。這裡研究組使用的是多層的雙向循環神經網路。第二步,就是將問題中的向量和文本中的向量做一個比對,這樣就能找出那些問題和哪些文字部分比較接近。接下來,將這些結果放在全局中進行比對。這些都是通過注意力機制(attention)達到的。最後一步,針對挑出的答案候選區中的每一個辭彙進行預測,哪一個詞是答案的開始,到哪個詞是答案的結束。這樣,系統會挑出可能性最高的一段文本,最後將答案輸出出來。整個過程就是一個基於以上四個層面的神經網路的端到端系統(見下圖)。
微軟亞洲研究院提出的R-NET演算法的網路結構圖。其中最為獨特的部分是第三層文章的自匹配網路(Self-Matching Networks),更多細節請參考論文:R-NET: Machine Reading Comprehension with Self-matching Networks
SQuAD數據集於2016年9月份發布了正式版。一經推出,微軟亞洲研究院自然語言計算研究組就敏銳地判斷這是一個非常重要的數據集,將會極大地推動機器閱讀理解的研究,並將在研究界和工業界產生積極深遠的影響。10月,研究團隊就第一次提交了他們的研究成果,並且取得了第一名的好成績,而後續幾個月的數次提交,則是在不斷地刷新著自己的成績。對於研究團隊來說,這其實是一個試錯的過程,團隊每天都會討論總結當天的試錯成果,有新的想法就不斷嘗試。
未來的應用方向
提及機器閱讀理解未來值得探索的方向,韋福如分享了他的三點看法。他認為一方面基於深度學習的演算法和模型還有很大的空間,適合機器閱讀理解的網路結構值得在SQuAD類似的數據集上進一步嘗試和驗證。具體來說,通過對R-NET目前處理不好的問題的進一步分析,能否提出可以對複雜推理進行有效建模,以及能把常識和外部知識(比如知識庫)有效利用起來的深度學習網路,是目前很有意義的研究課題。另外,目前基於深度學習的閱讀理解模型都是黑盒的,很難直觀地表示機器進行閱讀理解的過程和結果,因而可解釋性的深度學習模型也將是很有趣的研究方向。
其次,人類理解文本的能力是多維度的,結合多任務(尤其是閱讀理解相關的任務,例如閱讀理解之後進行摘要和問答)的模型非常值得關注和期待。更進一步,雖然SQuAD提供了比較大的人工標註數據集,如何有效且高效地使用未標註的數據也是非常值得期待的研究課題和方向。最後從任務上看,目前SQuAD的任務定義中答案是原文的某個子片段,而實際中人可能讀完文章之後需要進行更複雜的推理、並組織新的文字表達出來。
「目前我們的演算法基本都是抽取型的方式,未來生成型的演算法也值得更多的探索和研究。另外,目前機器閱讀理解關注的都是理解客觀信息的能力,未來機器理解文字裡面所表達出來的主觀信息(例如情感)也是非常有趣並值得關注的方向。「韋福如說道。
————這裡是回答結束的分割線————
以上回答摘選自微軟研究院AI頭條,從短句到長文,計算機如何學習閱讀理解 。
感謝大家的閱讀。
本賬號為微軟亞洲研究院的官方知乎賬號。本賬號立足於計算機領域,特別是人工智慧相關的前沿研究,旨在為人工智慧的相關研究提供範例,從專業的角度促進公眾對人工智慧的理解,並為研究人員提供討論和參與的開放平台,從而共建計算機領域的未來。
微軟亞洲研究院的每一位專家都是我們的智囊團,你在這個賬號可以閱讀到來自計算機科學領域各個不同方向的專家們的見解。請大家不要吝惜手裡的「邀請」,讓我們在分享中共同進步。
也歡迎大家關注我們的微博和微信賬號,了解更多我們研究。
http://weixin.qq.com/r/PUliejrEzWeyrX4Z9xwv (二維碼自動識別)
我們以機器閱讀理解中最有名的比賽SQuAD為例,來說一下這個領域的發展現狀。
SQuAD簡介
SQuAD 是由 Rajpurkar 等人[1]提出的一個最新的閱讀理解數據集。該數據集包含 10 萬個(問題,原文,答案)三元組,原文來自於 536 篇維基百科文章,而問題和答案的構建主要是通過眾包的方式,讓標註人員提出最多 5 個基於文章內容的問題並提供正確答案,且答案出現在原文中。SQuAD 和之前的完形填空類閱讀理解數據集如 CNN/DM[2],CBT[3]等最大的區別在於:SQuAD 中的答案不在是單個實體或單詞,而可能是一段短語,這使得其答案更難預測。SQuAD 包含公開的訓練集和開發集,以及一個隱藏的測試集,其採用了與 ImageNet 類似的封閉評測的方式,研究人員需提交演算法到一個開放平台,並由 SQuAD 官方人員進行測試並公布結果。
▲ 圖1:一個(問題,原文,答案)三元組
模型
自從 SQuAD 數據集公布以來,大量具有代表性的模型紛紛湧現,極大地促進了機器閱讀理解領域的發展,下面就 SQuAD 榜單上代表性的模型進行介紹。總的來說,由於 SQuAD 的答案限定於來自原文,模型只需要判斷原文中哪些詞是答案即可,因此是一種抽取式的 QA 任務而不是生成式任務。幾乎所有做 SQuAD 的模型都可以概括為同一種框架:Embed 層,Encode 層,Interaction 層和 Answer 層。Embed 層負責將原文和問題中的 tokens 映射為向量表示;Encode 層主要使用 RNN 來對原文和問題進行編碼,這樣編碼後每個 token 的向量表示就蘊含了上下文的語義信息;Interaction 層是大多數研究工作聚焦的重點,該層主要負責捕捉問題和原文之間的交互關係,並輸出編碼了問題語義信息的原文表示,即 query-aware 的原文表示;最後 Answer 層則基於 query-aware 的原文表示來預測答案範圍。
▲ 圖2:一個高層的神經 QA 系統基本框架,來自[8]
Match-LSTM[4]
Match-LSTM 的 Answer 層包含了兩種預測答案的模式,分別為 Sequence Model 和 Boundary Model。Sequence Model 將答案看做是一個整數組成的序列,每個整數表示選中的 token 在原文中的位置,因此模型按順序產生一系列條件概率,每個條件概率表示基於上輪預測的 token 產生的下個 token 的位置概率,最後答案總概率等於所有條件概率的乘積。Boundary Model 簡化了整個預測答案的過程,只預測答案開始和答案結束位置,相比於 Sequence Model 極大地縮小了搜索答案的空間,最後的實驗也顯示簡化的 Boundary Model 相比於複雜的 Sequence Model 效果更好,因此 Boundary Model 也成為後來的模型用來預測答案範圍的標配。
在模型實現上,Match-LSTM 的主要步驟如下:
1) Embed 層使用詞向量表示原文和問題;
2) Encode 層使用單向 LSTM 編碼原文和問題 embedding;
3) Interaction 層對原文中每個詞,計算其關於問題的注意力分布,並使用該注意力分布匯總問題表示,將原文該詞表示和對應問題表示輸入另一個 LSTM 編碼,得到該詞的 query-aware 表示;
4) 在反方向重複步驟 2,獲得雙向 query-aware 表示;
5) Answer 層基於雙向 query-aware 表示使用 Sequence Model 或 Boundary Model 預測答案範圍。
BiDAF[5]
相比於之前工作,BiDAF(Bi-Directional Attention Flow)最大的改進在於 Interaction 層中引入了雙向注意力機制,即首先計算一個原文和問題的 Alignment matrix,然後基於該矩陣計算 Query2Context 和 Context2Query 兩種注意力,並基於注意力計算 query-aware 的原文表示,接著使用雙向 LSTM 進行語義信息的聚合。另外,其 Embed 層中混合了詞級 embedding 和字元級 embedding,詞級 embedding 使用預訓練的詞向量進行初始化,而字元級 embedding 使用 CNN 進一步編碼,兩種 embedding 共同經過 2 層 Highway Network 作為 Encode 層輸入。最後,BiDAF 同樣使用 Boundary Model 來預測答案開始和結束位置。
Dynamic Coattention Networks[6]
DCN 最大的特點在於 Answer 層,其 Answer 層使用了一種多輪迭代 pointing 機制,每輪迭代都會產生對答案開始和結束位置的預測,並基於這兩個預測使用 LSTM 和 Highway Maxout Network 來更新下一輪的答案範圍預測。而在 Interaction 層,DCN 使用和 BiDAF 類似的雙向注意力機制計算 query-aware 的原文表示。
Multi-Perspective Matching[7]
Multi-Perspective Matching 在 Encode 層同樣使用 char, word 兩個 embedding,只不過 char embedding 使用 LSTM 進行編碼。在 Encode 層之前,該模型使用一個過濾操作,作用是過濾掉那些和問題相關度低的原文詞。該模型最大的特點在 Interaction 層,該層針對每個原文詞使用一種 multi-perspective 的匹配函數計算其和問題的匹配向量,並使用 BiLSTM 來進一步聚合這些匹配向量。匹配的形式包括每個原文詞和整個問題的表示匹配,每個原文詞和每個問題詞匹配後進行最大池化,和每個原文詞和每個問題詞匹配後進行平均池化。最後在 Answer 層,基於匹配向量聚合表示使用兩個前饋網路來預測答案開始和結束位置。
FastQAExt[8]
FastQAExt 使用了一種輕量級的架構,其 Embed 層除了 word 和 char 兩種 embeeding 作為輸入以外,還額外使用了兩個特徵:1. binary 特徵表示原文詞是否出現在問題中;2. weighted 特徵表示原文詞對於問題中所有詞的相似度。並且這兩個特徵同樣用在了問題詞上。在 Interaction 層,FastQAExt 使用了兩種輕量級的信息 fusion 策略:1. Intra-Fusion,即每個原文詞和其他原文詞計算相似度,並匯總得到原文總表示,接著將該原文詞和對應原文總表示輸入 Highway Networks 進行聚合,聚合後原文詞表示進一步和上下文詞表示進行類似的聚合;2. Inter-Fusion,即對每個原文詞計算和問題詞的相似度,並匯總得到問題總表示,接著將將該原文詞和對應問題總表示輸入 Highway Networks 進行聚合,得到 query-aware 原文表示。此外,在 Answer 層,FastQAExt 首先計算了一個問題的總表示,接著將 query-aware 原文表示和問題總表示共同輸入兩個前饋網路產生答案開始和結束位置概率。在確定答案範圍時,FastQAExt 使用了 Beam-search。
jNet[9]
jNet 的 baseline 模型和 BiDAF 類似,其在 Interaction 層除了對每個原文詞計算一個對應的問題表示以外,還將 Alignment Matrix 按原文所在維度進行池化(最大池化和平均池化),池化後的值表示原文各詞的重要程度,因此基於該值對原文表示進行過濾,剔除不重要的原文詞。在 Answer 層,jNet 不僅先預測答案開始位置再預測答案結束位置,還反向地先預測答案結束位置再預測答案開始位置。最後對兩方向概率求平均後作為總概率輸出。
jNet 的最大創新在於對問題的理解和適應。為了在編碼問題表示時考慮句法信息,jNet 使用 TreeLSTM 對問題進行編碼,並將編碼後表示作為 Interaction 層的輸入。為了對不同問題進行適應,jNet 首先使用了問題類型的 embedding,將該 embeeding 作為 Interaction 層輸入。另外,jNet 定義了 K 個 cluster 的中心向量,每個 cluster model 了一個特定的問題類型比如"when","where"等,接下來的適應演算法分為兩步:adapting 和 updating。Adapting 指根據問題總表示和 K 個 cluster 的相似度來更新出一個新的問題表示,並輸入 Interaction 層;Updating 層旨在修改 K 個 cluster 的中心以令每個 cluster 可以 model 不同類型的問題。
Ruminating Reader[10]
Ruminating Reader 是 BiDAF 的改進和擴展,它將之前的單 Interaction 層擴展為了雙 Interaction 層。第一個 Interaction 層和 BiDAF 的 Interaction 層相同,輸出 query-aware 的原文表示。query-aware 原文表示經過一個雙向 LSTM 編碼,其輸出的最後一位隱層狀態作為 query-aware 原文表示的總結。接著,該總結向量依次與各原文詞表示和各問題詞表示經過一個 Highway Network 處理,以將總結向量的信息重新融入原文和問題表示當中。最後,基於更新後的原文和問題表示,使用第二個 Interaction 層來捕捉它們之間的交互,並生成新的 query-aware 的原文表示。Ruminating Reader 的 Embed 層,Encode 層和 Answer 層和 BiDAF 相同。
ReasoNet[11]
和之前介紹的 Embed-Encode-Interaction-Answer 框架不同,ReasoNet 使用了 Memory Networks 的框架[12]。在使用 BiRNN 編碼問題和原文後,問題的最後一位隱層狀態初始化為一個中間狀態 s,而原文和問題表示作為 Memory。接下來是一個多輪迭代的過程,在每一輪迭代中,中間狀態 s 首先經過一個邏輯回歸函數來輸出一個 binary random variable t,t 為真,那麼 ReasoNet 停止,並且用當前中間狀態 s 輸出到 Answer 模塊產生對答案的預測;否則,中間狀態 s 會和 Memory(原文和問題)中每一位表示計算注意力,並基於注意力求原文和問題的加權表示 x,x 和 s 共同作為一個 RNN 的輸入,產生新的中間狀態 s 並進入下一輪迭代。由於出現了 binary random variable,ReasoNet 使用了強化學習的方法進行訓練。
r-net[13]
r-net 同樣使用了雙 Interaction 層架構,其第一 Interaction 層負責捕捉原文和問題之間的交互信息,而第二 Interaction 層負責捕捉原文內部各詞之間的交互信息。具體來說,在第一 Interaction 層,r-net 首先使用了類似於 Match-LSTM 的方法,即對原文中每個詞,計算其關於問題的注意力分布,並使用該注意力分布匯總問題表示,將原文該詞表示和對應問題表示輸入 RNN 編碼,得到該詞的 query-aware 表示。不同的是,在原文詞表示和對應問題表示輸入 RNN 之前,r-net 使用了一個額外的門來過濾不重要的信息。接著,在第二 Interaction 層,r-net 使用了同樣的策略來將 query-aware 表示進一步和自身進行匹配,將回答答案所需的證據和問題信息進行語義上的融合,得到最終的原文表示。
在其他方面,r-net 的 Embed 層同樣使用了 word 和 char 兩種 embedding 以豐富輸入特徵。在 Answer 層,r-net 首先使用一個 attention-pooling 的問題向量作為一個 RNN 的初始狀態,該 RNN 的狀態和最終的原文表示共同輸入一個 pointer networks 以產生答案開始概率,接著基於開始概率和原文表示產生另一個 attention-pooling 向量,該向量和 RNN 狀態共同經過一次 RNN 更新後得到 RNN 的新狀態,並基於新狀態來預測答案結束概率。
Mnemonic Reader[14]
相比於之前的工作,我們的 Mnemonic Reader 同樣使用了類似於 r-net 和 Ruminating Reader 的兩層 Interaction 層設計。其中第一個 Interaction 層負責捕捉原文和問題之間的交互信息,第二 Interaction 層負責捕捉原文內部的長時依賴信息。不同於 r-net 的是,r-net 使用了單向注意力+門機制來編碼這些交互信息,而 Mnemonic Reader 使用了雙向注意力機制來編碼交互信息,因此能夠捕捉更加細粒度的語義信息。在 Answer 層,我們使用對問題敏感的表示方法,具體來說,問題表示分為兩種:顯式的問題類型 embedding 和隱式的問題向量表示。進一步地,我們使用了 Memory Network[12] 的框架來預測答案範圍,將問題表示作為一個可更新的記憶向量,在每次預測答案概率後將候選答案信息更新至記憶向量中。該過程可以持續多輪,因此可以根據之前預測信息來不斷修正當前預測,直到產生正確的答案範圍。
性能對比
下圖是 SQuAD 榜單排名,其中 EM 表示預測答案和真實答案完全匹配,而 F1 用來評測模型的整體性能。可以看到,目前 r-net, ReasoNet 和 Mnemonic Reader 分列 SQuAD 榜單的前三名,但是 ReasoNet 和 Mnemonic Reader 距離第一名 r-net 還是存在一定的差距。值得一提的是,人類在 SQuAD 數據集上的性能分別為 82.3 和 91.2,因此目前最 state-of-the-art 的方法也遠未達到人類的水平,讓計算機具備人類的閱讀理解能力的道路依然漫長。
▲ 圖2:SQuAD leaderboard上的各模型性能對比(2017年5月11日)
總結
總結以上工作,有以下幾點思考:
1) 大規模語料集的構建是推進機器閱讀理解發展的重要前提。從 15 年提出的 CNN/DM 完形填空數據集,到近期的 SQuAD 數據集,再到之後的若干新數據集,每一個新數據集都提出了當前方法無法有效解決的新問題,從而促使研究人員不斷探索新的模型,促進了該領域的發展。
2) 針對抽取式閱讀理解任務,可以看到有如下幾個技術創新點:一. 建立在單向或雙向注意力機制上的 Interaction 層對於模型理解原文和問題至關重要,而[10],[13]和[14]中更複雜的雙 Interaction 層設計無疑要優於之前的單 Interaction 層設計,原因是在問題-原文交互層之上的原文自交互層使得更多的語義信息能在原文中流動,因此在某種程度上部分解決了長文本中存在的長時依賴問題。二. 多輪推理機制如[6],[11]和[14]對於回答覆雜問題具備一定幫助,尤其是針對 SQuAD 中的答案不是一個單詞而可能是一個短語的情況,多輪推理機制可以不斷縮小預測範圍,最終確定正確答案位置。三. 對問題敏感的問題表示方法[9],[14]能夠更好地 model 各類型問題,並根據問題類型聚焦於原文中的特定單詞,比如 when 類問題更加聚焦於原文中的時間信息,而 where 類問題更關注空間信息。
參考文獻
[1] Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev, and Percy Liang. 2016. Squad: 100,000+ questions for machine comprehension of text. In Proceedings of EMNLP.
[2] Karl Moritz Hermann, Tomas Kocisky, Edward Grefenstette, Lasse Espeholt, Will Kay, Mustafa Suleyman, , and Phil Blunsom. 2015. Teaching ma- chines to read and comprehend. In Proceedings of NIPS.
[3] Felix Hill, Antoine Bordes, Sumit Chopra, and Jason Weston. 2016. The goldilocks principle: Reading childrens books with explicit memory representa- tions. In Proceedings of ICLR.
[4] Shuohang Wang and Jing Jiang. 2017. Machine comprehension using match-lstm and answer pointer. In Proceedings of ICLR.
[5] Minjoon Seo, Aniruddha Kembhavi, Ali Farhadi, and Hananneh Hajishirzi. 2017. Bidirectional attention flow for machine comprehension. In Proceedings of ICLR.
[6] Caiming Xiong, Victor Zhong, and Richard Socher. 2017. Dynamic coattention networks for question answering. In Proceedings of ICLR.
[7] Zhiguo Wang, Haitao Mi, Wael Hamza, and Radu Florian. 2016. Multi-perspective context matching for machine comprehension. arXiv preprint arXiv:1612.04211 .
[8] Dirk Weissenborn, Georg Wiese, and Laura Seiffe. 2017. Fastqa: A simple and efficient neural architecture for question answering. arXiv preprint arXiv:1703.04816 .
[9] Junbei Zhang, Xiaodan Zhu, Qian Chen, Lirong Dai, Si Wei, and Hui Jiang. 2017. Exploring question understanding and adaptation in neural- network-based question answering. arXiv preprint arXiv:1703.04617 .
[10] Yichen Gong and Samuel R. Bowman. 2017. Ruminating reader: Reasoning with gated multi-hop attention. arXiv preprint arXiv:1704.07415 .
[11] Yelong Shen, Po-Sen Huang, Jianfeng Gao, and Weizhu Chen. 2016. Reasonet: Learning to stop reading in machine comprehension. arXiv preprint arXiv:1609.05284 .
[12] Sainbayar Sukhbaatar, Arthur Szlam, Jason Weston, and Rob Fergus. 2015. End-to-end memory networks. In Proceedings of NIPS.
[13] Microsoft Research Asia. 2017. R-NET: MACHINE READING COMPREHENSION WITH SELF-MATCHING NETWORKS. In Proceedings of ACL.
[14] Minghao Hu, Yuxing Peng, and Xipeng Qiu. 2017. Mnemonic Reader for Machine Comprehension. arXiv preprint arXiv:1705.02798 .
PaperWeekly 第38期 | SQuAD綜述推薦閱讀:
※你所在研究領域(MLCVNLP等AI子領域)在解決什麼問題,最新進展是什麼,有哪些重要文章?
※語音識別中如何提高同音異形字的識別準確率?
※深度神經網路為什麼能大幅度提高語音識別的準確率?
※python中文預處理?
※手機智能語言助手開發難度如何?
TAG:自然語言處理 |