徐霄玲,鄭建立,尹梓名
(上海理工大學 醫療器械與食品學院,上海 200093)
E-mail:172702146@st.usst.edu.cn
機器閱讀理解(MRC,Machine Reading Comprehension)是自然語言處理的長期目標,是人工智能向前邁進的關鍵一步.互聯網日益普及,深度學習等人工智能技術蓬勃發展,人們在圖像識別、語音識別、圍棋AI等領域已經使計算機達到接近人類甚至超越人類的水平.于是,人們開始往更為復雜的機器閱讀理解領域進行探索.機器閱讀理解是為了培養計算機對自然文本理解的能力,讓其能像人類一樣對文本進行閱讀、推理,也就是意味著計算機在接受自然語言輸入后能夠給出正確的反饋[1].此概念在1972年首先[2]被提出.經過幾十年的變化發展,已經由最初依據規則和詞性、依存句法、語義角色等傳統特征,演變為基于大數據和深度學習進行閱讀推理.本文將從其具體任務,數據集和關鍵技術三方面,對機器閱讀理解做出進一步闡述.
機器閱讀理解實際上是由自然語言理解所衍生的子任務,用以衡量計算機“理解”自然語言所達到的程度.首先由Hirschmann[3]等人提出利用文本閱讀并通過回答問題的形式評估機器閱讀理解,此種評估方式延續至今.通常情況下,機器閱讀理解任務主要由Document(需要機器閱讀的篇章)、Question(需要機器回答的問題)、Answer(機器閱讀理解的答案)三個要素構成.根據任務的不同,Answer可能是篇章中的單個實體或者是篇章中的片段,也可能是機器生成的句子.當任務是閱讀選擇題時,在上述基礎上需要增加Candidate(候選答案)要素,Answer來自于候選答案.近年來,在篇章數據集上學者們做了大量工作,使閱讀理解更加貼近真實應用場景:內容上,由虛構故事向真實問答靠攏;回答方法上,由單純依靠篇章回答向依賴外部知識推理發展;數據量上,從以前的幾百到現在動輒上萬.數據集的具體比較詳見第3節.
機器閱讀理解雖然在認知智能領域是一個極具挑戰的任務,但卻有著較為悠久的歷史.最初由Terry Winograd提出構想[2],認為語法、語義和推理是實現閱讀理解的三大要素.1999年,出現首個自動閱讀理解測試系統Deep Read[3],該系統以故事為基礎衡量閱讀理解任務,利用詞袋模型BOW和人工編寫的規則進行模式匹配,達到了40%的正確率.考慮到閱讀理解需要大量常識,Schubert[4]等人在2000年率先提出一個基于情節邏輯的敘事理解框架,情節邏輯被用于語義表示和外部知識表示.總的說來,機器閱讀理解早期發展速度緩慢,大量依靠手工提取的語法特征以及三元組信息,具有耗時長、魯棒性差等缺點.直到Hermann等人[5]提出使用神經網絡模型,該領域近年來才開始逐步發展起來.其提出的Deep LSTM Reader、Attentive Reader和Impatient Reader三種神經網絡模型,奠定了機器閱讀領域的方法基礎.在此之后,Match-LSTM[6]、BiDAF[7]、Dynamic Coattention Networks[8]等大量優秀模型頻現,權威刷榜評測任務排名不斷更新,為機器閱讀理解提供了統一衡量標準,極大地促進了自然語言理解的發展.
機器閱讀理解實際上是一個數據驅動型任務,因此數據集是其技術發展的基礎.無論是基于人工規則還是基于深度學習等熱門手段,數據集的質量和難度都直接關系到模型的質量和實用性,每次不同形式數據集的出現都會帶來模型的創新.隨著數據集規模增大和考查形式的變化,任務難度不斷上升,對模型的要求也越來越高[9].到目前為止,已經出現很多經典英文數據集.這兩年,國內對閱讀理解任務逐步重視,積極向國際靠攏,開放了DuReader[10]等中文數據集.
表1 各個數據集基本統計信息比較
Table 1 Comparisons of basic statistical Information in datasets

數據集名稱語言類型文章數量問題數量MCTest英文5002000RACE英文2793397687CNN英文92579387420Daily Mail英文119506997467CBT英文108687343BookTest英文-14140825PD&CFT中文28000100000SQuAD英文536107785NewsQA英文12744120000MS MARCO英文88418231010916DuReader中文1000000200000NarrativeQA英文157246765
選擇題能有效避免模棱兩可的答案,因此于2013年微軟推出MCTest[11].MCTest是一個面向開放領域的數據集, 文章內容是適合7歲孩子理解的童話故事,提問形式為四選一選擇題,且問題選項基本來自于原文,這說明基于此數據集的MRC評估模型基本不需要推理能力.MCTest雖然通過眾包的方式反復檢查校驗以確保高質量,但由于其數據規模較小(僅包含了近500篇文章和2000個問題),無法滿足神經網絡等更加復雜的訓練模型.2017年學界開放了RACE數據集[12].RACE同樣利用選擇題的方式評估MRC任務.相較于MCTest,它數據量上占絕對優勢,詳見表1.RACE數據來源于中國12-18歲中學生的英語考試試題,由語言專家出題,59.2%的問題需要聯系上下文進行推理,能更加真實地以人類標準衡量機器閱讀理解的能力.在SemEval-2018任務11發布了基于常識的閱讀理解[13],要求模型引入外部知識,從兩個候選答案中選出一個作為正確答案.
填空就是要求讀者補充句子中缺失的詞語[14].以填空形式構造問題,數量上可以任意擴充.CNN/Daily Mail[5]率先解決了MRC領域數據量不足的問題.Hermann等人從美國有線電視新聞網和每日郵報網中收集了近100萬新聞數據,利用實體檢測和匿名化算法,將新聞中概括性語句轉換為<文章(c),問題(q),答案(a)>三元組.文章中的實體用隨機數字代替,模型利用數字回答相應問題,有利于幫助研究者注重語義關系.CBT[15]和BookTest[16]等也是填空型數據集.兩者任務類似,都是從書中抽取連續21個句子,前20句子作為文章,預測第21句中缺失的詞.但是BT數據規模更大,將近是CBT的60倍,更能滿足復雜深度學習模型的數據需求.哈爾濱工業大學訊飛聯合實驗室于2016年7月提出首個中文填空型閱讀理解數據集PD&CFT[17],增加了該領域語言的多樣性,促進了中文閱讀理解的發展.
篇章片段數據集指的是:在該數據集中,問題的答案不再是單一實體,而是文章中的片段(span).既可以是單一片段,也可以是多個片段的組合,答案類型更加豐富.由于答案的特殊性,因此多采用F1值、EM(準確匹配)、Bleu[18]和Rouge[19]等作為衡量預測值和真實值重疊程度的指標.
SQuAD[20]和NewsQA[21]是篇章片段數據集的代表,數據分別來自于維基百科和CNN新聞.目前,SQuAD數據集已經成為權威刷榜評測任務,且到發文為止在SQuAD1.1數據集中,機器表現已經超越人類.由于SQuAD1.1數據主要集中在可回答的問題,因此斯坦福在其基礎上增加了50000個不可回答問題,提出SQuAD2.0[22],進一步提升了數據集難度.2018年第二屆“訊飛杯”在其評測任務中發布了首個人工標注的中文篇章片段抽取型閱讀理解數據集,填補了中文在這方面的空白.

解決機器閱讀理解問題需要關注以下三個問題:
1)問題和文檔表示:將自然語言文本轉換為計算機能夠理解的形式;
2)檢索上下文:聯系上下文并適當推理,檢索出文檔中與問題最相關的文章片段;
3)獲取答案:對檢索出的文章片段進行歸納總結,得到答案.
用于解決機器閱讀理解問題方法有傳統方法和深度學習方法.傳統方法更多地是在句子粒度上回答問題.將問題和文檔提取特征后表示成矩陣,或利用人工規則,對問題Q的每個候選答案句應用相應類型規則集中的所有規則,累計計算得分,總得分最高者為問題Q的答案句[26];或把閱讀理解當成分類任務,根據已經得到的特征,利用SVM等傳統機器學習算法,得到答案A[27].傳統方法核心是特征抽取,包括抽取淺層特征和深層語義特征.目前被認為有效的特征主要有依存句法、詞頻共現、語篇關系等.雖然傳統方法能在一些數據集上取得較好結果,但是由于特征需要專家根據數據集制定,魯棒性差;再加之,只能從現有文本中提取特征,不能對文本進行推理,因此無法真正解決機器理解問題.
如今隨著數據量幾何級增長,硬件計算能力不斷增強,深度學習方法被廣泛運用到詞粒度的機器閱讀理解任務中.深度學習的最大優勢在于能夠通過通用的端到端的過程學習數據的特征,自動獲取到數據的高層次表示,而不依賴于人工設計特征[28].用于MRC任務的深度學習模型基本包含嵌入層、編碼層、語義交互層和答案抽取層.嵌入層將文章和問題映射成包含相關文本信息的向量表示,便于計算機理解;編碼層利用RNN、LSTM等神經網絡對文章和問題編碼,得到上下文語義信息;匹配層根據將上述文章和問題編碼信息進行融合匹配,最終得到混合兩者語義的交互向量,這是整個模型中最重要的部分;答案預測層,根據語義交互向量,或選擇答案,或抽取答案邊界,或生成答案[29]
研究工作表明,預訓練模型能有效提升大多數自然語言處理任務效果,MRC任務同樣也適用.預訓練模型是前人為了解決類似問題所創造出來的模型,該模型參數能直接應用于當前任務中,既能彌補在語料不足的情況下構造復雜神經網絡,又能在語料充足的情況下加快收斂速度.預訓練模型的輸出值,一般被應用于嵌入層,用以得到通用文本特征.
自然語言處理的所有任務本質上都是對向量的進一步使用,詞作為語言表示中的基本單位,如何將其轉化為向量是基礎工作之一.通常情況下,詞向量是預先訓練好的,可以將其看成單層的預訓練模型.在深度學習時代未到來以前,最為簡單的詞向量表示方法就是one-hot編碼.但由于其無法解決維度災難和語義表達問題,Rumelhart等人[30]提出分布式詞表示,使用稠密的低維向量表示每個詞.研究者在此理論基礎上,提出眾多構建詞向量的方法:Word2Vec[31]、Glove[32]和FastText[33],這些方法被廣泛應用于自然語言處理領域的各項任務中.
4.1.1 ELMo
近年來,出現三大預訓練模型.ELMo(Embeddings from Language Models)[34]是其中之一,它利用雙向LSTM提取到訓練數據的單詞特征、句法特征和語義特征.包含N個詞的語料(t1,t2,…,tN),前向LSTM根據已知詞序列(t1,t2,…,tk-1),求詞語tk的概率,如公式(1)所示.后向LSTM則反之,根據已知詞序列(tk+1,tk+2,…,tN)求概率,如公式(2)所示.ELMo就是結合前向和后向LSTM,求取聯合似然函數的最大值,見公式(3),其中Θ表示神經網絡中的各項參數.ELMo用于MRC任務時,將模型的每層輸出按照權重相乘得到詞向量ELMok,再將ELMok與普通詞向量xk或者是隱層輸出向量hk拼接作為模型嵌入層輸入.實驗表明,ELMo使當時最好的單模型[35]在SQuAD數據集上F1值提升了1.7%.
(1)
(2)

(3)
4.1.2 GPT
GPT(Generative Pre-Training)(1)https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf是生成式預訓練模型,是一種結合了無監督預訓練和監督微調(supervised fine-tuning)的半監督方法.在預訓練階段,使用谷歌提出的單向Transformer[36]作為特征提取器.Transformer依靠自注意力機制抽取特征,能力強于LSTM,被認為是NLP領域效果最好的長距離特征提取器.其他方面,仍然采用標準的語言模型訓練目標函數,根據已知前k-1個詞,求取當前詞概率的最大似然估計:
(4)
式(3)和式(4)比較,不難發現,GPT只依靠上文信息進行預測,而ELMo則結合了上下文信息.
Radford等人提出GPT-2[37],是GPT的升級版.GPT-2與GPT最大的區別在于數據規模更大,模型層數更多,高達48層.GPT應用于具體NLP任務時,要保證任務的網絡結構與GPT一致,最簡單的做法就是在GPT的最后一層Transformer層接入softmax作為任務輸出層,通過訓練對網絡參數進行微調.實驗表明,GPT應用于RACE數據集,使最佳模型結果提高了5.7%.
4.1.3 BERT
考慮到GPT模型的不足,谷歌團隊提出BERT(Bidirectional Encoder Representations from Transformers)預訓練模型[38],得到了學術界廣泛關注.BERT預訓練模型在流程上,與GPT保持了一致,都包含了預訓練階段和微調階段.它與GPT最大的不同在于其使用雙向Transformer完成了語言模型的訓練,是GPT模型的進一步發展.同為雙向語言模型,但其與ELMo訓練的目標函數是不同的.ELMo分別將P(tk|t1,t2,…,tk-1)和(tk+1,tk+2,…,tN)作為目標函數,求兩者結合后的最大似然概率.而BERT則以P(tk|t1,t2,…,tk-1,tk+1,…,tN)為目標函數,真正意義上表征了上下文語境特征.BERT提出后,在11個NLP任務中均取得了最好效果.在MRC任務中,單個BERT模型在SQuAD數據集中較最優模型F1值提高了1.5%.
三大預訓練模型結構差異詳見圖1.Trm代表Transformer,(E1,E2,…,EN)為預訓練模型輸入,(T,T2,…,TN)則表示輸出.ELMo使用雙向LSTM的輸出用于下游任務,而GPT使用單向Transformer,BERT使用雙向Transformer.

圖1 預訓練模型結構對比圖
閱讀理解任務中,篇章往往較長,但與答案相關的內容只是其中的一小部分.在傳統方法中,通常利用循環網絡將篇章編碼成固定長度的中間語義向量,然后利用該向量指導每一步長輸出.此舉既造成了信息過載,限制了模型效果,也降低了模型的運行效率.為改變上述狀況,學者們從機器翻譯領域借鑒注意力機制[39],在MRC模型的語義交互層加入注意力機制,獲取文章中與問題最相關的部分以提升效果.
4.2.1 基本概念

圖2 注意力機制流程
谷歌指出注意力機制就是加權求和[36].注意力實現機制如圖2所示,分為兩個步驟:計算注意力分布和加權平均.MRC任務中,P=[p1,p2,p3,…,pn-1,pn]代表篇章信息,向量pi為篇章中的每個詞的向量表示,i表示詞在文中的索引,i∈[1,n];Q為問題的向量表示.通過打分函數s計算篇章中每個詞與問題Q的相關性分數,然后經過softmax函數層,得到和為1的注意力分布αi,如公式(5)所示:
(5)
其中函數s為注意力打分函數,可以是簡單的計算,也可以是復雜的神經網絡,常見的主要有點積運算、雙線性模型、縮放點積模型和加性模型(2)https://nndl.github.io/,分別見公式(6)-公式(9):
(6)
(7)
(8)
s(pi,Q)=vTtanh(Wpi+UQ)
(9)
其中W、U、v為神經網絡模型可學習參數,d表示篇章向量的維度.不同的打分函數對模型的意義是不一樣的,例如點積運算相較于加性模型,能更好的利用矩陣乘法,有利于訓練效率地提高;雙線性模型相較于點積運算,引入了非對稱項,有利于信息提取等.因此,需要根據數據和模型需要選擇合適的打分函數.
注意力分布αi獲取了篇章中與問題強相關的部分,最后根據加權平均聚合所有篇章信息,強化相關信息,弱化甚至舍棄無關信息,用于最后的答案預測,見公式(10).
(10)
4.2.2 相關模型
Attentive Reader[5]率先將注意力機制應用于機器閱讀理解中,使用雙向LSTM對文章進行編碼,利用注意力機制求出每個詞對應的權重,加權求和后最終表示出文章.其中使用公式(9)作為計算注意力分布的打分函數.Stanford Attentive Reader使用雙線性項(公式(7))代替上述模型中tanh函數計算權重,在其基礎上效果提升了7%~10%[23].Impatient Reader[5]模型基本結構與Attentive Reader一致,但同時考慮了問題對文章權重的影響,因此每當從問題中獲取一個詞就迭代更新一次文章表示的權重.Attention Sum Reader[40]通過點積運算獲取注意力權重,同時將相同詞概率進行合并獲取概率,得出答案.Gated-Attention[41]在AS Reader模型基礎上,增加網絡層數,并改用Hadamard乘法求解權重,提出新的注意力模型.Match-LSTM[42]則是第一個適用于SQuAD數據集的端到端神經網絡模型.
之后,出現很多關于注意力的變體.2016年,科大訊飛提出Attention-over-Attention Reader層疊式注意力模型[43],在原有注意力上增加一層注意力,來描述每一個注意力的重要性.并在其基礎上衍生出交互式層疊注意力模型(Interactive AoA Reader)和融合式層疊注意力模型(Hybrid AoA Reader),在SQuAD數據集上均表現不俗.針對選擇題型機器閱讀理解,朱海潮[44]等人提出Hierarchical Attention Flow,通過使用詞級別和句子級別注意力,將文章、問題和選項進行充分交互,在RACE數據集上取得優于基準模型的效果.DCN[45]利用Co-attention技術分別生成關于文檔和問題的權重分布并結合,通過多次迭代得到答案;BiDAF[7]在交互層引入雙向注意力機制context-to-query和query-to-context;DFN[46]將一般模型中固定的注意力機制擴展到多策略注意力,使模型能根據問題類型動態選擇出適宜的注意力機制;Reasonet[47]則將Memory Network(見4.3節)和attention結合,動態決定閱讀次數,直至能回答問題為止.這些均為MRC任務中注意力的使用提供了新思路.具體模型在數據集上的實驗結果詳見表2、表3.
表2 模型在RACE數據集上的正確率
Table 2 Accuracy on RACE datasets

模 型 RACE-MRACE-HRACEStanford AR44.243.043.3GA Reader43.744.244.1Hierarchical Attention[44]45.046.446.0DFN[46]51.545.747.4Human Performance95.494.294.5
表3 模型在CNN/DailyMail和CBT數據集的正確率
Table 3 Accuracy on CNN/DailyMail and CBT datasets

模 型 CNNValTestCBT-NEValTestDaily MailValTestAttentive Reader[5]61.663.070.569.0--Impatient Reader[5]61.863.869.068.0--Stanford AR[23]73.873.677.676.6--AS Reader[40]68.669.575.073.973.868.6GA Reader[41]73.073.876.775.774.969.0AoA Reader[43]73.174.4--77.872.0ReasoNet[47]72.974.777.676.6--BiDAF[7]76.376.980.379.6--
隨著數據量不斷增加,學者認為傳統機器學習模型(如RNN、LSTM等)利用隱含狀態記憶,容量太小,無法完整記錄文本內容.除了使用注意力機制提取與問題最相關的文章內容之外,他們提出一種可讀寫的外部記憶模塊,與問題相關的信息保存在外部記憶中,需要時再進行讀取.并將其和推理組件聯合訓練,最終得到具有長期記憶推理能力的靈活記憶能力.MRC任務中,不僅文章篇幅較長,而且還有可能需要添加先驗知識,記憶網絡的使用能有效改善網絡容量不足、長距離依賴等問題.
4.3.1 基本概念
記憶網絡的概念在2014年首次被提出[48].從某種程度上說,記憶網絡是一個框架,包含輸入模塊、輸出模塊、記憶模塊等.學者可以根據自己的需要定制框架下的各個模塊.記憶網絡常見模塊構成如圖3所示.

圖3 記憶網絡基本組成模塊
輸入模塊X:輸入訓練數據,包括篇章、問題等.
輸出模塊Y:輸出答案.
主網絡C:控制信息交互.既包括與外界信息交互:根據輸入X,獲取篇章內容P和問題Q;得到預測答案后輸出到Y.也包括與外部記憶單元交互,控制讀寫操作完成外部記憶單元的動態更新.
讀操作R:根據輸入中的問題Q、主網絡在多次推理過程中生成的問題向量qr,從外部記憶單元中讀取相應的信息.
寫操作W:根據主網絡在多次推理過程中生成的問題qw、待寫入的信息a,更新外部記憶單元內的相關信息.
外部記憶單元M:引入的外部記憶模塊,用于存儲信息.存儲形式可以為數組、棧、隊列等,也就是說每個記憶單元都是擁有自己的地址的,讀寫操作都是根據尋址后完成的.
4.3.2 相關模型
Weston等人[48]首先提出記憶網絡的雛形,指出記憶網絡由一個記憶模塊m和四個組件I(輸入)、G(泛化)、O(輸出)、R(回答)組成.將上下文和問題輸入之后,利用記憶模塊進行存儲,并能根據相關信息動態更新,最后找到與問題最相關的記憶作為答案并輸出.上述模型雖然能解決網絡容量不足的問題,但模型每一層都需要監督,無法進行反向傳播計算,這與現階段端到端的模型思想相違背.為了解決上述問題,End-to-End Memory Networks(MemN2N)[49]被提出.它在滿足基本組成模塊的前提下,重新搭建模型框架,使用加權求和的方式得到輸出向量,是一個端到端的反向傳播記憶網絡,同時支持多跳推理.Key-Value Memory Network[50]在端到端記憶網絡的基礎上,優化了網絡結構,擴大了記憶規模,使其能更好地存儲先驗知識.上述三個模型為記憶網絡的發展奠定了理論基礎,卻一直沒有運用到相關機器閱讀理解數據集上,直到MEMEN模型的出現[51].MEMEN對篇章和問題采取多層次輸入,包括字向量輸入、詞向量輸入、詞性輸入和命名實體輸入,充分融合文檔和問題當中的信息,將其存儲到記憶單元中.同時使用一種新的分層注意力機制尋址記憶單元,并動態更新單元內容.類似地還有MAMCN[52],增加額外記憶單元,并利用BiGRU更新,嘗試解決長距離依賴問題,實現跨文檔預測答案.
表4 模型在SQuAD測試數據集上的EM值和F1值
Table 4 Exact Match(EM)and F1 scores on SQuAD 1.1 test

模 型 EM F1Match-LSTM[42]64.773.7DCN[45]66.275.9BiDAF68.077.3ReasoNet69.178.9MEMEN[51]70.980.4MAMCN[52]70.979.9InteractiveAoA Reader73.681.9HybridAoA Reader80.087.3Bert[38]87.493.2Human Performance82.391.2
從表2-表4中,我們不難發現現階段模型往往是針對特定類型數據集設計,大多數模型不具備遷移到其他類型數據集的能力.即使遷移成功,模型也不是一成不變,相同模型在不同類型數據集上的效果也不同.我們需要根據數據集特點對模型進行選擇、設計和改進.
機器理解能力是機器從感知智能走向認知智能的關鍵,機器閱讀理解近些年來取得了較快的發展.在答案形式上,從最初的選擇題,變成單詞填空,最終發展到篇章片段抽取或自主生成答案;在數據集內容上,從簡單的孩童虛構故事,往依托常識、看重推理能力的真實世界人類問答發展;在關鍵技術上,由通過基于傳統特征完成閱讀理解,到如今使用深度學習技術并結合預訓練模型、注意力機制、記憶網絡等新型技術提升效果.近兩年,注意力機制較記憶網絡發展更為火熱,出現很多變體.
對機器閱讀理解未來發展有以下幾點值得關注:
1)縱觀現有閱讀理解數據集,針對專業領域數據集較少,適用于通用領域的模型并不一定在特定領域有好的效果,因此,應該結合行業趨勢,推出如金融、醫療領域的相關數據集.
2)從上述研究方法中,不難發現attention的設計與任務息息相關,如何根據任務設計合理的attention方法仍會是研究熱點.
3)現閱讀理解模型基本是在沒有融合外部知識的情況下,直接從給定文檔中抽取相關信息作為答案,這與人類閱讀習慣有較大差異.因此,如何整合多數據源外部知識,并將其融入現有模型是值得我們關注的.
4)大多數相關中文模型依賴于英文模型,應該綜合考慮中文和英文語言特點上的差異,構建更加適用于中文的模型.
5)將機器閱讀理解技術與其他自然語言處理任務相結合,有利于促進自然語言處理技術整體發展.