譚紅葉,行覃杰
(山西大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院,山西 太原 030006)
機(jī)器閱讀理解MRC(Machine Reading Comprehension)是自然語言處理NLP(Natural Language Processing)的一個(gè)重要任務(wù),目的是讓模型根據(jù)篇章,給出相關(guān)問題的答案。機(jī)器閱讀理解任務(wù)主要包括抽取式、生成式、完形填空和多項(xiàng)選擇等類型。
隨著大規(guī)模閱讀理解數(shù)據(jù)集的發(fā)布(如SQuAD[1]和DuReader[2])以及BERT[3]等預(yù)訓(xùn)練模型的發(fā)展,閱讀理解模型在一些評測任務(wù)上已經(jīng)超過了人類的表現(xiàn)。但是,這些模型的魯棒性還不太理想距,即在面對噪聲和干擾時(shí),模型的性能會顯著下降。目前,閱讀理解模型的魯棒性主要表現(xiàn)在過敏感性、過穩(wěn)定性和泛化能力3個(gè)方面[4]。本文只針對過敏感性和過穩(wěn)定性2方面進(jìn)行研究。
按照文獻(xiàn)[4],過敏感性指當(dāng)問題語義未發(fā)生變化時(shí),如復(fù)述問題,模型會預(yù)測不同的答案,表現(xiàn)出對復(fù)述問題和原問題微小差異的過度敏感。過穩(wěn)定性是指模型過度依賴字面匹配,無法區(qū)分答案所在句和干擾句,從而預(yù)測出錯(cuò)誤的答案。模型過敏感性和過穩(wěn)定性的例子分別如表1和表2所示,表中示例的答案為RoBERTa-w-wm-ext-large[5]模型預(yù)測的結(jié)果。過敏感性樣例中,僅在原問題中添加“多少”一詞,問題語義并未發(fā)生變化,但模型預(yù)測錯(cuò)誤;過穩(wěn)定性樣例中,干擾句(下劃線所示句子)并不包含問題的焦點(diǎn)(總部在哪),但是包含與問題相同的片段 “中國光大銀行成立”,導(dǎo)致模型抽取了錯(cuò)誤的答案。上述2個(gè)例子表明,模型無法對給定的篇章和問題進(jìn)行充分的理解。
Table 1 Over-sensitivity example表1 過敏感性樣例
Table 2 Over-stability example表2 過穩(wěn)定性樣例
為了解決上述問題,本文提出了一種面向魯棒性增強(qiáng)的多任務(wù)抽取式閱讀理解模型。該模型主要思想為:(1)將答案抽取任務(wù)作為主要任務(wù),同時(shí)引入證據(jù)句判斷和問題分類作為輔助任務(wù);(2)使用硬約束的多任務(wù)學(xué)習(xí)方法,在訓(xùn)練階段,通過共享不同任務(wù)之間的編碼器,使模型在抽取答案的同時(shí)加深對問題和篇章的理解。在專門的魯棒性數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,本文所提模型獲得了比基線模型更好的結(jié)果,可以有效地緩解模型的過敏感性和過穩(wěn)定性,提升模型的魯棒性。
閱讀理解數(shù)據(jù)集的發(fā)展極大推動了機(jī)器閱讀理解技術(shù)的進(jìn)步。例如,斯坦福大學(xué)通過眾包方式推出了大規(guī)模抽取式閱讀理解數(shù)據(jù)集SQuAD(StanfordQuestionAnsweringDataset)1.0,其答案是原文中的一個(gè)連續(xù)片段。隨著各種模型性能的不斷提高,研究人員開始推出不同的數(shù)據(jù)集以增強(qiáng)模型的能力。Rajpurkar等人[6]提出了SQuAD2.0,在SQuAD1.0的基礎(chǔ)上,在數(shù)據(jù)中添加了不可回答問題,需要模型具有判斷問題是否可以回答的能力。MSMARCO(MicroSoftMAchineReadingCOmprehension)[7]和DuReader是2個(gè)來自搜索領(lǐng)域的數(shù)據(jù)集,其中每條數(shù)據(jù)的篇章包含多個(gè)段落,需要模型從多個(gè)段落中抽取出答案,并具有閱讀長文本的能力。在CoQA(ConversationalQuestionAnswering)[8]數(shù)據(jù)集中,數(shù)據(jù)是通過模仿人類的對話構(gòu)建的,需要模型對人類的日常交流用語有深刻的理解。HotpotQA[9]數(shù)據(jù)集要求模型根據(jù)篇章中的多個(gè)部分經(jīng)過多跳推理得到最終答案。DROP(DiscreteReasoningOverParagraphs)[10]數(shù)據(jù)要求對文本篇章進(jìn)行數(shù)字推理后回答問題。常識問答數(shù)據(jù)集CommonsenseQA(CommonsenseQuestionAnswering)[11]需要模型利用常識或外部知識來回答問題。DuReader-robust數(shù)據(jù)集是在DuReader的基礎(chǔ)上構(gòu)建的抽取式閱讀理解數(shù)據(jù)集,其中問題均來自搜索引擎中的用戶搜索,包括金融、教育、醫(yī)療等多個(gè)領(lǐng)域,用于測試模型的魯棒性。李燁秋等人[12]為了測試模型魯棒性的各個(gè)具體方面,在DuReader-robust和DuReader的基礎(chǔ)上分別針對敏感性、過穩(wěn)定性和泛化能力構(gòu)建了3個(gè)測試集。
早期的機(jī)器閱讀理解模型都是基于特征的。Hirschman等人[13]通過詞袋模型,對篇章和問題進(jìn)行抽取,然后對篇章和問題進(jìn)行匹配得到答案。Riloff等人[14]通過人工設(shè)計(jì)的一組規(guī)則對篇章和問題進(jìn)行匹配打分,選取分?jǐn)?shù)最高的句子作為答案。但是,這些方法只能解決簡單問題,當(dāng)數(shù)據(jù)更加復(fù)雜,長度更長,篇章和問題的表達(dá)更加多樣時(shí),性能會顯著下降。
隨著深度學(xué)習(xí)的蓬勃發(fā)展以及大規(guī)模數(shù)據(jù)集的不斷推出,機(jī)器閱讀理解技術(shù)開始向深度學(xué)習(xí)發(fā)展。Hermann等人[15]通過在LSTM(LongShort-TermMemory)中加入注意力機(jī)制,提出了AttentiveReader模型。Seo等人[16]首次提出了雙向注意力流網(wǎng)絡(luò)BIDAF(BI-DirectionalAttentionFlow),采用多階段、層次化處理,可以捕獲原文不同粒度的特征,在SQuAD等數(shù)據(jù)集上獲得了最優(yōu)的性能。Wang等人[17]對機(jī)器閱讀理解任務(wù)進(jìn)行分層建模,構(gòu)建了R-net網(wǎng)絡(luò),在一些數(shù)據(jù)集上的性能超過了人類的。深度學(xué)習(xí)技術(shù)不需要人工進(jìn)行特征構(gòu)建,且可以通過注意力機(jī)制自動關(guān)注篇章和問題中的重要部分,在一些數(shù)據(jù)集上取得了很好的性能。
近年來,各種大規(guī)模預(yù)訓(xùn)練語言模型成功運(yùn)用到了機(jī)器閱讀理解任務(wù)。如:ERNIE1.0(EnhancedRepresentationthroughkNowledgeIntEgration)[18]在BERT(BidirectionalEncoderRepresentationfromTransformers)的基礎(chǔ)上將隨機(jī)掩碼策略替換為實(shí)體和短語級掩碼來學(xué)習(xí)額外知識;RoBERTa(RobustlyoptimizedBERTpretrainingapproach)[19]主要通過動態(tài)的掩碼策略,并且使用了更大規(guī)模的數(shù)據(jù),獲得了比BERT更好的性能;ALBERT(ALiteBERT)[20]將下一句預(yù)測任務(wù)替換為句子順序預(yù)測任務(wù),降低了參數(shù)量,在保證模型性能的同時(shí)訓(xùn)練速度更快;BERT-wwm(BERTwholewordmasking)[5]使用全詞掩碼,使模型可以學(xué)習(xí)到整個(gè)詞的語義信息。但研究表明,這些模型的魯棒性仍不太理想。
多任務(wù)學(xué)習(xí)是近年來訓(xùn)練模型常用的一種學(xué)習(xí)方法,通過將模型在多個(gè)任務(wù)上進(jìn)行訓(xùn)練,挖掘任務(wù)之間的關(guān)系,使模型可以將其他相關(guān)任務(wù)的知識應(yīng)用到目標(biāo)任務(wù),從而提升模型的泛化能力。多任務(wù)學(xué)習(xí)主要有硬約束和軟約束2種框架。硬約束是指模型在多個(gè)任務(wù)之間共享表示,在模型的輸出層針對不同的任務(wù)分別構(gòu)建不同的輸出。軟約束中不同的任務(wù)使用不同的網(wǎng)絡(luò),并且參數(shù)不同。在網(wǎng)絡(luò)之間,使用正則化的方法來約束參數(shù)之間的相似化。通過多任務(wù)學(xué)習(xí)可以降低模型的過擬合,提高模型的魯棒性。
Xia等人[21]設(shè)計(jì)了2個(gè)輔助的關(guān)系感知任務(wù)來預(yù)測2個(gè)單詞之間是否存在關(guān)系及其關(guān)系類型,通過多任務(wù)學(xué)習(xí)的方式提升了模型的理解能力,獲得了更好的性能。李燁秋等人[12]結(jié)合答案抽取和掩碼位置預(yù)測任務(wù)構(gòu)建了多任務(wù)學(xué)習(xí)模型。Liu等人[22]提出了MT-DNN(Multi-TaskDeepNeuralNetworks)模型,通過使用大量不同任務(wù)的數(shù)據(jù)來學(xué)習(xí)任務(wù)之間的相關(guān)知識,以幫助模型適應(yīng)新的領(lǐng)域和任務(wù)。錢錦等人[23]在生成式閱讀理解中,通過將答案抽取和問題分類作為輔助任務(wù)進(jìn)行多任務(wù)學(xué)習(xí),在多個(gè)數(shù)據(jù)集上獲得了最優(yōu)的性能。本文通過多任務(wù)學(xué)習(xí)的方式,實(shí)現(xiàn)了信息共享,提高了模型的理解能力,提升了模型的泛化能力。
本文針對抽取式閱讀理解進(jìn)行研究,本節(jié)給出了抽取式閱讀理解、證據(jù)句判斷和問題分類的形式化定義。
(1)抽取式閱讀理解。問題和篇章分別被表示為Q={q1,q2,…,qn}和D={d1,d2,…,dm},其中n和m分別表示問題和篇章的字?jǐn)?shù)(包括標(biāo)點(diǎn)符號)。目的是預(yù)測一個(gè)答案A={ai,…,aj},A為篇章中的一個(gè)片段,i和j分別表示該片段的起始位置和結(jié)束位置。答案計(jì)算如式(1)所示:
f1(Q,D)=argmaxP(A|Q,D)
(1)
(2)證據(jù)句判斷。證據(jù)句是指能夠?yàn)榛卮饐栴}提供事實(shí)證據(jù)的句子。本文將答案所在句視為證據(jù)句。將篇章表示為句子集合S={s1,s2,…,sk},k表示篇章中的句子數(shù)。證據(jù)句判斷任務(wù)旨在判斷篇章中最有可能為證據(jù)句的句子,具體計(jì)算如式(2)所示:
f2(Q,S)=argmaxP(su|Q,S)
(2)
其中,su表示第u個(gè)句子。
(3)問題分類。定義為通過問題和篇章來預(yù)測問題的所屬類別,具體計(jì)算如式(3)所示:
f3(Q,D)=argmaxP(yc|Q,D)
(3)
其中,yc表示第c個(gè)類別標(biāo)簽。
本文多任務(wù)學(xué)習(xí)模型的整體框架如圖1所示,主要包括4個(gè)部分:編碼器、答案抽取模塊、證據(jù)句判斷模塊及問題分類模塊。
Figure 1 Architecture diagram of machine reading comprehension model based on multi-task learning圖1 基于多任務(wù)學(xué)習(xí)的機(jī)器閱讀理解模型架構(gòu)圖
該部分的主要功能是對問題和篇章進(jìn)行編碼,通過大規(guī)模預(yù)訓(xùn)練語言模型編碼器得到問題和篇章之間的交互表示。
預(yù)處理中,對輸入的問題和篇章進(jìn)行分詞,然后標(biāo)記證據(jù)句所在位置。在標(biāo)記證據(jù)句的過程中,本文將篇章進(jìn)行分句處理,并刪去長度小于3的句子(視為噪聲)。將模型的輸入處理成“[CLS]+問題+[SEP]+篇章+[SEP]”的格式,其中,[CLS]和[SEP]為特殊分隔符;然后對字向量ET、文本向量ES和位置向量EP進(jìn)行求和,得到預(yù)訓(xùn)練模型的輸入。具體計(jì)算如式(4)所示:
Input=ET+ES+EP
(4)
在此基礎(chǔ)上,將Input經(jīng)過預(yù)訓(xùn)練語言模型后得到最后的表示H={h1,h2,…,hl},H∈Rl×D,其中,hk是每個(gè)字符的向量表示,l是整個(gè)輸入的長度,D是向量的維度,篇章表示部分記作Hp∈Rm×D。具體計(jì)算如式(5)所示:
H=Model(Input)
(5)
其中,Model為預(yù)訓(xùn)練語言模型編碼器。具體使用RoBERTa-wwm-ext-large預(yù)訓(xùn)練模型,因?yàn)樗Y(jié)合了RoBERTa和BERT-wwm的優(yōu)點(diǎn),在許多任務(wù)上都有著優(yōu)異的表現(xiàn)。
(1)答案抽取模塊。該模塊根據(jù)編碼器得到的篇章表示Hp來抽取答案。首先,篇章表示Hp通過2個(gè)不同參數(shù)的線性層后分別得到答案開始位置和結(jié)束位置未歸一化的概率,然后經(jīng)過softmax進(jìn)行歸一化,最終分別得到每個(gè)位置作為開始位置和結(jié)束位置的概率s_logit和e_logit,具體計(jì)算如式(6)和式(7)所示:
s_logit=softmax(f1(Hp))
(6)
e_logit=softmax(f2(Hp))
(7)
其中,f1和f2是有可訓(xùn)練參數(shù)的線性層,s_logit∈Rm和e_logit∈Rm由2個(gè)不同的線性層得到。
(2)證據(jù)句判斷模塊。該模塊與答案抽取模塊共享編碼器,在經(jīng)過預(yù)訓(xùn)練模型后,得到表示H,取出[CLS]處的聚合表示h[CLS],首先通過線性層,再通過softmax函數(shù)進(jìn)行歸一化,得到每個(gè)句子作為證據(jù)句的概率sentence_logit,如式(8)所示:
sentence_logit=softmax(f3(h[CLS]))
(8)
其中,f3是有可訓(xùn)練參數(shù)的線性層,sentence_logit∈Rk,h[CLS]∈RD。
(3)問題分類模塊。問題分類任務(wù)旨在預(yù)測問題所屬的類別。使用整個(gè)文本的聚合表示h[CLS],通過一個(gè)獨(dú)立的線性層,得到問題屬于每個(gè)類別的概率,最后通過softmax函數(shù)進(jìn)行歸一化,如式(9)所示:
qc_logit=softmax(f4(h[CLS]))
(9)
其中,f4是有可訓(xùn)練參數(shù)的線性層,qc_logit∈R4。
本文所提出的多任務(wù)模型共包括答案抽取、證據(jù)句判斷和問題分類3個(gè)子任務(wù),均使用交叉熵?fù)p失函數(shù),具體損失函數(shù)如式(10)~式(12)所示:
ye·log(e_logit)]
(10)
esp_loss=ysen·log(sentence_logit)
(11)
(12)
其中,ys和ye分別表示真實(shí)答案的起始位置和結(jié)束位置的概率向量,ysen為真實(shí)的證據(jù)句標(biāo)簽向量,C=4表示問題的類別,yc表示真實(shí)的類別標(biāo)簽,yqc表示模型的預(yù)測標(biāo)簽類別。
本文采用多任務(wù)學(xué)習(xí)的方法,使用硬共享機(jī)制,多個(gè)任務(wù)之間共享輸入層和模型層,通過損失函數(shù)實(shí)現(xiàn)3個(gè)任務(wù)的結(jié)合,可以通過調(diào)整輔助任務(wù)的權(quán)重參數(shù)來控制輔助任務(wù)對模型總體性能的影響,從而獲得更好的性能。模型總的損失函數(shù)如式(13)所示:
total_loss=mrc_loss+
α*esp_loss+β*qc_loss
(13)
其中,α、β分別為證據(jù)句判斷和問題分類任務(wù)的損失權(quán)重,mrc_loss、esp_loss和qc_loss分別為答案抽取、證據(jù)句判斷任務(wù)和問題分類任務(wù)的損失。
本文實(shí)驗(yàn)使用DuReader-robust作為訓(xùn)練集,該數(shù)據(jù)集是Tang等人[4]在大規(guī)模中文閱讀理解數(shù)據(jù)集Dureader的基礎(chǔ)上針對魯棒性問題進(jìn)行手工標(biāo)注構(gòu)建的,是一個(gè)抽取式閱讀理解數(shù)據(jù)集,其答案為篇章中的一個(gè)連續(xù)片段。本文在DuReader- robust的訓(xùn)練集上進(jìn)行訓(xùn)練,共14 520條。由于該測試集未公開,使用李燁秋等人[12]在DuReader-robust基礎(chǔ)上構(gòu)建的過敏感測試集和過穩(wěn)定測試集,過敏感測試集共2 703條,過穩(wěn)定測試集共490條。具體信息如表3所示。
Table 3 Dataset information表3 數(shù)據(jù)集信息
本文實(shí)驗(yàn)的評價(jià)指標(biāo)使用F1值和EM值進(jìn)行評估。F1值用來計(jì)算模型預(yù)測結(jié)果和標(biāo)準(zhǔn)答案之間的重合率,EM值用于檢測它們之間是否完全匹配。F1值和EM值的計(jì)算分別如式(14)和式(15)所示:
(14)
(15)
其中,a′i和a′j分別為預(yù)測答案的起始和結(jié)束位置,ai和aj分別為標(biāo)準(zhǔn)答案的起始和結(jié)束位置。
(1)BERT[3]:基于多層Transformer編碼的深度雙向預(yù)訓(xùn)練模型。該模型通過在大規(guī)模語料庫上進(jìn)行預(yù)訓(xùn)練,獲得了豐富的上下文信息;在預(yù)訓(xùn)練中使用了掩碼語言模型和下一句預(yù)測2個(gè)無監(jiān)督任務(wù)進(jìn)行訓(xùn)練。BERT在多個(gè)NLP任務(wù)中都有優(yōu)異表現(xiàn)。
(2)ERNIE1.0[18]:與BERT相比,ERNIE1.0加入了實(shí)體級掩碼和短語級的掩碼策略,通過不同的掩蓋策略增強(qiáng)使模型獲得了更多的知識。
(3)ALBERT[20]:ALBERT是在BERT的基礎(chǔ)上,通過參數(shù)約簡和句子順序預(yù)測任務(wù)來改進(jìn)的預(yù)訓(xùn)練模型,在多個(gè)任務(wù)上超越了BERT的性能。
(4)RoBERTa-wwm-ext-large[5]:Cui等人[5]使用中文維基百科、新聞、問答等數(shù)據(jù)訓(xùn)練了RoBERTa-wwm-ext-large預(yù)訓(xùn)練模型。與BERT相比使用了更大規(guī)模的數(shù)據(jù),還結(jié)合了RoBERTa和BERT-wwm的優(yōu)點(diǎn),在預(yù)訓(xùn)練階段沒有采用下一句預(yù)測任務(wù),并且使用了全詞掩碼(Whole Word Masking )策略。
在問題分類中,Dureader-robust數(shù)據(jù)集中的問題均為實(shí)體型問題。經(jīng)過對數(shù)據(jù)集進(jìn)行分析,對事實(shí)型問題又進(jìn)行了進(jìn)一步的劃分,將問題分為4大類:時(shí)間類、數(shù)字類(除時(shí)間以外)、地址人名類和其他。
主要參數(shù)設(shè)置:初始學(xué)習(xí)率為3e-5,字向量維度為 768,隱藏狀態(tài)大小為 768,隱藏維度為768,最大輸入長度為256,doc_stride為128。實(shí)驗(yàn)訓(xùn)練批次大小為32,一共訓(xùn)練3輪,權(quán)重參數(shù)α、β均為0.1。
本文模型和基線模型在過敏感測試集和過穩(wěn)定測試集上的結(jié)果如表4所示。從實(shí)驗(yàn)結(jié)果可以看出,本文模型對比基線模型在2個(gè)測試集上均有性能提升。在過敏感測試集上,F(xiàn)1指標(biāo)比性能最好的基線模型RoBERTa-wwm-ext-large提高了4%,EM值提升了2.74%。在過穩(wěn)定測試集上本文模型對比基線模型F1值提高了0.97%,EM值提高了1.63%。說明通過多任務(wù)學(xué)習(xí),模型的理解能力得到了提升,模型的過敏感性和過穩(wěn)定性得到了一定的緩解,具有更好的魯棒性。還可以看出,ERNIE1.0和ALBERT對比BERT模型在過敏感測試集和過穩(wěn)定測試集上的F1值均有提高,原因是由于ERNIE1.0通過加入不同的掩碼策略,捕獲到了更多的詞匯和語義知識,ALBERT通過多個(gè)層間參數(shù)共享、Embedding分解以及使用句子順序預(yù)測替代下一句預(yù)測任務(wù),不僅減少了參數(shù),還使得模型性能更好。RoBERTa-wwm-ext-large預(yù)訓(xùn)練模型不僅使用了更大的訓(xùn)練數(shù)據(jù),還結(jié)合了多個(gè)模型的優(yōu)點(diǎn),在3個(gè)基線模型中效果最好。
為了驗(yàn)證每個(gè)輔助任務(wù)的有效性,本文進(jìn)行了消融實(shí)驗(yàn),在過敏感測試集和過穩(wěn)定測試集上的消融實(shí)驗(yàn)結(jié)果如表5所示。可以看出,本文模型中的2個(gè)輔助任務(wù)對于提升模型魯棒性均有幫助。除去證據(jù)句判斷任務(wù)后,模型在過敏感測試集和過穩(wěn)定測試集上F1值分別下降了2.12%和0.74%,這是由于證據(jù)句判斷任務(wù)為模型提供了篇章理解,使模型更加關(guān)注答案所在句,可以減少魯棒性問題帶來的干擾,尤其是過敏感性問題。而去除問題分類任務(wù),模型在過穩(wěn)定測試集上的性能顯著下降,F(xiàn)1值下降了約2.45%,說明問題分類任務(wù)為模型提供了更多的問題信息,可以輔助模型選擇正確的答案類型,問題分類任務(wù)能更好地改善模型的過穩(wěn)定性。
Table 5 Model ablation experiment results on test sets表5 模型在測試集上的消融實(shí)驗(yàn)結(jié)果
表6給出了2個(gè)樣例。在樣例1中,本文模型可以正確識別問題類別并回答正確,而RoBERTa-wwm-ext-large模型回答錯(cuò)誤。在樣例2中,由于問題與干擾句(下劃線所示句子)高度相似,導(dǎo)致模型從干擾句中抽取了錯(cuò)誤答案,但本文模型并未受到干擾句的影響,表明本文所提模型具有更好的魯棒性。
Table 6 Comparison of model prediction results表6 模型預(yù)測結(jié)果對比
本文主要針對閱讀理解模型的過敏感性和過穩(wěn)定性進(jìn)行了研究。通過多任務(wù)學(xué)習(xí)的方法,將證據(jù)句判斷和問題分類融入到模型中,從問題和篇章2方面增強(qiáng)了模型的理解能力。實(shí)驗(yàn)結(jié)果表明,本文模型有效地提高了魯棒性,在過敏感測試集和過穩(wěn)定測試集上均獲得了比基線模型更好的性能。在未來的工作中,將對魯棒性問題進(jìn)行更深層次的研究,探索提高魯棒性更有效的方法。