從短句到長文,計算機如何學習閱讀理解

微軟研究院AI頭條發表於2017-05-05
 

在電影《她(HER)》中有這樣一幕:主人公是一位信件撰寫人,人工智慧作業系統薩曼莎在得到他的允許後閱讀他的郵件資料,總結出需要保留和刪除的郵件,幫助他修改信件草稿中的錯字,並且與他探討她喜愛的信件片段。與此同時,薩曼莎透過閱讀主人公的海量資訊來了解他,也透過閱讀網際網路上的海量資料來了解世界。閱讀這項人類的基本能力,在眾多科幻作品中也成了人工智慧的入門標配。

 

儘管人工智慧的熱點此起彼伏,但毫無疑問的是,自然語言處理始終是實現智慧、自然人機互動願景裡一塊重要的技術基石。而機器閱讀理解則可以被視為是自然語言處理領域皇冠上的明珠,也是目前該領域的研究焦點之一。

 

做機器閱讀理解研究的學者想必對由史丹佛大學自然語言計算組發起的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錄取論文中最熱門的關鍵詞和任務,廣受自然語言處理領域研究人員的關注。

 

“雖然偶爾有一兩天其它團隊超過了我們的成績,但我們也有最新的演算法能夠很快地進行更新,並取得更好的成績,對於這一點我們的團隊始終十分自信。”機器閱讀理解研究的主要負責人、微軟亞洲研究院自然語言計算研究組主管研究員韋福如表示。

自然語言計算領域皇冠上的明珠

如今,我們在影像識別、機器翻譯和語音識別等研究領域已經看到了機器學習帶來的顯著成果。例如影像識別技術對癌細胞病理切片的識別能力已逐步超過人類,目前機器圍棋棋手的棋力已經幾乎無人能敵……在人工智慧技術進步向人們展現了各種可喜的成果之後,大家將探尋的目光投向更遠的未來,下一個人工智慧技術的增長點在哪裡?

 

狂熱過後,當我們重新審視人工智慧這個問題時,一個最基本的問題可能尚未解決:計算機能夠理解多少我們的語言了?

 

一些人類學家認為,語言是構建人類文明的基石。在語言之上,我們構建了神話、宗教;構建了城邦,帝國;還構建了信任、信仰。計算機發明以來,層出不窮的程式語言都在教人們學會和計算機對話,而人們理想中的人工智慧則是應該主動學習,掌握人類語言的奧義。為此微軟提出了CaaP(Conversation as a Platform,對話即平臺)戰略,並將對話式人工智慧作為微軟在人工智慧領域佈局的重點。

 

計算語言學協會(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. '16

 

目前SQuAD挑戰賽採用兩個評價標準來對參與系統的結果進行評測。由人工標註的答案作為標準,系統自動依據準確性和相似度兩個不同的維度進行打分,較客觀地保證了評分系統的公平性。微軟亞洲研究院團隊在這兩個不同維度的評價標準上均取得了最優的成績,其準確度達到了76.922%,相似度達到了84.006%,高出第二名近兩個百分點。

R-NET: 基於深度神經網路的端到端系統

為了研究機器閱讀理解的問題,包括韋福如和楊南等在內的研究團隊試圖去建模人做閱讀理解的過程。他們採用了R-NET,一個多層的網路結構,分別從四個層面對整個閱讀理解任務的演算法進行了建模。

 

我們在做閱讀理解的過程中,一個常見的順序是這樣的:首先閱讀整篇文章,對文章有一個初步理解之後再去審題,從而對問題也有了一定認知。第二步,可能就需要將問題和文中的部分段落和內容做一些關聯。例如題幹中出現的某些關鍵已知資訊(或證據)的,找出一些候選答案,舉例來說:如果問題問的資訊是時間,那麼文中出現的與時間相關的資訊就可能是候選答案。第三步,當我們將候選答案與問題進行對應之後,我們還需要綜合全文去看待這些問題,進行證據的融合來輔證答案的正確性。最後一步,就是針對自己挑出的答案候選進行精篩,最終寫下最正確的答案。

 

有鑑於此,研究組提出的模型也就分為這樣的四層。最下面的一層做表示學習,就是給問題和文字中的每一個詞做一個表示,即深度學習裡的向量。這裡研究組使用的是多層的雙向迴圈神經網路。第二步,就是將問題中的向量和文字中的向量做一個比對,這樣就能找出那些問題和哪些文字部分比較接近。接下來,將這些結果放在全域性中進行比對。這些都是透過注意力機制(attention)達到的。最後一步,針對挑出的答案候選區中的每一個詞彙進行預測,哪一個詞是答案的開始,到哪個詞是答案的結束。這樣,系統會挑出可能性最高的一段文字,最後將答案輸出出來。整個過程就是一個基於以上四個層面的神經網路的端到端系統(見下圖)。

從短句到長文,計算機如何學習閱讀理解

微軟亞洲研究院提出的R-NET演算法的網路結構圖。其中最為獨特的部分是第三層文章的自匹配網路(Self-Matching Networks),更多細節請點選閱讀原文,參考技術報告。

 

關於這項研究的論文已經被ACL 2017錄用,並獲得審稿者的一致好評。

 

SQuAD資料集於2016年9月份釋出了正式版。一經推出,微軟亞洲研究院自然語言計算研究組就敏銳地判斷這是一個非常重要的資料集,將會極大地推動機器閱讀理解的研究,並將在研究界和工業界產生積極深遠的影響。10月,研究團隊就第一次提交了他們的研究成果,並且取得了第一名的好成績,而後續幾個月的數次提交,則是在不斷地重新整理著自己的成績。對於研究團隊來說,這其實是一個試錯的過程,團隊每天都會討論總結當天的試錯成果,有新的想法就不斷嘗試。

未來的方向

提及機器閱讀理解未來值得探索的方向,韋福如分享了他的三點看法。他認為一方面基於深度學習的演算法和模型還有很大的空間,適合機器閱讀理解的網路結構值得在SQuAD類似的資料集上進一步嘗試和驗證。具體來說,透過對R-NET目前處理不好的問題的進一步分析,能否提出可以對複雜推理進行有效建模,以及能把常識和外部知識(比如知識庫)有效利用起來的深度學習網路,是目前很有意義的研究課題。另外,目前基於深度學習的閱讀理解模型都是黑盒的,很難直觀地表示機器進行閱讀理解的過程和結果,因而可解釋性的深度學習模型也將是很有趣的研究方向。

 

其次,人類理解文字的能力是多維度的,結合多工(尤其是閱讀理解相關的任務,例如閱讀理解之後進行摘要和問答)的模型非常值得關注和期待。更進一步,雖然SQuAD提供了比較大的人工標註資料集,如何有效且高效地使用未標註的資料也是非常值得期待的研究課題和方向。最後從任務上看,目前SQuAD的任務定義中答案是原文的某個子片段,而實際中人可能讀完文章之後需要進行更復雜的推理、並組織新的文字表達出來。

 

“目前我們的演算法基本都是抽取型的方式,未來生成型的演算法也值得更多的探索和研究。另外,目前機器閱讀理解關注的都是理解客觀資訊的能力,未來機器理解文字裡面所表達出來的主觀資訊(例如情感)也是非常有趣並值得關注的方向。”韋福如說道。


原文連結:http://mp.weixin.qq.com/s/1VPFyEtKOza0gZpIL3-kFw


相關文章