彭 宇,李曉瑜,胡世杰,劉曉磊,錢偉中
(電子科技大學(xué)信息與軟件工程學(xué)院,成都 610054)
機器閱讀理解(Machine Reading Comprehension,MRC)是一項評估機器理解自然語言能力的任務(wù),它要求機器能根據(jù)給定的上下文和問題找到對應(yīng)的答案。教會機器理解人類的語言也是自然語言處理(Natural Language Processing,NLP)領(lǐng)域的終極目標(biāo)[1-3]。在早期的機器閱讀理解數(shù)據(jù)集[4]中,問題都是可以被回答的,也就是一定能在上下文中找到對應(yīng)的答案,因此早期的問答模型[5-8]是在問題都可被回答的前提假設(shè)下進(jìn)行構(gòu)建的。然而現(xiàn)實世界中常常存在不可被回答的問題,因此早期的數(shù)據(jù)集不符合現(xiàn)實情況。為了彌補這種不足,許多研究機構(gòu)和學(xué)者新提出了包含不可被回答問題的數(shù)據(jù)集[9-10]來模擬現(xiàn)實世界中的真實場景,但這也給傳統(tǒng)的問答模型提出了新的挑戰(zhàn)。當(dāng)面對這樣的新數(shù)據(jù)集時,傳統(tǒng)模型的問答表現(xiàn)非常差。
在預(yù)訓(xùn)練語言模型出現(xiàn)之前,基于深度學(xué)習(xí)的問答模型通常被拆分為如圖1(a)所示的5 個網(wǎng)絡(luò)層:嵌入層、編碼層、交互層、模型層和輸出層。傳統(tǒng)模型的改進(jìn)與發(fā)展依賴于每一層的設(shè)計與實現(xiàn)。作為一個經(jīng)典的傳統(tǒng)問答模型,BiDAF(BiDirectional Attention Flow)[6]設(shè)計了6 個網(wǎng)絡(luò)層來解決問答任務(wù),并使用雙向注意力流結(jié)構(gòu)來捕獲給定上下文和問題之間的交互信息。QANet(Question Answering Network)[11]融合局部卷積和全局自注意力機制來加速訓(xùn)練和推斷。Wang等[12]也提出了一個端到端并融合Match-LSTM(Long Short-Term Memory)和Answer Pointer 結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)來完成問答任務(wù)。盡管這些模型已經(jīng)非常巧妙,但它們在包含不可被回答問題的數(shù)據(jù)集上的表現(xiàn)提升也十分有限。這是因為傳統(tǒng)的詞嵌入方法難以解決一詞多義的問題[13-14],即便有像ELMo(Embeddings from Language Model)[15]這樣的動態(tài)詞嵌入方法被提出,所帶來的提升也不明顯。
圖1 傳統(tǒng)問答模型與基于BERT的已有模型的對比Fig.1 Comparison between traditional and existing BERT-based question answering models
預(yù)訓(xùn)練語言模型[16-17]如BERT(Bidirectional Encoder Representation from Transformers)[16]的出現(xiàn)極大地 提升了機器閱讀理解模型的性能,在某些數(shù)據(jù)集上甚至超越了人類的表現(xiàn)。這是因為預(yù)訓(xùn)練語言模型可以生成“上下文-問題”對基于語義特征和上下文關(guān)系的詞向量表達(dá)。通過在大量的文本語料上進(jìn)行預(yù)訓(xùn)練,預(yù)訓(xùn)練語言模型可以捕獲單詞、序列之間更深層次的交互關(guān)系。研究人員只需要針對特定任務(wù)在預(yù)訓(xùn)練模型之后設(shè)計恰當(dāng)?shù)慕Y(jié)構(gòu)搭建模型進(jìn)行微調(diào)(fine-tune)就能獲得相當(dāng)不錯的表現(xiàn)。如圖1(b)所示,大多數(shù)使用BERT 的問答模型將BERT 看作傳統(tǒng)問答模型五個層次中的嵌入層、編碼層和交互層。
盡管只利用經(jīng)BERT 完全編碼后的高層特征來設(shè)計模型已經(jīng)取得了不錯的性能,但是BERT 中的低層特征卻沒有得到充分利用[18-19]。高層特征擁有更多的語義和上下文關(guān)聯(lián)信息,而低層特征則包含更少這樣的信息。通過使用低層特征,并聯(lián)合高層特征,可以改進(jìn)已有方法對淺層信息利用不足的現(xiàn)狀,并進(jìn)一步提高問答模型的性能?;诖?,本文提出了一種基于BERT 的三階段式問答模型,通過設(shè)計三個階段來模擬人類漸進(jìn)式閱讀文本的方式:1)階段一使用低層特征來做預(yù)回答,預(yù)生成一個答案;2)階段二使用高層特征來做再回答,再生成一個答案;3)階段三將回顧前兩個階段生成的答案并進(jìn)行調(diào)整,給出最終預(yù)測結(jié)果。該模型通過融合不同層次特征對給定上下文及問題進(jìn)行兩次回答和一次調(diào)整,提高了模型預(yù)測答案的準(zhǔn)確性。實驗結(jié)果也表明,本模型相較于基準(zhǔn)模型在精準(zhǔn)匹配度(Exact Match,EM)和F1(F1 score)兩個指標(biāo)上均有了不錯的提升。
本文的主要工作如下:
1)為了解決已有模型未充分利用BERT 中淺層特征的問題,提出了一種融合BERT 中高、低兩種層次編碼特征的方法,能夠有效地提高BERT 各層信息的利用率,且改進(jìn)后的模型復(fù)雜度較低。
2)針對抽取式的問答任務(wù),模擬現(xiàn)實世界中人類由淺入深閱讀文本的方式,提出了三階式問答的概念,經(jīng)過三個階段調(diào)整后的答案比直接生成的答案準(zhǔn)確率更高。
3)設(shè)計相關(guān)實驗在公開數(shù)據(jù)集上對本文所提出模型的性能進(jìn)行驗證,并和其他基準(zhǔn)模型進(jìn)行了對比。
如圖2 所示,本文所提出的問答模型包含三個階段:預(yù)回答、再回答以及答案調(diào)整。利用從預(yù)訓(xùn)練語言模型BERT中獲取到的淺層特征表達(dá)和深層特征表達(dá),在不同階段完成相應(yīng)的操作。此外,對于包含不可被回答問題的數(shù)據(jù)集,還需要對“上下文-問題”對的可回答性(即給定一對上下文和問題,是否存在答案)進(jìn)行計算,以應(yīng)對不可回答問題對答案的預(yù)測帶來的干擾。本文模型將針對可回答性的計算操作放在第二個階段中。
圖2 本文三階段式問答模型整體框架Fig.2 Overall framework of proposed three-stage question answering model
本文只關(guān)注抽取式的問答任務(wù),在抽取式問答任務(wù)中,問題的答案是給定上下文中的一個片段,可能是一個詞、一個詞組,也可能是一個句子。因此抽取式問答模型的任務(wù)實際上就是預(yù)測出答案在原始上下文中的開始位置和結(jié)束位置。
1.2.1 低層特征表達(dá)
神經(jīng)網(wǎng)絡(luò)模型不能直接處理文本序列,因此需要將文本表示為向量形式才能被模型所處理,這一過程稱為詞嵌入(Embedding)。在進(jìn)行詞嵌入前,還需要將文本序列進(jìn)行分詞,即將一段文本表示為字或詞的有序列表集合。使用Q={q1,q2,…,qm}來表示給定問題分詞后的長度為m的單詞序列,P={p1,p2,…,pn}表示給定上下文分詞后的長度為n的單詞序列。對于基于BERT 的問答模型而言,需要將問題及上下文按照先后順序拼接在一起,定義T={[CLS],q1,q2,…,qm,[SEP],p1,p2,…,pn,[SEP]}表示拼接后長度為L的輸入序列,并且L=m+n+3。在BERT 中,[CLS]是添加在每個輸入的序列樣本前的特殊標(biāo)記,用于指示序列的開始;[SEP]是特殊的分隔標(biāo)記,T中第一個[SEP]用于分隔問題和上下文,第二個[SEP]用于指示樣本的結(jié)束位置。嵌入層的作用是將輸入文本轉(zhuǎn)化為向量的形式以便被模型所處理,如圖3 所示,BERT 中嵌入層最終輸出的嵌入向量由三種嵌入向量相加而得:詞嵌入(token embedding)、句子詞嵌入(segment embedding)和位置詞嵌入(position embedding)。定義E={e1,e2,…,eL}表示BERT 中嵌入層最終的輸出特征,L表示E的長度,ei∈表示序列T中對應(yīng)位置的單詞由文本轉(zhuǎn)換嵌入至特征空間的向量形式。隨后嵌入層的輸出E將被輸入至BERT 中的Transformer 結(jié)構(gòu)進(jìn)行深層次的編碼,以獲得具有更多語義及上下文關(guān)聯(lián)信息的特征表達(dá)。
圖3 BERT的輸入表示Fig.3 BERT input representation
文獻(xiàn)[20]中通過提出一種配對探針(Pairwise Probe)的機制來探索BERT 微調(diào)對機器閱讀理解任務(wù)的影響,發(fā)現(xiàn)微調(diào)對基礎(chǔ)和低層次信息以及一般語義任務(wù)的影響很小,而對于下游任務(wù)所需的特定能力,微調(diào)BERT 優(yōu)于預(yù)先訓(xùn)練好的BERT。即BERT 中越底層結(jié)構(gòu)學(xué)習(xí)到的特征表達(dá)所蘊含語義特征和文本信息的通用性就越強,與下游任務(wù)的相關(guān)性就越疏遠(yuǎn);而越高層結(jié)構(gòu)學(xué)習(xí)到的特征表達(dá)所蘊含語義特征和文本信息的通用性就越弱,與下游任務(wù)的相關(guān)性就越密切。嵌入層是BERT 中能夠?qū)W習(xí)到文本特征表示的最底層,所以該層的輸出蘊含通用性相對強的語義特征和文本信息,與下游機器閱讀理解任務(wù)的關(guān)聯(lián)性足夠弱,因此可將嵌入層的輸出E視作文本序列在BERT 中淺層次的特征表達(dá)。第一個階段中的預(yù)回答過程將對E進(jìn)行處理,以生成這個階段預(yù)測的答案在上下文中的開始位置和結(jié)束位置。當(dāng)然也可以使用其他表示學(xué)習(xí)模型的輸出來代替BERT 中的淺層特征,但這樣會引入外部的網(wǎng)絡(luò)結(jié)構(gòu),增加模型整體的復(fù)雜度,并增加模型預(yù)測和推斷時間。此外,本文主要是對BERT 在機器閱讀理解任務(wù)上的表現(xiàn)進(jìn)行改進(jìn),挖掘BERT 中淺層特征的價值,因此引入外部表示學(xué)習(xí)模型來獲取淺層特征可以放在接下來的研究工作中。
1.2.2 答案預(yù)生成
文獻(xiàn)[21]中通過進(jìn)行詳盡的實驗,研究了BERT 在文本分類任務(wù)上的不同微調(diào)方法,發(fā)現(xiàn)利用BERT 中不同層次特征表示來做文本分類任務(wù),層次越低,分類效果越差,并且隨著層次的降低,分類錯誤率從5.42%上升至11.07%。此外文獻(xiàn)[21]還對BERT 中各層特征的組合方式進(jìn)行了探索和實驗,主要是直接對各層特征進(jìn)行拼接、求均值或求最大值這三個操作來獲取文本的最終特征表示,并完成下游的文本分類任務(wù),發(fā)現(xiàn)這些方式都不如直接使用最高層特征表示來做文本分類任務(wù)的效果好,甚至顯著降低了在分類任務(wù)上的表現(xiàn)。因此直接對各層特征進(jìn)行拼接、求均值或求最大值等方式處理各層特征不能提升BERT 在特定任務(wù)上的表現(xiàn),這是因為直接按照上述方式處理各層特征會破壞微調(diào)BERT時高層結(jié)構(gòu)針對特定下游任務(wù)已經(jīng)學(xué)習(xí)到的特征表達(dá),所以才會獲得適得其反的效果。本文將不采取文獻(xiàn)[21]中的方式對各層特征進(jìn)行處理,而是對BERT 中的淺層信息和高層信息分別生成針對特定下游任務(wù)的預(yù)測結(jié)果,然后對兩個預(yù)測結(jié)果進(jìn)行組合以獲取更好的預(yù)測結(jié)果。
抽取式問答任務(wù)的目標(biāo)是根據(jù)給定問題在原文中找出答案片段,即答案是從原文中抽取出來的,不作任何改變。具體到模型的實現(xiàn),一般是預(yù)測出答案在原文中的開始位置和結(jié)束位置。因此該階段將E直接輸入至一個沒有任何激活函數(shù)的全連接層Linear,獲得針對答案開始位置的輸出和結(jié)束位置的輸出:
其中:表示答案開始位置的概率,表示答案結(jié)束位置的概率,二者都由階段一產(chǎn)生。
1.3.1 高層特征表達(dá)
BERT 中對嵌入向量進(jìn)行深層次編碼的核心結(jié)構(gòu)是雙向的Transformer 層[22],Transformer 使用注意力機制捕獲文本之間的關(guān)聯(lián)。如圖4 所示,BERT 內(nèi)部就是數(shù)個這樣的Transformer 層的堆疊。BERT 之所以在眾多NLP 任務(wù)中表現(xiàn)優(yōu)異,不僅是因為它在大量無監(jiān)督文本上進(jìn)行了漫長的預(yù)訓(xùn)練過程,更重要的原因是Transformer 出色的編碼能力。本文把第l個Transformer 層的輸出定義為Xl,通過Xl=Transformer(Xl-1)計算得來,并且X0=E。
圖4 BERT深層次特征編碼過程Fig.4 Deep feature encoding process of BERT
對于每一層Transformer,通過多頭注意力機制進(jìn)行編碼,定義多頭注意力計算后的輸出為,并按式(3)計算:
對于基于BERT 的問答模型,通常是直接使用最后一個隱藏層的輸出狀態(tài)作為后續(xù)模型的輸入特征H,設(shè)BERT 中Transformer 層的個數(shù)為S,則H=HS=。
相較于嵌入層的輸出E,經(jīng)過深層次編碼后的輸出H蘊含更加豐富的語義信息以及上下文和問題之間的交互關(guān)系,可將H視作文本序列在BERT 中深層次的特征表達(dá),事實上大多數(shù)已有的基于BERT 的NLP 模型都是在H的處理方式上進(jìn)行網(wǎng)絡(luò)模型的再設(shè)計。本文所提出模型的第二個階段中的再回答過程將會對H進(jìn)行處理,以生成這個階段預(yù)測的答案在上下文中的開始位置和結(jié)束位置。
1.3.2 答案再生成
不同于預(yù)回答階段,再回答階段將使用具有更豐富語義和上下文信息的特征表達(dá)H來進(jìn)行答案的預(yù)測。但與預(yù)回答階段相同的是,這個也只使用一個獨立的全連接層Linear來處理輸入的特征表達(dá),獲得針對答案開始位置的輸出logitss和結(jié)束位置的輸出logitse:
其中:logitss和logitse的計算使用到了經(jīng)過BERT 編碼后更深層次的特征表達(dá)H,這與人類閱讀文本的方式類似,第一次閱讀一段文本時僅能利用到文本中較淺的信息進(jìn)行閱讀理解,而再次閱讀文本時便能獲取到更深層次的信息。這個階段中答案開始位置的概率ps和結(jié)束位置的概率pe也由softmax 函數(shù)計算得到:
1.3.3 可回答性計算
現(xiàn)實世界中總是存在不可被回答的問題,問答模型需要巧妙地避免回答這些問題;并且近幾年新提出的問答數(shù)據(jù)集中均包含不可被回答的問題,這給問答模型的設(shè)計帶來了新的挑戰(zhàn)。因此在模型中需要計算每一個“上下文-問題”對的可回答性(即給定一對上下文和問題,是否存在答案)。對于BERT 組后一層隱藏層的輸出序列H而言,特殊標(biāo)記[CLS]位置上的隱藏層向量h[CLS]∈H可以視作拼接后的文本序列在整體上的特征表達(dá)向量,對于問答模型來說就是“上下文-問題”對整體的特征。因此可以利用h[CLS]來計算對應(yīng)“上下文-問題”對的可回答性。同樣使用另一個獨立的全連接層Linear 和softmax 函數(shù)來處理h[CLS],并使用交叉熵?fù)p失函數(shù)來計算針對可回答性的損失函數(shù):
其中:表示預(yù)測出的可回答性,yi表示真實的可回答性,N表示訓(xùn)練時的樣本數(shù)量。
在三階段式問答模型的最后一個階段,將利用前兩個階段預(yù)測出來的答案片段所在的位置進(jìn)行位置的調(diào)整,改進(jìn)預(yù)測答案的準(zhǔn)確性,以獲取最終的預(yù)測結(jié)果。使用logitsstart表示答案調(diào)整后的開始位置,logitsend表示答案調(diào)整后的結(jié)束位置。在本文方法中,logitsstart和logitsend按照式(11)~(12)進(jìn)行計算:
與前兩個階段相同,使用soft max 函數(shù)計算調(diào)整后的答案開始位置和結(jié)束位置在輸入序列中每個位置上的概率:
其中:pstart為答案開始位置的概率,pend為結(jié)束位置的概率。
最終調(diào)整后的答案預(yù)測的損失函數(shù)由交叉熵?fù)p失函數(shù)計算得來:
最終本文將針對“問題-答案”對的可回答性損失Lna加上調(diào)整后答案的損失Lans,作為整個模型的目標(biāo)損失函數(shù)。使用Loss表示模型整體的目標(biāo)損失函數(shù),且計算式如下:
模型的目標(biāo)就是在訓(xùn)練過程中最小化損失函數(shù)Loss的值,并在測試集上獲得最好的效果。
SQuAD(Stanford Question Answering Dataset)數(shù)據(jù)集[9]是抽取式問答任務(wù)的代表性數(shù)據(jù)集,數(shù)據(jù)來自于維基百科,目前SQuAD 數(shù)據(jù)集已經(jīng)成為機器閱讀理解任務(wù)中的基準(zhǔn)數(shù)據(jù)集。SQuAD 數(shù)據(jù)集是由斯坦福大學(xué)的研究人員提出,最初的1.1 版本[3]中只存在可回答的問題,不符合現(xiàn)實世界中的情形,因此斯坦福大學(xué)在其基礎(chǔ)之上增加了50 000 個不可回答問題,提出了SQuAD2.0(SQuAD 2.0)[9],進(jìn)一步提高了數(shù)據(jù)集難度。2018 年第二屆“訊飛杯”在其評測任務(wù)中發(fā)布了首個人工標(biāo)注的中文篇章片段抽取式閱讀理解數(shù)據(jù)集CMRC2018(Chinese Machine Reading Comprehension 2018)[2],填補了中文在這方面的空白,進(jìn)一步促進(jìn)了中文機器閱讀理解的研究。
本文模型在英文數(shù)據(jù)集SQuAD2.0 和中文數(shù)據(jù)集CMRC2018 上進(jìn)行評估,用以驗證模型的性能和有效性。
如表1 所示,SQuAD2.0 中訓(xùn)練集樣本數(shù)和測試集樣本數(shù)均明顯多于CMRC2018。本文使用CMRC2018 數(shù)據(jù)來評估模型,主要是驗證本文模型在中文上的有效性。以CMRC2018 為例,展示抽取式問答任務(wù)的一個樣本示例,如圖5 所示。
表1 實驗數(shù)據(jù)集統(tǒng)計信息Tab.1 Statistics of experimental datasets
圖5 來自CMRC2018的某個問答樣本Fig.5 A question answering example from CMRC2018 dataset
抽取式閱讀理解任務(wù)需要對模型預(yù)測的答案字符串和真實答案進(jìn)行比對,因此一般使用SQuAD 數(shù)據(jù)集的發(fā)布者Rajpurkar 等[4]提出的EM(Exact Match)和F1(F1 score)值對模型進(jìn)行評估。EM 是指數(shù)據(jù)集中模型預(yù)測的答案與標(biāo)準(zhǔn)答案相同的百分比,F(xiàn)1 是指數(shù)據(jù)集中模型預(yù)測的答案和標(biāo)準(zhǔn)答案之間的平均單詞的覆蓋率。
由于中文在結(jié)構(gòu)和形式上與英文不同,因此EM 值和F1值的計算也略有不同,采用CMRC2018 數(shù)據(jù)集的發(fā)布者Cui等[2]改進(jìn)后的EM 和F1 計算方式對模型在CRMC2018 數(shù)據(jù)集上的性能進(jìn)行評估。
本文的實驗環(huán)境為:操作系統(tǒng)為Ubuntu18.04,CPU 為Intel Core-i9(3.60 GHz),內(nèi)存為32GB,顯卡為NVIDIA GTX2080TI 11 GB。模型的搭建采用深度學(xué)習(xí)框架PyTorch實現(xiàn),并選擇Base 版本的BERT 作為基準(zhǔn)預(yù)訓(xùn)練模型進(jìn)行三階段問答模型的搭建和實現(xiàn)。首先針對中文和英文分別下載訓(xùn)練好的BERT-Base 模型參數(shù);然后設(shè)置恰當(dāng)?shù)牡螖?shù)(epochs)并使用訓(xùn)練對網(wǎng)絡(luò)模型進(jìn)行微調(diào)(fine-tune),按照顯存容量設(shè)置合適的批樣本容量(batch_size)和樣本最大序列長度(max_seq_length)。同時根據(jù)隨機失活率(dropout)、學(xué)習(xí)率(learning rate)與學(xué)習(xí)率的衰減值(warm-up rate)進(jìn)行微調(diào),直到訓(xùn)練的損失穩(wěn)定收斂。上述參數(shù)的具體設(shè)置如表2 所示。
表2 參數(shù)設(shè)置Tab.2 Parameter setting
SQuAD2.0 數(shù)據(jù)集和CMRC2018 數(shù)據(jù)中采用官方劃分的訓(xùn)練集對模型進(jìn)行訓(xùn)練,在訓(xùn)練結(jié)束后采用官方劃分的測試集對模型進(jìn)行評估,并計算出EM 值和F1 值。
對本文構(gòu)建的三階段問答模型、傳統(tǒng)問答模型,以及只使用BERT 高層特征信息的模型分別使用相同數(shù)據(jù)集進(jìn)行對比實驗。
表3 展示了不同模型在英文數(shù)據(jù)集SQuAD 上的性能表現(xiàn),包括V1.1(只包含可回答問題)和V2.0(包含不可回答問題)兩個版本的結(jié)果。作為經(jīng)典的傳統(tǒng)問答模型,BiDAF[6]、Match-LSTM[12]、SAN(Stochastic Answer Networks)[18]、QANet[11]在V1.1 上的表現(xiàn)優(yōu)異,但當(dāng)問題中存在不可回答問題時(V2.0),EM 值和F1 值只能達(dá)到60%~70%,這說明傳統(tǒng)模型無法應(yīng)對現(xiàn)實世界中不存在答案的問題。而基準(zhǔn)模型BERTbase只使用一個全連接層來處理高層特征編碼,其EM和F1 就能分別達(dá)到74.4%和77.1%,這說明了BERT 對文本強大的編碼能力,也是傳統(tǒng)模型難以提升的瓶頸所在。即傳統(tǒng)方法雖然在圖1(a)所示的5 個網(wǎng)絡(luò)層中都設(shè)計了非常巧妙的結(jié)構(gòu)來搭建問答模型,但由于其采用的詞向量技術(shù)具有非常大的局限性,如上下文信息不足、難以解決一詞多義等問題,因此傳統(tǒng)模型難以應(yīng)對存在不可回答問題的真實場景。而基于前文可知,經(jīng)過BERT 編碼后的特征表達(dá)具有更豐富語義和上下文信息,于是在BERTbase之上融合這些經(jīng)典的模型(+BiDAF、+SAN)來處理高層特征編碼,以解決傳統(tǒng)詞向量技術(shù)不足帶來的瓶頸,但相較于在BERT 后只使用一層全連接網(wǎng)絡(luò)(BERTbase),+BiDAF、+SAN 的提升并不明顯,且由此帶來的問題是訓(xùn)練速度和推斷速度的大幅下降,這也說明只利用BERT 深層編碼特征進(jìn)行答案預(yù)測已經(jīng)無法顯著提升問答模型的表現(xiàn)。而本文所提出的模型(+本文模型)在SQuAD2.0 上EM 值達(dá)到了76.8%,F(xiàn)1 值達(dá)到了78.7%,相較于BERTbase分別提升了2.4 和1.6 個百分點,同時在SQuAD1.1 上也能達(dá)到較高的水準(zhǔn)。此外本文模型并未在模型中添加復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),而僅使用一個額外的全連接層對BERT 嵌入層輸出進(jìn)行處理以生成“預(yù)回答”階段的答案,在獲得不錯效果提升的同時,訓(xùn)練速度和推斷速度也沒有明顯下降。
表3 SQuAD數(shù)據(jù)集上不同模型的結(jié)果對比 單位:%Tab.3 Result comparison of different models on SQuAD dataset unit:%
由于針對中文語料庫CMRC2018 的抽取式問答研究較少,本文只選擇了五個典型的傳統(tǒng)模型和BERT 基準(zhǔn)模型,與本文所提出的三階段式問答模型進(jìn)行了對比,對比結(jié)果如表4 所示。從表4 可以看出,基于BERT 三階段式問答模型的預(yù)測準(zhǔn)確性明顯高于五個典型的傳統(tǒng)問答模型,EM 達(dá)到了65.0%,F(xiàn)1 達(dá)到了85.1%,相較于基準(zhǔn)模型BERTbase分別提升了1.4 和1.2 個百分點,這說明三階段式的問答過程在中文上也同樣適用。
表4 CMRC2018數(shù)據(jù)集上不同模型的結(jié)果對比 單位:%Tab.4 Result comparison of different models on CMRC2018 dataset unit:%
圖6 以中文數(shù)據(jù)集CMRC2018 為例,對比展示了基準(zhǔn)模型BERTbase和三階段問答模型對某個“上下文-問題”對的答案片段的預(yù)測結(jié)果,可以看見本文模型與正確答案完全一致;而BERTbase的預(yù)測片段遺漏了“地區(qū)”這個詞,預(yù)測結(jié)果不夠完整。這說明在三階段模型中的“答案調(diào)整”階段,通過綜合利用前兩個階段預(yù)測出的答案片段對片段所在位置進(jìn)行調(diào)整,可以獲得更加準(zhǔn)確完善的答案片段,從而提高了模型的性能。
圖6 CMRC2018數(shù)據(jù)集上的答案片段預(yù)測對比Fig.6 Answer fragment prediction comparison on CMRC2018 dataset
基于上述結(jié)果分析可知,本文所提出的基于BERT 的三階段式問答模型在中英兩種語言的數(shù)據(jù)集上都取得了較好的結(jié)果,且模型訓(xùn)練速度和推斷速度沒有明顯降低,這說明融合BERT 嵌入層的淺層特征表達(dá)和完全編碼后的深層特征表達(dá)可以顯著提升問答模型的性能,實驗結(jié)果也驗證了本文模型的有效性,以及在多語言任務(wù)上的適用性。
本文提出了一種基于BERT 的三階段式問答模型,除使用經(jīng)BERT 完全編碼后的高層特征信息,還利用到了BERT嵌入層中淺層特征信息,然后通過預(yù)回答、再回答、答案調(diào)整三個階段對模型預(yù)測的答案片段進(jìn)行調(diào)整,生成更加準(zhǔn)確的答案片段,并對問題的可回答性進(jìn)行了評估以應(yīng)對現(xiàn)實世界中往往存在不可回答問題的現(xiàn)狀。通過這種方法,避免了BERT 中淺層信息的浪費,提高了問答模型預(yù)測答案片段的準(zhǔn)確性,一定程度上解決了基準(zhǔn)模型預(yù)測出的片段不完整的問題。此外,還在中英兩種語言的數(shù)據(jù)集上進(jìn)行了一系列實驗,驗證了本文模型在多語言上的適用性。
在未來的研究工作中,可以通過在“預(yù)回答”和“再回答”兩個階段加入其他結(jié)構(gòu)如循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力機制繼續(xù)處理BERT 中的低層特征和高層特征,進(jìn)一步提高三階段式問答模型在公開數(shù)據(jù)集上的表現(xiàn)。另外,還可以引入外部表示學(xué)習(xí)模型如循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)等結(jié)構(gòu)的輸出代替本文提出的BERT 淺層特征,用以改進(jìn)模型性能。最后,對于“答案調(diào)整”階段,可以加入其他輔助信息,如考慮將位置信息、外部知識等作為補充,使模型預(yù)測的結(jié)果片段更加精準(zhǔn)。