趙 耀 白 宇 蔡東風(fēng) 樊睿文
(沈陽航空航天大學(xué)人機(jī)智能研究中心 遼寧 沈陽 110136)
機(jī)器閱讀理解(MRC,machine reading compreh-ension)是自然語言處理領(lǐng)域的一個重要且富有挑戰(zhàn)性的任務(wù)。閱讀理解能夠讓機(jī)器理解文章進(jìn)而回答相關(guān)問題,對自然語言理解和人工智能具有重要意義。
中文片段抽取式閱讀理解中[5],問題多樣化,如誰/何時/何地/為什么/如何等,問題中常常不直接使用文章中的描述,使用釋義和語法轉(zhuǎn)換,很多疑問句往往有著復(fù)雜的語言現(xiàn)象,如共指、省略和多疑問詞等。答案屬于某一類型的命名實(shí)體或特定類型(如姓名、日期和顏色等),則它可能不是上下文中的唯一答案,現(xiàn)在的深度學(xué)習(xí)模型無法根據(jù)其類型輕松地獲得與問題匹配的答案。評測中多數(shù)模型都是關(guān)于注意力模型[1],通常利用循環(huán)網(wǎng)絡(luò)將篇章編碼成固定長度的中間語義向量,利用該向量指導(dǎo)每一步長輸出,該模型結(jié)構(gòu)簡單,獲得正確答案的效率和準(zhǔn)確率低。尤其是在閱讀長文本時,比如長問題或者長答案,通過詞向量之間的相似度評分來獲得關(guān)注度大小,對于一些無關(guān)緊要詞過度關(guān)注,核心關(guān)鍵詞得分容易被這些無關(guān)詞稀釋,這些無關(guān)詞的噪聲干擾加上詞之間長距離的關(guān)聯(lián)跨度,使模型模糊了關(guān)注度[2],造成誤差的傳播和結(jié)果的偏離。依存句法分析可以反映出句子各成分之間的修飾關(guān)系,經(jīng)過依存句法分析的中心詞,獲得長距離的詞之間關(guān)聯(lián)信息,并與句子成分的物理位置無關(guān),依存句法分析在文本理解、語義消歧和主干抽取中具有很大的作用,長文本分析就離不開描述對象關(guān)系信息提取,更是下一步語義分析的前提。
人類在做閱讀理解時首先會進(jìn)行略讀,略讀就是通過問題關(guān)鍵詞查找篇章中答案最可能出現(xiàn)的位置,聚焦之后進(jìn)行有選擇地精讀相關(guān)的片段。機(jī)器閱讀理解模型主要思路亦是找到問題與篇章中答案的關(guān)聯(lián)性,突出其中重要特征,忽略部分無關(guān)信息。問題與篇章最重要的關(guān)聯(lián)性特征就是問題中的關(guān)鍵詞,預(yù)測答案跨度類型應(yīng)與問題給出的答案類型相對應(yīng),正確答案應(yīng)該處于問題關(guān)鍵詞出現(xiàn)范圍之中。因此本文提出了一種基于依存句法分析和關(guān)鍵詞共現(xiàn)特征的閱讀理解模型。
提取問題關(guān)鍵詞,將其與篇章做共現(xiàn)特征進(jìn)行指導(dǎo)閱讀,其次進(jìn)行依存句法分析,獲得篇章和問題每個句子中詞的依存句法關(guān)系信息,句子每個詞用中心詞向量化表示。篇章和問題使用預(yù)訓(xùn)練模型輸入,依存信息與預(yù)訓(xùn)練模型輸出加權(quán),使用Self-attention建立文本之間全局依賴關(guān)系對文章和問題作深度理解,挖掘不同的語義信息,提高閱讀理解效果。
隨著多個閱讀理解數(shù)據(jù)集的發(fā)布[3-11],大大推動了端到端神經(jīng)閱讀理解模型的發(fā)展,機(jī)器閱讀理解根據(jù)任務(wù)的劃分,可分為完形填空式、選擇填空式、片段抽取式和自由類型式。其中,片段抽取式閱讀理解任務(wù)作為機(jī)器閱讀理解任務(wù)的一種重要形式,要求從給定的文章中找到一段連續(xù)的片段作為問題的答案。機(jī)器閱讀理解最初由Winograd[12]提出構(gòu)想,并設(shè)計了首個自動閱讀理解測試系統(tǒng)Deep Read[13],該系統(tǒng)以故事為基礎(chǔ)衡量閱讀理解任務(wù),利用人工編寫的規(guī)則進(jìn)行模式匹配。例如,Wang等[14]提出Match-LSTM模型通過使用多種注意力機(jī)制將問題信息融入到上下文表示,在輸出層使用指針網(wǎng)絡(luò)(Pointer Network[15])預(yù)測答案的開始和結(jié)束位置。文獻(xiàn)[16]提出BiDAF(Bi-Directional Attention Flow)模型,核心層是雙向注意力流層,模型驗(yàn)證了雙向LSTM在篇章和問題的上下文信息特征的提取有一定的效果,但是與最好的模型還有很大差距,雙向LSTM也僅僅是對篇章和問題向量的簡單運(yùn)算,淺層比較,在訓(xùn)練和推理方面效率較低。隨著神經(jīng)網(wǎng)絡(luò)的不斷發(fā)展,注意力已成為神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的重要組成部分,被用于提高閱讀理解模型的可解釋性,有助于克服遞歸神經(jīng)網(wǎng)絡(luò)中的一些挑戰(zhàn)。R-NET模型[17]是基于MatchLSTM和門控制方式對注意力模型做了改進(jìn),輸出答案過程中借鑒了指針網(wǎng)絡(luò)(Pointer-Network)的思想。QaNet模型[18]使用CNN提取局部文本特征,通過self-attention建立文本之間全局依賴關(guān)系,使閱讀理解生成的答案更加符合正確答案。在保持準(zhǔn)確率的情況下,模型訓(xùn)練效率的大幅提升,QaNet模型是預(yù)訓(xùn)練模型發(fā)布之前排名前列的一個閱讀理解模型,也驗(yàn)證了編碼器Transformer的并行能力以及信息提取能力。
深層語境語言模型(Deep Contextual Language Model)是學(xué)習(xí)通用語言表征的有效工具,并在一系列主流自然語言理解任務(wù)中取得優(yōu)秀成果。例如Elmo、GPT[19]、雙向編碼器表示的BERT[20]和XLNet[21]等。這些語言模型提供細(xì)粒度的上下文嵌入,可以很容易應(yīng)用于下游模型。預(yù)訓(xùn)練語言模型在各種自然語言處理任務(wù)上取得了一系列成功,發(fā)揮了編碼器的作用,但是將大量的一般知識從外部語料庫傳授到一個深層的語言模型中是非常耗時和耗費(fèi)資源。預(yù)訓(xùn)練模型提高相似數(shù)據(jù)任務(wù)的效果,降低由于缺少數(shù)據(jù)而訓(xùn)練不充分的問題影響,且本文模型的評測語料也存在數(shù)量不足問題。
依存句法分析(Dependency Parsing,DP)通過分析語言單位內(nèi)成分依存關(guān)系揭示其句法結(jié)構(gòu)[22]。與神經(jīng)網(wǎng)絡(luò)結(jié)合使得依存句法分析獲得進(jìn)一步發(fā)展[23],在神經(jīng)機(jī)器翻譯中依存句法分析與編碼器Transformer進(jìn)行結(jié)合[24-25],引入依存句法信息指導(dǎo)的上下文詞向量,提高了模型的精度。
本節(jié)將介紹抽取式閱讀理解模型DP-reader,模型是基于預(yù)訓(xùn)練模型BERT,預(yù)訓(xùn)練模型能夠很大程度地提升自然語言處理任務(wù)的效果,預(yù)訓(xùn)練模型能夠直接應(yīng)用當(dāng)前的任務(wù)中,彌補(bǔ)訓(xùn)練語料不足的缺陷,又能加快模型的收斂速度。將預(yù)訓(xùn)練模型與依存句法分析信息(Dependency parsing)和關(guān)鍵詞特征(Key word co-occurrence)結(jié)合在一起,模型主要包括輸入層、編碼層和匹配層。其中輸入層將問題和篇章向量化并提取特征,編碼層將文本信息和特征融合,匹配層查找問題在篇章中對應(yīng)的答案,將答案區(qū)間輸出。模型結(jié)構(gòu)圖如圖1所示。
圖1 模型結(jié)構(gòu)
2.1.1 關(guān)鍵詞共現(xiàn)特征
深度學(xué)習(xí)模型做閱讀理解本質(zhì)就是找到問題與答案的關(guān)聯(lián)性,問題與答案的關(guān)聯(lián)特征就是關(guān)鍵詞,在篇章中答案的位置附近就有問題的關(guān)鍵詞出現(xiàn)。例如問題“1990年,范廷頌擔(dān)任什么職務(wù)”,整個問題關(guān)鍵詞排序?yàn)閇‘1990’,‘范廷頌’,‘職務(wù)’,‘擔(dān)任’,‘什么’,‘年’],關(guān)鍵詞排序第一個是最關(guān)鍵的詞,其中‘1990’為最關(guān)鍵的詞,越往后關(guān)鍵性越弱,設(shè)置閾值為3,即取前3個關(guān)鍵詞。篇章中的標(biāo)準(zhǔn)答案為“1990年被擢升為天主教河內(nèi)總教區(qū)宗座署理”,關(guān)鍵詞‘1990’出現(xiàn)在答案中。有些問題的關(guān)鍵詞雖然不在答案中,但是卻在答案的附近,例如問題“鑼鼓經(jīng)常用的節(jié)奏型稱為什么”,前三個關(guān)鍵詞[‘鑼鼓’,‘節(jié)奏’,‘經(jīng)?!痌,答案為“鑼鼓點(diǎn)”,在篇章中“常用的節(jié)奏型稱為「鑼鼓點(diǎn)」”,經(jīng)過統(tǒng)計發(fā)現(xiàn)答案的前部會經(jīng)常出現(xiàn)關(guān)鍵詞,答案的后部出現(xiàn)關(guān)鍵詞的頻率較低,關(guān)鍵詞出現(xiàn)密集的位置就是答案的位置。若閾值設(shè)置太低,會由于誤差,關(guān)鍵詞出現(xiàn)偏離;若閾值設(shè)置太高,就失去提取關(guān)鍵詞的意義,經(jīng)過測試閾值設(shè)置為3~4時,閱讀理解模型效果較好。當(dāng)關(guān)鍵詞在篇章中和問題中同時出現(xiàn),則共現(xiàn)次數(shù)為1,共現(xiàn)特征K的計算方式如式(1)所示。
(1)
2.1.2 預(yù)訓(xùn)練模型
將篇章和問題拼接成一個長度為m+n+3的序列,m+n+3
圖2 預(yù)訓(xùn)練模型輸入
將關(guān)鍵詞特征與BERT模型結(jié)合,序列的輸入如式(2)所示。
(2)
2.1.3 依存句法分析
依存句法分析[26]中一個句子里只有一個成分是獨(dú)立的,句子的其他成分都從屬于某一成分,任何一個成分都不能依存于兩個或兩個以上的成分,中心成分左右兩邊的其他成分相互不發(fā)生關(guān)系。將依存信息融入模型,依存句法分析如圖3所示。
圖3 依存句法分析
從依存分析結(jié)果可以看到,依存句法分析先識別句子中的成分如主謂賓定狀補(bǔ),分析各成分之間的關(guān)系,句子的核心謂詞是‘披’,主語是‘鄒游’,賓語是‘球衣’,‘效力新野球隊(duì)期間’是‘披’的時間狀語,‘幾號’修飾‘球衣’。句子s=w1,w2,…,wn由n個詞組成,通過依存句法分析器生成一個依存句法關(guān)系集合T(R,wi,wj),例如(nsubj,4,1),其中wi表示中心詞,wj表示依存詞,R代表這兩個詞之間的關(guān)系,方向是由中心詞指向依存詞,中心詞可以指向多個依存詞。經(jīng)過依存句法分析,使用中心詞wi表示每個詞wj,中心詞的數(shù)量相對于句子詞的數(shù)量少很多,且中心詞可以表示句子的主干內(nèi)容,增強(qiáng)主干內(nèi)容來降低無關(guān)詞的影響。圖4為CNN提取依存句法信息結(jié)構(gòu)圖。
圖4 CNN提取特征
(3)
編碼層Self-attention[27]作用是計算問題與篇章的上下文感知。閱讀理解任務(wù)中,篇章往往較長,與答案相關(guān)內(nèi)容只是其中的一小部分,本文使用自注意力模型進(jìn)行篇章語義和問題語義的融合。遍歷篇章文本,獲得需要重點(diǎn)關(guān)注的區(qū)域,即注意力焦點(diǎn),而后對這一區(qū)域投入更多注意力資源,以獲取更多所需要關(guān)注目標(biāo)的細(xì)節(jié)信息。
進(jìn)入正則化層歸一化,編碼層有兩個子層:第一個子層是多頭自注意力,第二個子層是全連接前饋網(wǎng)絡(luò),兩個子層之間使用殘差網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行連接,然后接一個正則化層。多頭注意力通過多次線性變換進(jìn)行投影,最后將不同的attention拼接在一起。編碼層模型如圖5所示。
圖5 編碼層
公式如式(4)-式(7)所示:
MhA(Q,K,V)=Concat(head1,head2,…,headh)Wo
(4)
headi=Attention(Q,K,V)
(5)
(6)
(7)
MhA(multi-head attention)自注意力中取Q、K、V相同,每個Q元素與每個K元素相乘,在此基礎(chǔ)上乘以一個依存句法矩陣M,相當(dāng)于是一種雙向的傳播。注意力打分函數(shù)表示為S,S可以是簡單的計算,也可以是復(fù)雜的神經(jīng)網(wǎng)絡(luò),常見的主要有點(diǎn)積運(yùn)算、雙線性模型、縮放點(diǎn)積模型和加性模型。本模型使用的是縮放點(diǎn)積模型,如式(8)所示。
(8)
殘差連接是使網(wǎng)絡(luò)在訓(xùn)練后不會變差,如式(9)所示。因?yàn)樵黾恿艘豁?xiàng)X,那么該層網(wǎng)絡(luò)對X求偏導(dǎo)的時候,多了一個常數(shù)項(xiàng)1,在反向傳播過程中,梯度連乘不會造成梯度消失。
g(X)=X+F(X)
(9)
歸一化(LayerNorm)把隱藏層數(shù)據(jù)轉(zhuǎn)化成均值為0方差為1的標(biāo)準(zhǔn)正態(tài)分布,在把數(shù)據(jù)送入激活函數(shù)之前進(jìn)行歸一化,使輸入數(shù)據(jù)不會落在激活函數(shù)的飽和區(qū),起到加快訓(xùn)練速度,加速收斂的作用。如式(10)-式(12)所示。
(10)
(11)
(12)
式中:ε是防止分母為0,引入兩個可訓(xùn)練參數(shù)α、β來彌補(bǔ)歸一化的過程中損失掉的信息,一般初始化α為全1,而β為全0。全連接前饋網(wǎng)絡(luò)由兩個線性轉(zhuǎn)換組成,中間是一個ReLU函數(shù)連接,如式(13)所示。
FFN(X)=max(0,W1x+b1)W2+b2
(13)
(14)
匹配層借鑒了pointer-network的思想,將篇章與問題做上下文分析,計算一個答案概率p∈[0,1],該概率決定開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)。如圖6所示。
圖6 匹配層
(15)
(16)
(17)
(18)
(19)
得到了兩個值p1和p2,判斷兩者的大小,因?yàn)殚_始位置永遠(yuǎn)在終止位置之前,最終獲得開始位置p1和結(jié)束位置p2。
損失函數(shù)如式(20)所示。
(20)
中文評測任務(wù)CMRC2018,篇章內(nèi)容來自中文維基百科,整個語料是由人工標(biāo)注。數(shù)據(jù)規(guī)模如表1所示,其中測試集沒有發(fā)布,模型性能在開發(fā)集上做測試。
表1 CMRC2018數(shù)據(jù)集規(guī)模
任務(wù)是根據(jù)所給的文章獲得相關(guān)問題的答案,即預(yù)測的答案在文章中的開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)。數(shù)據(jù)示例如表2所示。
表2 數(shù)據(jù)示例
任務(wù)的基本評價指標(biāo)有兩個:(1) EM(exact match),計算預(yù)結(jié)果與標(biāo)準(zhǔn)答案是否完全匹配。(2) F1得分,以模糊匹配的方式,通過計算預(yù)測答案與標(biāo)準(zhǔn)答案之間字級別匹配程度。計算F1得分時首先計算精確值(precision)和召回率(Recall),精確值表示預(yù)測答案詞正確的比例,召回率表示被正確抽取的詞比例。
本文的模型構(gòu)建采用PyTorch 1.14、Python 3.4,整體調(diào)優(yōu)在驗(yàn)證集上進(jìn)行,參數(shù)值設(shè)置如表3所示。模型采用Adam優(yōu)化模型參數(shù)。實(shí)驗(yàn)運(yùn)行的硬件條件為Tesla T4顯卡、顯存16 GB。5個參數(shù)進(jìn)行大量的實(shí)驗(yàn),把實(shí)驗(yàn)效果最好的參數(shù)值作為模型的參數(shù)。實(shí)驗(yàn)表明,這5個參數(shù)均存在局部最優(yōu)值。
表3 模型參數(shù)設(shè)置
基于預(yù)訓(xùn)練模型和未經(jīng)過預(yù)訓(xùn)練模型比較如表4所示,BiDAF和QANet模型未使用預(yù)訓(xùn)練模型,Bert和Bert+使用了預(yù)訓(xùn)練模型,使用預(yù)訓(xùn)練模型普遍效果高于未使用預(yù)訓(xùn)練模型,模型集成對效果也有一定的提升。本文設(shè)置了8組對比實(shí)驗(yàn)來驗(yàn)證本文方法的有效性,如表4所示。
表4 實(shí)驗(yàn)結(jié)果對比
對比基線模型是BERT模型,BERT基礎(chǔ)模型主要有12層Transformer的encoder單元,隱藏層的維度是768維,采用微調(diào)方式在預(yù)訓(xùn)練模型上訓(xùn)練2輪。模型性能測試在開發(fā)集上進(jìn)行,有3 219條測試數(shù)據(jù),將測試數(shù)據(jù)分7組,第一組的答案長度是一個詞,以此類推,整個數(shù)據(jù)集的答案長度集中在短文本處。BERT與DP-reader隨著答案長度的變化F1值的情況如圖7所示,答案長度越長,模型的效果會降低,對于答案的邊界查找難度加大,DP-reader相對于BERT對于不同長度答案閱讀效果均有提升。
圖7 兩個不同答案長度F1值對比
對比于Bidaf和QAnet模型,這是機(jī)器閱讀理解經(jīng)典模型,對比目的在于說明本模型在整體效果,由表4可以看出,DP-reader在EM和F1相比前兩者有大幅度的提升,具有更好的閱讀理解能力。
分析原因可得,依存句法分析獲得每個詞對應(yīng)的中心詞,使用依存句法分析的中心詞來刻畫句子,中心詞數(shù)目相對于句子詞匯來說數(shù)量要小很多,且總結(jié)出句子主干內(nèi)容,大部分的句子都可以使用這個框架來表示。引入依存句法信息指導(dǎo)上下文詞向量減少了無關(guān)詞的噪聲影響,提高了回答長問題或者長答案的效果,提升1.12百分點(diǎn)。
對篇章進(jìn)行關(guān)鍵詞檢索,模仿人在閱讀時進(jìn)行簡單搜索,通過關(guān)鍵詞找到答案最可能位置,模型將其權(quán)重加大,關(guān)鍵詞對模型的提升了2.06百分點(diǎn)。關(guān)鍵詞閾值的設(shè)置對模型有影響,超參數(shù)保持不變,實(shí)驗(yàn)結(jié)果如表5所示。
表5 關(guān)鍵詞閾值對結(jié)果影響
文本的類型比較廣泛,包括化學(xué)、歷史、宗教、生物、建筑、商業(yè)、法律和地理等,在訓(xùn)練的語料中相關(guān)文本類型訓(xùn)練數(shù)據(jù)較少,無法做到充足的訓(xùn)練。使用DRCD數(shù)據(jù)集轉(zhuǎn)換,將繁體文本轉(zhuǎn)換成簡體文本,進(jìn)行數(shù)據(jù)擴(kuò)增。
錯誤案例分析:
(1) 答案需要進(jìn)行多步推理獲得,如“凡式下銀漢魚在中國主要分布什么地區(qū)?”正確答案為“中國沿海”,預(yù)測答案為“印度西太平洋區(qū)”,部分篇章為“本魚分布印度西太平洋區(qū),包括東非、紅海、阿拉伯海、波斯灣、日本南部、中國沿海、越南、菲律賓、印尼、澳洲、馬來西亞、孟加拉灣、印度沿岸、新喀里多尼亞和所羅門群島等海域。”模型需要知道什么地方屬于中國地區(qū),這需要參考外部知識庫知識。
(2) 問題語義復(fù)雜,出現(xiàn)多個問題詞,模型無法分辨出問題重點(diǎn)是哪個問題詞,如“威爾特郡作為非都市郡,實(shí)際管轄了哪幾個非都市區(qū)?”問題中有“哪”“幾個”問題詞,正確答案為“索里茲伯里(Salisbury)、威爾特郡西(West Wiltshire)、肯尼特(Kennet)、威爾特郡北(North Wiltshire)”,預(yù)測答案為“4個”,模型回答“幾個”問題,但是中文理解應(yīng)該是“哪”,這與中文的語言特點(diǎn)有關(guān)系,中文表達(dá)方式相對英文或者其他語種更加豐富且復(fù)雜。
針對CMRC2018評測任務(wù),本文提出一種基于依存句法分析和關(guān)鍵詞共現(xiàn)的閱讀理解模型,該模型是一種簡單且有效的網(wǎng)絡(luò)模型,在自注意力中模型可以學(xué)習(xí)到關(guān)于篇章和問題的不同特征信息,利用句子的句法依存樹所提供的中心詞與依存詞之間的關(guān)系,減少長文本中的噪聲影響,用關(guān)鍵詞共現(xiàn)方式對答案進(jìn)行糾正,這樣可以更準(zhǔn)確找到答案的位置。
本文中對于知識的融入工作還不夠,在性能上尚未達(dá)到最優(yōu),還有提升的空間?,F(xiàn)在主流的研究方向是將預(yù)訓(xùn)練模型結(jié)合知識庫來指導(dǎo)機(jī)器閱讀理解,使模型的泛化能力加強(qiáng),即使是未訓(xùn)練的語料也能夠使用模型經(jīng)過知識庫的輔助理解后達(dá)到較好的結(jié)果。這是我們下一步的研究目標(biāo)。