王 紅 邸 帥 吳燕婷
(中國(guó)民航大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 天津 300300)
機(jī)器閱讀理解(Machine Reading Comprehension,MRC)是讓機(jī)器閱讀并理解文本,進(jìn)而對(duì)于給出的問題進(jìn)行回答的技術(shù)[1]。學(xué)術(shù)界中,通過機(jī)器閱讀理解來評(píng)估機(jī)器的理解能力是一項(xiàng)持久而又富有挑戰(zhàn)的自然語言處理問題。工業(yè)界中,機(jī)器閱讀理解是譬如智能問答、搜索等任務(wù)的關(guān)鍵技術(shù)。當(dāng)機(jī)器具備相當(dāng)水平的理解能力時(shí),機(jī)器將便捷精準(zhǔn)地從海量碎片化的信息流中獲取人類所需的知識(shí)[2]。
傳統(tǒng)的機(jī)器閱讀理解模型大多采用基于規(guī)則的方法。Hirschman等[3]開發(fā)了Deep Read閱讀理解系統(tǒng),通過使用詞袋法來表示句子信息并且借鑒了信息抽取的方法。Riloff等[4]通過啟發(fā)式規(guī)則開發(fā)了一個(gè)基于規(guī)則的閱讀理解系統(tǒng)Quarc,通過采用設(shè)定的規(guī)則來尋找文本和問題之間的詞匯和語義線索。然而此系統(tǒng)針對(duì)不同的問題需要手工設(shè)定不同的規(guī)則,耗時(shí)費(fèi)力。盡管在一些較為簡(jiǎn)單的數(shù)據(jù)集中,基于規(guī)則的方法可以取得一定的效果,但是,基于規(guī)則的方法過于依賴人工[5],系統(tǒng)的工程成本較高且很大程度上依賴現(xiàn)有的自然語言處理工具,如依存句法分析或是語義標(biāo)注工具[6],較難獲取到機(jī)器閱讀理解任務(wù)所需的深層語義特征。同時(shí),由于訓(xùn)練此法的數(shù)據(jù)集本身的局限性,導(dǎo)致其泛化能力大打折扣。此外,此法往往依賴于窗口進(jìn)行匹配,因此難以解決句子之間的長(zhǎng)距離依賴問題。
隨著神經(jīng)網(wǎng)絡(luò)模型日趨成熟,研究者們將循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[7]、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)[8]、注意力機(jī)制等應(yīng)用于機(jī)器閱讀理解任務(wù)中。Yu等[9]首次提出采用二元CNN生成文本序列和問題序列的分布式語義表示,但是長(zhǎng)距離依賴問題仍未有效解決。Hermann等[10]率先將注意力機(jī)制應(yīng)用于機(jī)器閱讀理解任務(wù)中,效果超越同期方法,但是未解決指代消解以及所采用的單向注意力機(jī)制未充分獲取文本和問題之間的關(guān)聯(lián)等問題。隨著注意力機(jī)制的發(fā)展,Wang等[11]提出的Match-LSTM模型、Seo等[12]提出的BiDAF模型、谷歌提出的QANet[13]模型均結(jié)合使用了各類的注意力機(jī)制,較好地解決了文本序列與問題序列的語義融合問題,但是仍然解決不了一詞多義等問題。隨著谷歌BERT[14]的提出,預(yù)訓(xùn)練的語言模型極大地促進(jìn)了機(jī)器閱讀理解的發(fā)展。由于通過大規(guī)模的預(yù)訓(xùn)練樣本進(jìn)行訓(xùn)練,可以捕獲更深層次的語義特征與句間關(guān)系,較好地提高了機(jī)器閱讀理解的模型性能[15-16]。
基于以上分析,本文將預(yù)訓(xùn)練的BERT模型、注意力機(jī)制和自注意力機(jī)制相結(jié)合,針對(duì)機(jī)器閱讀理解中的問答式任務(wù),提出基于BERT_Att的機(jī)器閱讀理解模型,旨在解決當(dāng)前機(jī)器閱讀理解模型中存在的上下文語義融合不夠充分以及缺乏整體信息利用等問題。
本文所構(gòu)建的機(jī)器閱讀理解模型BERT_Att自下而上共分為五個(gè)層次,模型框架如圖1所示。
圖1 基于BERT_Att的機(jī)器閱讀理解模型框架
(1) 嵌入層。采用BERT將文本序列和問題序列映射進(jìn)高維稠密的向量空間。
(2) 上下文編碼層。采用Bi-LSTM針對(duì)文本序列和問題序列的向量分別進(jìn)行編碼,提取上下文信息。
(3) 注意力交互層。采用文本對(duì)問題和問題對(duì)文本的雙向注意力機(jī)制對(duì)文本和問題進(jìn)行語義融合,進(jìn)一步采用自注意力機(jī)制突出整體信息的表達(dá)。
(4) 解析層。采用Bi-LSTM捕獲伴隨問題感知的文本中詞與詞之間的交互關(guān)系。
(5) 答案輸出層。采用Softmax計(jì)算答案開始和結(jié)束位置的概率分布。
模型的輸入為問題序列Q={q1,q2,…,qJ}和上下文的文本序列P={p1,p2,…,pT},嵌入層的作用是將問題序列和文本序列映射到高維稠密的向量空間中。BERT為谷歌2018年提出的預(yù)訓(xùn)練模型,模型框架如圖2所示。其中:E代表輸入的向量表示;T代表輸出的向量表示;Trm為Transformer特征抽取器(BERT的BASE版本具有12層的Transformer;Embedding的維度為768;BERT的LARGE版本有24層的Transformer,Embedding的維度為1 024。本文使用的是BERT的BASE版本)。
圖2 BERT模型框架
事實(shí)上在BERT之前,出現(xiàn)過GPT(Generative Pre-Training)預(yù)訓(xùn)練模型與ELMO(Embedding from Language Models)預(yù)訓(xùn)練模型。這三個(gè)模型均可以解決Word2Vec或者Glove這類靜態(tài)模型遺留的一詞多義問題(例如:“一天一蘋果,醫(yī)生遠(yuǎn)離我”和“蘋果新款手機(jī)發(fā)布會(huì)”,兩句中的“蘋果”如果使用Word2Vec或者Glove將會(huì)生成完全相同的向量)。但是,由于ELMO使用LSTM而不是Transformer作為特征抽取,導(dǎo)致其獲取特征能力偏弱。而GPT雖然使用了Transformer抽取特征,但是使用的是單向自回歸的語言模型,在上下文特征的獲取方面存在短板。反觀BERT模型,其具有以下優(yōu)勢(shì):
(1) 通過使用Masked雙向語言模型,可以較好地抽取上下文相關(guān)的特征。
(2) 通過添加Next Sentence Prediction任務(wù),可以處理句子相關(guān)的任務(wù)。
(3) 使用Transformer來抽取特征。
基于以上分析,本文采用BERT將Q和P分別映射進(jìn)d維的向量空間中。該層的輸出為:
文本表征矩陣:Ep∈Rd×T
問題表征矩陣:Eq∈Rd×J
式中:T表示的是文本序列的最大長(zhǎng)度;J表示的是問題序列的最大長(zhǎng)度;d則為向量的維度,d=768。
為了進(jìn)一步獲取任務(wù)所需要的上下文信息。在本文模型中,上下文編碼層以及解析層均采用了Bi-LSTM網(wǎng)絡(luò)。Bi-LSTM是由LSTM(Long Short-Term Memory)網(wǎng)絡(luò)發(fā)展而來。LSTM的單個(gè)單元的內(nèi)部構(gòu)造如圖3所示。其是由輸入門i、輸出門o、遺忘門f、記憶單元ct所組成。LSTM網(wǎng)絡(luò)可以有效解決訓(xùn)練過程中的梯度爆炸或者梯度消失的問題。
圖3 LSTM單元內(nèi)部構(gòu)造
LSTM網(wǎng)絡(luò)的計(jì)算過程如下:
X=[et,ht-1]
(1)
it=σ(Wi·X+bi)
(2)
ot=σ(Wo·X+bo)
(3)
ft=σ(Wf·X+bf)
(4)
ct=ft⊙ct-1+it⊙tanh(Wc·X+bc)
(5)
ht=ot⊙tanh(ct)
(6)
式中:⊙為點(diǎn)乘運(yùn)算;et為文本序列(或問題序列)的t時(shí)刻向量表示;ht為第t時(shí)刻的隱藏層狀態(tài)向量;σ為代表網(wǎng)絡(luò)的激活函數(shù)為Sigmoid;W為隱藏層向量的權(quán)重矩陣;b為偏置向量;W和b均為網(wǎng)絡(luò)的可訓(xùn)練參數(shù)。
盡管LSTM可以獲取上文的信息,但是無法獲取下文的信息,因此本文采用Bi-LSTM來對(duì)上下文信息進(jìn)行捕獲。Bi-LSTM網(wǎng)絡(luò)如圖4所示。
圖4 Bi-LSTM模型框架
注意力(Attention)機(jī)制最早應(yīng)用于視覺圖像領(lǐng)域,自然語言處理領(lǐng)域最早應(yīng)用注意力機(jī)制的則是Bahdanau等[17]所做的機(jī)器翻譯任務(wù)。注意力機(jī)制可以計(jì)算單詞的權(quán)重,此權(quán)重可以理解為對(duì)任務(wù)的重要性大小。此層的目的是將問題中的詞與文本中的詞進(jìn)行交互與融合,以突出模型所需要的重點(diǎn)部分。詳細(xì)過程如下:
首先,本文從兩個(gè)方向上計(jì)算注意力。計(jì)算文本與問題相似度矩陣S,計(jì)算公式如下:
S=α(H:t,U:t)∈RT×J
(7)
文本對(duì)問題的注意力表現(xiàn)為文本中的詞與問題中的詞的相關(guān)性,計(jì)算公式如下:
at=softmax(St:)
(9)
問題對(duì)文本的注意力表現(xiàn)為與問題最相關(guān)的文本序列的權(quán)重,計(jì)算公式如下:
b=softmax(maxcol(S))
(10)
(13)
式中:β是一個(gè)可被訓(xùn)練的多層感知機(jī)函數(shù),這是其中一種效果較好的拼接方式。
最后,由于自注意力機(jī)制有助于學(xué)習(xí)文本自身內(nèi)部信息的表達(dá),因此本文模型又采用了自注意力機(jī)制即等效為連帶著問題再遍歷一遍上下文,計(jì)算公式如下:
uit=tanh(Wwgit+bw)
(16)
式中:git為包含問題感知的向量G的第i列中第t個(gè)位置的向量;uw為可訓(xùn)練參數(shù)矩陣。由此輸出通過自注意力機(jī)制得到的向量G′∈R8d×T。
此層采用Bi-LSTM,用于捕獲伴隨問題感知的上下文序列中詞之間的交互信息。具體過程為上層的輸出G′先通過一層Bi-LSTM(每個(gè)方向上的輸出維度為d)產(chǎn)生一個(gè)矩陣M1∈R2d×T,再將M1送入另外一層Bi-LSTM得到矩陣M2∈R2d×T。由上文分析可知,M1和M2均包含文本和問題的上下文感知信息。
此層通過定位答案起始位置和結(jié)束位置來獲取最終的答案。通過式(17)和式(18)分別計(jì)算出答案在整個(gè)文本中起始位置和結(jié)束位置的概率分布。
機(jī)器閱讀理解的數(shù)據(jù)集中,英文的數(shù)據(jù)集有SQuAD[18]、MS MARCO[19]等,中文的有DuReader[20]、DRCD[21]等。本文所使用的數(shù)據(jù)集為百度2017年發(fā)表的中文機(jī)器閱讀理解的數(shù)據(jù)集DuReader,基于TensorFlow1.10.0深度學(xué)習(xí)框架,采用NVIDIA GTX 1080顯卡,16 GB內(nèi)存的PC進(jìn)行實(shí)驗(yàn)。依據(jù)問題類型劃分,DuReader分為實(shí)體類(Entity)、描述類(Description)和是非類(YesNo)問題,此外,針對(duì)每一類問題,再次可以細(xì)分為事實(shí)類(Fact)和觀點(diǎn)類(Opinion)。相比于其他的機(jī)器閱讀理解數(shù)據(jù)集,DuReader具有以下特點(diǎn):(1) 文本和問題均由百度知道與百度搜索引擎產(chǎn)生,符合現(xiàn)實(shí)的中文應(yīng)用場(chǎng)景;(2) DuReader涵蓋了之前較少涉及的觀點(diǎn)類與是非類數(shù)據(jù),數(shù)據(jù)類型多樣;(3) 數(shù)據(jù)集包含的文本以及問題數(shù)量充足,每個(gè)文本的平均長(zhǎng)度也長(zhǎng)于以往的數(shù)據(jù)集。
為了評(píng)估模型性能,本文所采用的評(píng)價(jià)指標(biāo)為BLEU- 4和ROUGE-L。計(jì)算公式如下:
式中:ly1為標(biāo)準(zhǔn)答案的長(zhǎng)度;ly2為輸出答案的長(zhǎng)度;Pn表示N-gram的精度;N取4,Wn為1/N,BP為懲罰項(xiàng),懲罰長(zhǎng)于標(biāo)準(zhǔn)答案的結(jié)果。
式中:y1為標(biāo)準(zhǔn)答案;y2為輸出答案;LCS(·,·)為求最長(zhǎng)公共子序列長(zhǎng)度;β一般設(shè)置較大的值,此處β取1.2。
模型訓(xùn)練的損失函數(shù)選擇交叉熵?fù)p失函數(shù),即為:
模型在訓(xùn)練過程中,由于DuReader數(shù)據(jù)量較大,文本一般較長(zhǎng),可能會(huì)影響模型的收斂,因此本文為了能讓模型更好地處理,在訓(xùn)練時(shí)選取與正確答案重疊最多的段落,測(cè)試時(shí)選取與問題重疊最多的段落,并對(duì)數(shù)據(jù)集中的噪音(如亂碼與URL等)進(jìn)行清洗,進(jìn)一步對(duì)是非類問題進(jìn)行適當(dāng)?shù)暮Y選。模型的主要超參數(shù)設(shè)置如表1所示。
表1 主要超參數(shù)設(shè)置
模型在訓(xùn)練過程中使用Adam優(yōu)化算法進(jìn)行優(yōu)化,加快模型的收斂速度。
實(shí)驗(yàn)對(duì)比分析了機(jī)器閱讀理解任務(wù)中主流的幾個(gè)模型,實(shí)驗(yàn)結(jié)果如表2所示。
表2 不同模型實(shí)驗(yàn)對(duì)比(%)
通過對(duì)比模型的分析可知,總體而言,由于Match-LSTM模型在編碼的部分使用的是LSTM網(wǎng)絡(luò),因此上下文信息的挖掘有所欠缺,而BiDAF模型的嵌入層無法解決一詞多義問題,并且在注意力層可以進(jìn)一步挖掘文本和問題的關(guān)聯(lián),單純BERT模型正確率有所提升,證明了預(yù)訓(xùn)練有助于提升模型的性能表現(xiàn)。而本文模型BERT_Att性能表現(xiàn)較好,為了進(jìn)一步驗(yàn)證模型中各個(gè)模塊對(duì)總體性能的影響,本文進(jìn)行了模塊對(duì)比實(shí)驗(yàn)(表3中的“√”表示此模塊沿用本文模型中所采用的),結(jié)果如表3所示。
表3 不同模塊實(shí)驗(yàn)對(duì)比
通過分析表3可得:
(1) 在嵌入層中,相比于使用Word2vec,采用大規(guī)模語料預(yù)訓(xùn)練的BERT模型可以提升模型的整體性能。
(2) 在上下文編碼層中,相比于使用只能獲取上文信息的LSTM網(wǎng)絡(luò),采用能捕獲上下文信息的Bi-LSTM網(wǎng)絡(luò)更有助于提升模型的整體性能。
(3) 在交互層中,通過采用問題對(duì)文本的注意力和文本對(duì)問題的注意力并且聯(lián)合自注意力機(jī)制更能有效地提高模型的整體性能。
此外,為了進(jìn)一步研究DuReader中兩個(gè)不同來源的數(shù)據(jù)子集對(duì)性能的影響,本文分別做了這兩個(gè)子集的實(shí)驗(yàn),結(jié)果如圖5所示。
圖5 百度搜索和百度知道實(shí)驗(yàn)對(duì)比
由圖5分析可得,本文的閱讀理解模型在百度知道上的性能要優(yōu)于在百度搜索上的。這是由于百度知道是相對(duì)固定的問答數(shù)據(jù),而百度搜索所構(gòu)造的數(shù)據(jù)則類似于開放世界領(lǐng)域的數(shù)據(jù),表明了針對(duì)機(jī)器閱讀理解任務(wù)而言,開放領(lǐng)域數(shù)據(jù)的模型建模要更為復(fù)雜。
最后,為了分析不同的問題類型對(duì)模型性能的影響,本文對(duì)數(shù)據(jù)集中三類問題進(jìn)行實(shí)驗(yàn),結(jié)果如表4和表5所示。
表4 三類問題實(shí)驗(yàn)對(duì)比(%)
表5 三類問題結(jié)果示例
由表4可知,描述類問題的性能表現(xiàn)最好,實(shí)體類問題次之,是非類問題最差。再結(jié)合表5的結(jié)果示例可以得出,從數(shù)據(jù)集的角度來看,描述類問題的文本通常是相同中心思想的文段,它的正確答案往往也是一段話,更有助于模型進(jìn)行歸納總結(jié);實(shí)體類問題的文本則相對(duì)分散,正確答案也較為簡(jiǎn)短,需要模型對(duì)上下文進(jìn)行較為精確的理解后進(jìn)行簡(jiǎn)短歸納方可得出,相比于描述類問題較難學(xué)習(xí);然而,是非類問題的文本,有的對(duì)于模型而言是“相互矛盾”的,有的則是過于簡(jiǎn)短的文本,比如只是簡(jiǎn)單的是否,因此模型更難學(xué)習(xí)。
本文提出的基于BERT、注意力機(jī)制與自注意力機(jī)制的機(jī)器閱讀理解模型BERT_Att,通過在公共數(shù)據(jù)集DuReader上的實(shí)驗(yàn)結(jié)果表明,其BLEU- 4值和ROUGE-L值分別提升了3.2百分點(diǎn)與2.1百分點(diǎn),較為有效地解決了機(jī)器閱讀理解任務(wù)中上下文語義信息融合不充分以及整體信息利用缺乏的問題。未來可以引入外部知識(shí)庫(kù)如知識(shí)圖譜使模型更加適應(yīng)開放領(lǐng)域數(shù)據(jù)或者領(lǐng)域內(nèi)數(shù)據(jù),可以考慮推理算法來突破是非類問題的性能瓶頸,并通過對(duì)抗訓(xùn)練與遷移學(xué)習(xí)提高模型在跨數(shù)據(jù)集上的性能。