李澤政,田志興,張元哲,劉 康,趙 軍
(1. 中國科學(xué)院 自動化研究所 模式識別國家重點實驗室, 北京 100190;2. 中國科學(xué)院大學(xué) 人工智能技術(shù)學(xué)院, 北京 100049)
隨著互聯(lián)網(wǎng)、人工智能行業(yè)的迅猛發(fā)展,網(wǎng)絡(luò)空間中的數(shù)據(jù)規(guī)模以指數(shù)級速度增長。文本閱讀理解作為驗證理解文本數(shù)據(jù)的重要手段,在近些年來也迎來了蓬勃發(fā)展。該任務(wù)在形式上表現(xiàn)為:給定問題,系統(tǒng)要求根據(jù)給定的文檔輸出正確答案。近年來,得益于海量數(shù)據(jù)的大規(guī)模獲取和深度學(xué)習(xí)的方法的應(yīng)用,機器閱讀理解任務(wù)取得了長足的進展。
盡管經(jīng)典的機器閱讀理解模型已經(jīng)在一些簡單的測試樣例下取得了很好的性能,然而在面對更為復(fù)雜且貼近真實應(yīng)用場景的情況時,已有方法的表現(xiàn)仍然捉襟見肘,在需要推理的場景下問題尤為突出[1-5]。
目前,已有部分工作通過引入外部知識嘗試去解決這個問題。如Chen等[1]、Wang等[2]、Yang等[3]主要采用注意力機制融入外部知識;Mihaylov等[4]和Sun等[5]主要采用記憶網(wǎng)絡(luò)機制融入外部知識;除此之外,Weissenborn等[6]嘗試動態(tài)融入外部知識,Bauer等[7]采用多跳方式融入外部知識。然而,上述這些方法主要關(guān)注的是如何把特定的一個或多個來源的知識融入模型中,卻忽略了知識來源選擇的問題。引入外部知識時如果對來源不加以區(qū)分,可能會給模型輸入噪聲,進而干擾模型對文本的理解和推斷,最終影響模型的測試性能。
如圖1所示,該機器閱讀理解樣例的測試目標(biāo)是根據(jù)給定的故事文本推斷其結(jié)尾,假設(shè)在引入外部知識時,模型有兩個知識來源:WordNet[8]和ConceptNet[9]。其中關(guān)鍵詞“dinner”的解釋分別為:dinner的同義詞是supper,dinner是一種“good time to gather”。由于神經(jīng)網(wǎng)絡(luò)模型天然具有數(shù)據(jù)關(guān)聯(lián)的特性,來自于WordNet的“supper”與錯誤答案E1中的“supper”具有顯著的自相關(guān)特性,所以模型容易被誤導(dǎo)從而導(dǎo)致選擇錯誤答案。而來自于ConcpetNet的“good time to gather”與正確答案E0中的關(guān)鍵詞“catch up”具有高度的語義相關(guān)性,所以模型更傾向于選擇正確答案。
圖1 故事結(jié)尾推斷型機器閱讀理解樣例
事實上,在自然語言處理領(lǐng)域中,每個知識庫都有自身的特點,如WordNet側(cè)重于詞語的上下位、同義詞,而ConceptNet更側(cè)重于對詞語本身概念的解釋與語義擴展。如果引入的外部知識庫并不包含對回答問題有幫助的知識,則無論采用何種知識融入方式都相當(dāng)于引入噪聲,這反而會降低模型性能。因此本文重點在于探討如何根據(jù)給定文檔和問題,自適應(yīng)地匹配對回答問題有幫助的外部知識庫。
本文提出了一種針對機器閱讀理解任務(wù)進行自適應(yīng)外部知識增強的方法。首先,根據(jù)上下文對多個外部知識庫分別檢索出對回答問題可能有幫助的知識。然后,基于注意力機制分別得到對每個來源的外部知識感知的上下文編碼。接著通過硬性或軟性的方式,自適應(yīng)地確定最合適的外部知識來源,進而挑選出該來源知識感知的上下文編碼。最后,將選擇出來的編碼融入原有模型選出最終答案。本文通過實驗證明了對機器閱讀理解任務(wù)自適應(yīng)引入外部知識具有必要性和有效性。
本文的主要貢獻有三個:
(1) 指出現(xiàn)有機器閱讀理解任務(wù)中缺乏自適應(yīng)選擇知識源的問題;
(2) 針對該問題提出基于機器閱讀理解任務(wù)的自適應(yīng)知識選擇模型;
(3) 基于兩個常見外部知識庫WordNet[8]和ConceptNet[9],在ROCStories[10]數(shù)據(jù)集的基線模型上準(zhǔn)確率提高了1.2個百分點。
最早的機器閱讀理解研究可以追溯到1972年MIT人工智能實驗室的一篇報告“Toward a model of children’s story comprehension”。半個世紀(jì)之后,微軟2013年提出的MCTest[11]數(shù)據(jù)集、谷歌和牛津大學(xué)2015年提出的CNN/DailyMail[12]數(shù)據(jù)集、最為經(jīng)典的為斯坦福大學(xué)2016年提出的SQuAD[13]數(shù)據(jù)集,以及基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)模型,把機器閱讀理解任務(wù)推到了前所未有的高度。以抽取式機器閱讀理解任務(wù)為例,Wang[14]基于RNN架構(gòu)提出了Match-LSTM模型,Minjoon Seo[15]引入問題與文檔之間雙注意力機制提出了BiDAF模型,Wang[16]采用文檔自注意力機制提出了R-Net模型。在不斷涌出的新興模型推動下,機器在簡單機器閱讀理解任務(wù)上的表現(xiàn)屢屢超過人類水平。于是,現(xiàn)有的機器閱讀理解研究向知識增強、識別不可回答問題、多文檔機器閱讀理解、多跳推理等方向發(fā)展。
研究者們對基于機器閱讀理解的知識增強任務(wù)做了大量研究。Long等[17]提出了一種類似于完形填空的缺失命名實體預(yù)測任務(wù)。該任務(wù)通過從Freebase知識庫中檢索得到的對于實體的描述用以輔助預(yù)測僅僅通過上下文無法預(yù)測出的實體。一些研究者對注意力機制按照符合機器閱讀理解任務(wù)的特性進行改進。Chen等[1]提出了KIM模型,通過收集局部信息進行自然語言推理。Wang等[2]采用了三路注意力機制,分別對問題、文檔和外部知識進行編碼,從而融合來自外部知識庫ConceptNet中的知識。Yang等[3]提出了KT-NET模型,通過打分機制和注意力機制融合來自外部知識庫WordNet、Nell的知識。也有一些研究者在記憶網(wǎng)絡(luò)上進行改進,Mihaylov等[4]把給定問題和從外部知識庫檢索到的知識作為鍵進行匹配,按照其相關(guān)性作為值進行打分。Sun等[5]在記憶網(wǎng)絡(luò)的基礎(chǔ)上根據(jù)外部知識的相關(guān)性對候選答案進行打分。
除了基于注意力機制和記憶網(wǎng)絡(luò)機制以外,針對不同形式的機器閱讀理解任務(wù),研究者們也做了大量改進。Bauer等[7]針對生成式的多跳機器閱讀理解任務(wù)提出了一種新的融合外部知識的方法。該方法基于互信息和詞頻的打分函數(shù)從外部知識庫ConceptNet選擇對給出答案可能有幫助的常識。Mihaylov等[4]針對完形填空式的機器閱讀理解任務(wù)提出了一種把外部知識編碼作為鍵值對進行存儲的知識網(wǎng)絡(luò)模型,有效地將上下文與外部知識進行交互融合。Weissenborn等[6]提出了一種通用的融合外部知識的架構(gòu),融合外部知識和上下文,和不同下游任務(wù)相連接,從而實現(xiàn)動態(tài)的融合外部知識。
此外,針對某個特定的外部知識庫和某些特定的數(shù)據(jù)集,研究者們也做了具有針對性的工作。Wang等[19]為了充分利用WordNet的語義關(guān)系網(wǎng),提出了語義關(guān)系鏈的概念,把位置信息作為一種特征融入上下文中?,F(xiàn)有的知識庫一般以結(jié)構(gòu)化方式存儲知識,Pan等[20]針對科學(xué)領(lǐng)域的經(jīng)典問答數(shù)據(jù)集ARC和OpenBookQA提出了一種融合外部無結(jié)構(gòu)化知識的方法,將來自外部知識庫的關(guān)于實體的無結(jié)構(gòu)化描述文本進行融合從而輔助選擇正確答案。
針對ROCStories數(shù)據(jù)集,研究者們也提出了一些知識增強的機器閱讀理解模型。Li等[21]提出了一種多注意力引入外部知識的方法,把常識引入端到端的神經(jīng)網(wǎng)絡(luò)模型。由于ROCStories的給定文檔和候選項可以構(gòu)成一個完整的生活化小故事,Chen等[22]把外部知識歸為三類:敘述序列、情感演變和常識知識,對這三類外部知識進行端到端的融入。Tian等[23]提出了一種新穎的圖迭代網(wǎng)絡(luò)方法,把外部知識作為原子融入圖網(wǎng)絡(luò),模擬人類進行閱讀理解的習(xí)慣,從而再現(xiàn)每一個樣例的場景。
為了讓模型更好地引入外部知識,我們提出了自適應(yīng)引入外部知識的方法,具體如圖2所示,本文將模型分為三個部分:①問題與文檔編碼模塊;②知識引入模塊;③答案選擇模塊。其中,知識引入模塊詳解見2.2。
圖 2 基于自適應(yīng)知識選擇的機器閱讀理解模型框架圖
針對問題與文檔編碼模塊,本文采用BERT[24]模型作為上下文(問題與文檔)編碼模塊。針對知識引入模塊,我們首先根據(jù)上下文的自然語言文本從不同外部知識庫中檢索出相關(guān)知識,然后基于注意力機制得到每個外部知識庫知識感知的上下文編碼,再通過計算匹配度自適應(yīng)選擇外部知識融入模型。針對答案選擇模塊,我們通過融入外部知識的上下文編碼對不同答案進行打分,以選擇最終答案。
本文以預(yù)訓(xùn)練語言模型BERT作為編碼器,輸入句子以字符為單位表示為s={c1,c2,c3,…,ci,…,cl},其中l(wèi)表示該句子的長度,即該句子中字符的個數(shù)。BERT模型的輸入為字符序列,在機器閱讀理解任務(wù)中,輸入為[CLS]+q+[SEP]+d+[SEP],其中[CLS]和[SEP]為BERT模型輸入的特殊處理字符,q表示問題,d表示文檔。BERT模型輸出為上下文每個字符對應(yīng)的隱向量組成的編碼(隱向量序列)和代表上下文全局的編碼(單個隱向量)。其具體如式(1)所示。
其中,g(·)為BERT編碼函數(shù),c為代表上下文全局的單個隱向量,c∈Rd,h為代表上下文的隱向量序列,h∈Rl×d,d為隱層維度。
知識引入模塊如圖3所示。我們首先基于注意力機制得到外部知識感知的上下文編碼,然后依據(jù)具有上下文全局信息的編碼對不同外部知識感知的上下文編碼進行匹配,最后選擇合適的外部知識感知上下文編碼進行下一步的答案選擇。
圖 3 知識引入模塊
2.2.1 基于注意力機制的外部知識感知的上下文編碼
對于上下文編碼h和外部知識編碼k,外部知識感知的上下文編碼計算如式(2)~式(4)所示。
其中,k由檢索到的外部自然語言文本輸入式(1)得到,k∈Rr×d,r為外部知識字符個數(shù)。αij為兩個隱向量序列每一對單元的相關(guān)度。
其中,式(3)對式(2)得到的相關(guān)度進行歸一化,式(4)以歸一化的相關(guān)度分?jǐn)?shù)權(quán)重對外部知識中每個字符的表示進行加權(quán)求和。
2.2.2 基于匹配度打分自適應(yīng)選擇外部知識
本文采用硬性和軟性兩種選擇外部知識的方法,具體計算方式如下。
硬性選擇外部知識: 將上下文和外部知識輸入式(1),除了能得到h和k之外,還可以得到代表上下文全局信息的ch和代表外部知識全局信息的ck。ch和ck相關(guān)度計算如式(5)所示。
其中,s為一個標(biāo)量,作為ch和ck相關(guān)程度的度量,ch,ck∈Rd。
對于多個外部知識庫KB1,KB2,…,KBm,則得到多個相似度s1,s2,…,sm,其中,m是外部知識庫的個數(shù)。自適應(yīng)選擇匹配度最大的那一個作為外部知識源融合原文檔的語義表達,本文稱之為硬性選擇外部知識,如式(6)所示。
其中,v*為與原文檔匹配度最大的外部知識感知的上下文編碼。
軟性選擇外部知識: 對于經(jīng)過注意力機制得到的外部知識感知的上下文編碼,我們不僅可以對外部知識源進行硬約束,還可以對其進行軟約束,即把來自不同知識庫的外部知識加權(quán)融入上下文編碼,如式(7)~式(9)所示。
其中,σ(·)是sigmoid激活函數(shù),βi即加權(quán)因子,m是外部知識庫的個數(shù),ws是學(xué)習(xí)參數(shù)向量,vi,ws∈Rd,v*為與軟性融合的外部知識感知的上下文編碼。
2.2.3 融入外部知識
對于選擇得到的外部知識編碼v*,與式(1)得到的上下文編碼h相加得到新的隱向量序列h*作為下一層神經(jīng)網(wǎng)絡(luò)的輸入,如式(10)所示。
其中,wo∈Rh,該向量是一個參數(shù)矩陣,scorei為一個標(biāo)量。最終選擇打分最高的答案a*作為終選答案,如式(12)所示。
其中,n為候選答案個數(shù)。
本文采用ROCStories[10]數(shù)據(jù)集,該數(shù)據(jù)集由亞馬遜眾包平臺上的工人制作得到。在該數(shù)據(jù)集的開發(fā)集和測試集中,每個樣本都包含一個由4句話組成的文檔和兩個候選單句,其中兩個候選單句分別為正負(fù)例,其樣式如圖1所示。本文與Cai等[25]、Chaturvedi等[26]、Cui等[27]、Tian等[23]設(shè)置相同,對3 742個樣例進行五折交叉驗證,評價指標(biāo)為準(zhǔn)確率(Accuracy)。
3.2.1 實驗細節(jié)
文檔與問題編碼模塊采用BERT-Base模型,其網(wǎng)絡(luò)層數(shù)為12層,隱層維度為768維,多頭個數(shù)為12,參數(shù)規(guī)模為110M,占用現(xiàn)存7GB多。實驗采用的優(yōu)化器為Adam[28],Batchsize設(shè)置為32,初始學(xué)習(xí)率為0.000 1,以每輪0.95指數(shù)級遞減。
3.2.2 外部知識庫
WordNet是一個詞典知識庫。WordNet對名詞、動詞、形容詞和副詞等構(gòu)建了一個語義網(wǎng)絡(luò),如“dinner”是“supper”的同位詞。WordNet存儲知識的格式以結(jié)構(gòu)化數(shù)據(jù)為主。實驗采用的WordNet知識庫由Python包nltk加載得到。
ConceptNet是一個常識知識庫。不同于WordNet,ConceptNet對各種常識概念構(gòu)建了一個語義網(wǎng)絡(luò),如“dinner”通過“type of”與“good time to gather”相連接。ConceptNet(1)ConceptNet通過官方的API接口http://api.conceptnet.io/c/en/獲取。存儲知識的格式接近于非形式化、更貼近自然語言的樣式。
本文以在ROCStories數(shù)據(jù)集上進行實驗的一系列模型作為基線模型。為簡單起見,我們只列舉了具有代表性的工作,如表1所示。
表1 ROCStories數(shù)據(jù)集各模型性能
SeqMANN:一個采用了多注意力機制引入外部知識的模型,該模型通過大量的無標(biāo)注樣例擴充數(shù)據(jù)集。
GPT:一個生成式的預(yù)訓(xùn)練語言模型,該模型在ROCStories數(shù)據(jù)集上進行微調(diào)。
Concept:一個引入多類知識的模型,該模型引入的外部知識庫只有ConceptNet。
BERT:一個預(yù)訓(xùn)練語言模型,該模型在ROCStories數(shù)據(jù)集上進行微調(diào)。
3.4.1 與SOTA方法比較
實驗結(jié)果如表1所示,本文提出的自適應(yīng)知識選擇的方法取得了SOTA的性能。本文方法比SeqMANN高出了4.9個百分點,這說明了BERT作為編碼器和自適應(yīng)選擇的有效性。本文比Concept高出了兩個百分點,這說明了采用多個外部知識庫進行自適應(yīng)選擇的重要性。本文方法比BERT提高了1.2個百分點,比GPT高出了 3.1個百分點,這充分說明了自適應(yīng)選擇外部知識源進行知識引入的必要性。
3.4.2 自適應(yīng)知識選擇的有效性
本文進行以下對比試驗,如表2所示: ①“+WordNet”指只引入WordNet一個外部知識庫的知識;②“+ConceptNet”指只引入ConceptNet一個外部知識庫的知識;③“+WordNet+ConceptNet”指同時引入WordNet和ConceptNet的知識且不加區(qū)分;④“+硬性選擇WordNet/ConceptNet”指引入硬性選擇兩個外部知識庫的知識;⑤“+軟性選擇WordNet&ConceptNet”指引入軟性選擇兩個外部知識庫的知識。
表 2 對比實驗結(jié)果
“+WordNet”&“+ConceptNet”:在分別引入外部知識庫WordNet和ConceptNet的知識之后,模型準(zhǔn)確率都有了0.4個百分點的提升,這說明引入知識確實是有效的。
“+WordNet+ConceptNet”:當(dāng)同時引入多個外部知識庫的知識且不加區(qū)分時,性能比基線模型反而下降了0.1個百分點,這說明不加選擇地引入知識可能會帶來模型性能的損失。
“+硬性選擇WordNet/ConceptNet”:當(dāng)引入硬性選擇的外部知識時,模型比基線模型高出1.0個百分點,這說明在機器閱讀理解任務(wù)上對自適應(yīng)引入外部知識是必要且有效的。
“+軟性選擇WordNet&ConceptNet”:當(dāng)引入軟性選擇的外部知識后,模型性能有了進一步的提升,說明對多個外部知識源的知識進行加權(quán)融合,可以取得最佳的效果。我們推測在有限數(shù)據(jù)集下,軟性選擇可能在訓(xùn)練上更平滑,所以取得了更優(yōu)的效果。
3.4.3 樣例分析
為了更加直觀地分析本文提出的知識選擇機制,我們對測試集進行了采樣分析,如圖4、圖5所示,其中數(shù)字表示模型內(nèi)部選擇外部知識時的打分,笑臉符號表示引入此知識使得模型得到正確答案,哭臉符號表示引入此知識使得模型得到錯誤答案。如圖4所示,來自WordNet的(hockey,similar to,baseball)的打分為0.06,如果模型選擇引入該知識,則可能誤導(dǎo)模型選擇錯誤答案E0。來自ConceptNet的(hockey,type of,game)的打分為0.94,如果模型選擇引入該知識,由于“game”和“competition”具有高度的語義相關(guān)性,模型更傾向于選擇正確答案E1。我們可以看出模型確實具有正確區(qū)分外部知識源的能力。
圖 4 正樣例
圖 5 需要更多外部知識源的錯誤樣例
在采樣過程中,我們同樣也發(fā)現(xiàn)了一些錯誤樣例。通過對錯誤樣例的抽樣統(tǒng)計,可以發(fā)現(xiàn)模型判斷錯誤主要集中在以下幾個方面(表3),其中抽樣數(shù)量為200。其中,“需要更多外部知識源”表示模型需要更多的外部知識庫進行知識引入才能得出正確答案?!靶枰嗵评怼北硎灸P托枰ㄟ^至少大于一步的推理鏈才能得出正確答案?!捌渌北硎灸P图词雇ㄟ^引入外部知識或推理的途徑也很難得到正確答案。如圖5所示,無論加入來自何種知識源的外部知識,都不能有效地引導(dǎo)模型,反而會降低模型的性能表現(xiàn)。這說明我們需要進一步擴充多樣化的外部知識源。如圖6所示,如果想要得到正確答案,則需要從“candy”推理到“food”再推理到“kitchen”。擴充外部知識源和多跳推理可以作為下一步研究的方向。
表 3 負(fù)樣例錯誤原因比例分析
圖6 需要多跳推理的錯誤樣例
本文致力于引入外部知識來提升機器閱讀理解模型的性能。與大多數(shù)已有方法不加區(qū)分地引入多種知識來源的方式,不同本文提出了一種根據(jù)上下文特點自適應(yīng)選擇外部知識來源的方法,以更有針對性地引入外部知識。為了驗證該方法的有效性,本文在公開數(shù)據(jù)集ROCStories上做了充分的實驗。結(jié)果表明,本文提出的自適應(yīng)引入外部知識的方法能夠較好地提升模型效果。在此基礎(chǔ)之上,我們將進一步探索某些特定領(lǐng)域的自適應(yīng)知識引入方法。