曹衛(wèi)東,李宏偉,王懷超
(中國民航大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,天津 300300)
在自然語言處理和人工智能研究中,機(jī)器閱讀理解注重考察對自然語言的理解能力和推理能力,是一項具有挑戰(zhàn)性的任務(wù)。近年來,已經(jīng)開發(fā)了一些基準(zhǔn)數(shù)據(jù)集來測量和加速閱讀理解技術(shù)的進(jìn)步[1-3]。SQuAD數(shù)據(jù)集是目前最流行的問答式數(shù)據(jù)集。針對SQuAD數(shù)據(jù)集,基于注意力的神經(jīng)網(wǎng)絡(luò)模型已經(jīng)成為閱讀理解自動問答的一項普遍的研究課題。Vinyals等[4]使用指針網(wǎng)絡(luò)調(diào)整輸出序列的長度,以此高效地預(yù)測文檔中的答案邊界。Wang和Jiang[5]使用匹配注意力建立帶有問題查詢感知的文檔向量表示,匯總關(guān)于問題的文檔表示。Microsoft Asia Natural Language Computing Group[6]使用門控注意力獲取更多與文檔相關(guān)的問題信息,忽略無關(guān)信息。但是這些模型無法利用單向注意力將上下文信息融入問題中。Xiong等[7]提出的動態(tài)協(xié)調(diào)網(wǎng)絡(luò)可以同時為文檔和問題生成注意力,實現(xiàn)問題和文檔信息的交互。Seo等[8]使用雙向注意流對多粒度的問題-文檔對進(jìn)行建模,增強(qiáng)模型的語義表示能力。然而,這些模型忽略了使用循環(huán)神經(jīng)網(wǎng)絡(luò)聚合長文本序列導(dǎo)致的信息丟失問題,影響了模型的性能。Clark等[9]通過從文檔中抽取多個段落進(jìn)行閱讀的方式獲取答案,縮短了訓(xùn)練時間,但是可能導(dǎo)致文檔中的重要信息未能被機(jī)器讀取,從而降低準(zhǔn)確率。
針對以上問題,本文借助自適應(yīng)調(diào)整和多級注意力機(jī)制,充分模擬人類進(jìn)行閱讀理解時帶著問題讀文檔、帶著文檔讀問題的閱讀方式,提出了一種基于協(xié)同注意力和自適應(yīng)調(diào)整的閱讀理解模型。該模型具有3點創(chuàng)新之處:
(1)計算余弦相似度找出文檔詞語與問題的關(guān)聯(lián)度,利用關(guān)聯(lián)度調(diào)整文檔向量,加強(qiáng)重要信息表示,捕捉與問題相關(guān)的文檔信息;
(2)利用協(xié)同注意力機(jī)制,融合問題和文檔的相互依賴的表示,以便將重點放在兩者的相關(guān)部分;
(3)使用自注意力機(jī)制分別將文檔和問題與其上下文信息進(jìn)行交互,并通過循環(huán)神經(jīng)網(wǎng)絡(luò)生成聚合向量。
機(jī)器閱讀理解是指以自然語言的形式給出文檔和問題,機(jī)器通過對自然語言的理解和推理返回正確答案。通常,閱讀理解包含問題、文檔以及正確答案。根據(jù)SQuAD數(shù)據(jù)集中答案是原文檔中的一個單詞或者一個連續(xù)序列的特點,可以將閱讀理解任務(wù)描述為:根據(jù)所提問題閱讀給定的文檔,推理后預(yù)測答案的開始點和結(jié)束點,通過答案跨度抽取正確答案。為了完成這項任務(wù),將閱讀理解定義為<文檔,問題,答案跨度>的三元組形式,用
表示。其中,P={P1,P2,…,PT}表示長度為T的文檔序列;Q={Q1,Q2,…,QL}表示長度為L的問題序列;A={astart,aend}表示答案跨度,astart是答案的開始位置,aend是答案的結(jié)束位置,并且滿足:1≤astart≤aend≤T。
根據(jù)訓(xùn)練集評估p(A|Q,P)的條件概率,并在測試集上預(yù)測答案
(1)
式中:A(P)是P中的一組候選答案,包含T2個選項。
為簡化模型,根據(jù)條件1≤astart≤aend≤T,求取預(yù)測的開始點和結(jié)束點概率之積的最大值,公式如下
(2)
式中:p(astart|Q,P)(或p(aend|Q,P))表示P中的第astart(或aend)個位置作為答案開始(或結(jié)束)的概率。
為有效地融合文檔和問題的信息,增強(qiáng)模型的語義表示能力,提高答案預(yù)測的準(zhǔn)確率,本文提出了一種(rea-ding comprehension model based on coattention and adaptive adjustment,CARC)。該模型包含6部分:選取向量的多粒度表示作為輸入,提取上下文特征信息;使用余弦相似度計算文檔與問題的相關(guān)性,根據(jù)相關(guān)性對文檔向量進(jìn)行自適應(yīng)調(diào)整,篩選文檔中的冗余信息;通過多層雙向門控循環(huán)單元(BiGRU)對文檔和問題進(jìn)行編碼;引入基于協(xié)同注意力的網(wǎng)絡(luò)分別獲得帶有問題感知的文檔向量表示(query-aware)和帶有文檔感知的問題向量表示(para-aware);利用自注意力機(jī)制學(xué)習(xí)句子內(nèi)部的依賴關(guān)系,融合句子間的語義信息,獲取新的語義向量表示;借助指針網(wǎng)絡(luò)預(yù)測答案跨度?;趨f(xié)同注意力和自適應(yīng)調(diào)整的閱讀理解模型的框架結(jié)構(gòu)如圖1所示。
圖1 基于協(xié)同注意力和自適應(yīng)調(diào)整的閱讀理解模型框架
該層的目的是將自然語言轉(zhuǎn)化為機(jī)器可以理解的向量矩陣,捕獲語義特征。本文的輸入包含文檔詞向量和問題詞向量兩部分。
該層的目標(biāo)是將單詞轉(zhuǎn)換成一個d維的向量,該向量包括詞嵌入和字符級嵌入兩個粒度。詞嵌入是固定的單一向量,由預(yù)訓(xùn)練好的GloVe模型[10]訓(xùn)練而成;字符級嵌入通過將單詞中的字符輸入到BiGRU中計算得到,添加字符級嵌入可以有效地解決詞庫外單詞(OOV)問題。因此,本層輸出文檔詞向量表示為:p={p1,p2,…,pT},問題詞向量表示為:q={q1,q2,…,qL}。對于單詞X,其向量形式為:[Xw;Xc]∈Rd。其中Xw表示詞嵌入,Xc表示字符級嵌入,符號[a;b]表示將向量a和向量b水平連接。
一般情況下,問題的答案只與文檔中的一小段篇幅相關(guān)。如果文檔中的某個詞與問題相關(guān),那么在接下來的步驟中應(yīng)該更多地考慮關(guān)于這個詞的信息。本文通過計算文檔與問題的相關(guān)權(quán)重來過濾文檔中冗余的信息。
首先利用余弦相似度計算<文檔,問題>單詞對的相關(guān)性概率分布矩陣
(3)
式中:pt∈p,ql∈q。
循環(huán)神經(jīng)網(wǎng)絡(luò)通過對上下文進(jìn)行學(xué)習(xí)和歸納,主要用于對時間序列的分類和預(yù)測[11,12]。為捕獲時間序列上的特征信息,本文使用BiGRU將上下文信息融合到每個時間步驟的表示上。
協(xié)同注意力機(jī)制可以同時為文檔和問題生成注意力權(quán)重,高效模擬人類進(jìn)行閱讀理解時先讀取問題、然后有目標(biāo)地閱讀文檔、最后根據(jù)文檔的核心思想分析問題并回答問題的技巧,實現(xiàn)兩者的信息交互。引入?yún)f(xié)同注意力機(jī)制可以更好捕捉文檔與問題中的重要信息,以便將注意力集中在兩者的相關(guān)部分。
(4)
將O按行進(jìn)行歸一化,以針對問題中的每個單詞在文檔中生成注意力權(quán)重Oq;按列進(jìn)行歸一化,以針對文檔中的每個單詞在問題中生成注意力權(quán)重Op
Oq=softmax(ro w(O))∈RT×L
(5)
Op=softmax(co l(O))∈RL×T
(6)
根據(jù)問題中的每個單詞計算基于注意力的文檔向量表示
(7)
使用加入了注意力信息的問題矩陣替換原向量矩陣,再次對文檔進(jìn)行注意力計算
(8)
針對使用注意力機(jī)制會覆蓋原始關(guān)鍵信息、GRU在處理長文本時信息大量丟失影響模型對上下文的理解能力、詞匯或句法差異降低模型性能等問題,本文添加自注意力機(jī)制(self-attention)將query-aware和para-aware與自身進(jìn)行匹配。
self-attention可以動態(tài)地收集序列內(nèi)部的信息,聚合匹配向量,使得序列的每個時間步長可以與段內(nèi)其它位置實現(xiàn)信息交互,如式(9)~式(11)所示
(9)
(10)
(11)
(12)
該層通過指針網(wǎng)絡(luò)預(yù)測文檔中每個位置作為答案范圍的開始或結(jié)束的概率,從而抽取答案序列。
(13)
(14)
pstart=max(a1,a2,…,aT)
(15)
將當(dāng)前預(yù)測概率的注意力加權(quán)向量作為輸入,使用BiGRU學(xué)習(xí)新的帶有答案開始位置信息的上下文語境向量作為預(yù)測答案結(jié)束位置的初始隱藏狀態(tài)
(16)
(17)
采用同樣地計算方式選擇答案的結(jié)束位置。在預(yù)測答案時,選取開始點到結(jié)束點的最佳跨度,從而保證pstart×pend取得最大值。
實驗數(shù)據(jù)采用的是SQuAD數(shù)據(jù)集。該數(shù)據(jù)集包含107.7 K個(文檔,問題,答案)三元組。其中,87.5 K個問答對作為訓(xùn)練集,10.1 K個問答對作為驗證集,10.1 K個問答對作為測試集。該數(shù)據(jù)集從維基百科中隨機(jī)選取了536篇文檔,采用眾包的方式,工作人員對每篇文檔提出問題,并標(biāo)記正確答案。每篇文檔平均包含250個單詞,每個問題平均含有10個單詞,問題的答案是原文檔中的一個單詞或者一個連續(xù)片段。相比于CNN/DailyMail數(shù)據(jù)集,SQuAD數(shù)據(jù)集更有挑戰(zhàn)性。表1是SQuAD數(shù)據(jù)集的一個樣例展示。
表1 SQuAD數(shù)據(jù)集樣例展示
在實驗中,使用Stanford CoreNLP工具對數(shù)據(jù)進(jìn)行分詞處理。訓(xùn)練數(shù)據(jù)中段落的限制長度para_limit設(shè)為400,問題的限制長度ques_limit設(shè)為50,測試數(shù)據(jù)中段落的最大長度test_para_limit設(shè)為1000,問題的最大長度test_ques_limit設(shè)為100。對于詞向量,初始詞向量設(shè)為300維,字符級向量設(shè)為8維。編碼層使用的雙向GRU層數(shù)設(shè)為3,其余層使用的雙向GRU層數(shù)設(shè)為1。隱藏單元數(shù)hidden設(shè)為75,訓(xùn)練字符級詞嵌入使用的隱藏單元數(shù)char_hidden設(shè)為100,batch_size設(shè)為50,隨機(jī)失活dropout設(shè)為0.6,學(xué)習(xí)率learning_rate設(shè)為0.001,優(yōu)化器使用adadelta優(yōu)化器,迭代次數(shù)num-steps設(shè)為50 000次,整個模型經(jīng)過10個小時完成訓(xùn)練。
本文的實驗硬件要求與運(yùn)行環(huán)境如下:操作系統(tǒng)為ubuntu 16,處理器為INTEL E5,顯存為GTX 1080TI 11G,開發(fā)語言為Python 3.5,開發(fā)環(huán)境為Tensorflow-gpu 1.5.0。
實驗以精確匹配(exact match,EM)、模糊匹配(F1)作為評價模型性能精度的指標(biāo)。EM用于測量預(yù)測答案與正確答案是否完全匹配。EM值的計算公式如式(18)所示
(18)
F1用于衡量預(yù)測答案與正確答案在最長公共子序列上的召回率和準(zhǔn)確率,是召回率(Recall)和準(zhǔn)確率(Precision)的平均加權(quán)。F1值的計算公式如式(19)~式(22)所示
C=G∩PA
(19)
(20)
(21)
(22)
其中,G表示正確答案序列,PA表示預(yù)測答案序列,|C|表示正確答案與預(yù)測答案的公共子序列長度,|G|表示正確答案序列長度,|PA|表示預(yù)測答案序列長度。
為驗證本文提出的CARC模型答案預(yù)測的有效性,在SQuAD數(shù)據(jù)集的驗證集和測試集上進(jìn)行實驗,與基于匹配長短時記憶網(wǎng)絡(luò)和應(yīng)答指針的端到端神經(jīng)網(wǎng)絡(luò)(Match-LSTM)、基于自匹配網(wǎng)絡(luò)的閱讀理解模型(R-Net)、動態(tài)協(xié)調(diào)網(wǎng)絡(luò)(DCN)、雙向注意流神經(jīng)網(wǎng)絡(luò)模型(BiDAF)、簡單有效的多段落閱讀理解模型(S-Norm)進(jìn)行了對比。為了對語義向量表示不準(zhǔn)確、信息冗余、長距離依賴等問題的解決提供驗證,本文通過設(shè)計實驗,驗證了添加不同模塊對模型性能的影響。同時,為了驗證不同參數(shù)對模型準(zhǔn)確率的影響,實驗過程從學(xué)習(xí)率和隨機(jī)失活兩個角度考慮,設(shè)計了兩組對比實驗。
3.4.1 不同模型對比實驗分析
本組實驗為了驗證基于協(xié)調(diào)注意力和自適應(yīng)調(diào)整閱讀理解模型的有效性。為保證對比結(jié)果的準(zhǔn)確性,本文模型的實驗數(shù)據(jù)根據(jù)實驗環(huán)境及參數(shù)設(shè)置運(yùn)行得出,其它對比模型的實驗結(jié)果均來源于對應(yīng)的論文。各對比模型的性能見表2。
表2 在SQuAD數(shù)據(jù)集上CARC模型與其它對比模型性能
根據(jù)表2可以看出,本文提出的CARC模型的性能最好,在驗證集和測試集均有所提升,精確匹配率達(dá)到72.9%,模糊匹配率高達(dá)81.8%。Match-LSTM模型的性能最差,它通過軟注意力(soft-attention)對問題和文檔內(nèi)容進(jìn)行交互,語義表示能力較差。它利用序列(Sequence)模型和邊界(Boundary)模型兩種方式生成答案,驗證了Boundary模型的預(yù)測能力相對較好。R-Net模型比Match-LSTM模型表現(xiàn)優(yōu)異,因為它在使用注意力的基礎(chǔ)上添加門控機(jī)制,加強(qiáng)了問題與文檔的關(guān)聯(lián)度。而本文提出的CARC模型通過使用協(xié)同注意力機(jī)制,分別從問題角度和文檔角度重點關(guān)注重要信息,進(jìn)一步增強(qiáng)了文檔和問題的相互聯(lián)系,在測試集上比R-Net模型的精確匹配率提高了0.6%,模糊匹配率提高了1.1%,驗證了本文提出的CARC模型的有效性。DCN模型和BiDAF模型均使用了雙向注意力。DCN模型采用動態(tài)迭代的方式反復(fù)思考問題提升模型預(yù)測能力。BiDAF模型通過多階段、層次化的方式獲取多粒度的文檔特征,增強(qiáng)文檔的語義表示。但是,它們僅使用雙向長短時記憶網(wǎng)絡(luò)(BiLSTM)對文檔信息進(jìn)行聚合,降低了模型的表示能力,所以它們的性能一般。而本文通過對文檔和問題使用自注意力機(jī)制,減少了文檔長度對模型的影響,很好地表示了自匹配向量,在測試集上比DCN模型精確匹配率提高了6.7%,模糊匹配率提高了5.9%,比BiDAF模型精確匹配率提高了4.9%,模糊匹配率提高了4.5%,驗證了CARC模型的有效性。S-Norm模型為了增強(qiáng)文檔與問題的相關(guān)度,抽取多個相關(guān)段落完成閱讀理解任務(wù),但是被忽略的段落中可能與文檔上下文或問題存在潛在的關(guān)聯(lián),導(dǎo)致模型性能下降。而本文利用自適應(yīng)調(diào)整加強(qiáng)文檔中重要信息的特征,比S-Norm模型精確匹配率提高了6.7%,模糊匹配率提高了5.9%。
3.4.2 各個模塊性能實驗分析
本組實驗為了驗證本文模型CARC中不同模塊對模型準(zhǔn)確率的影響。實驗以BiDAF模型為基準(zhǔn)模型,分別對自適應(yīng)調(diào)整、協(xié)同注意力、自注意力3個模塊的性能進(jìn)行了驗證。實驗結(jié)果見表3。
表3 各個模塊對模型性能的影響
根據(jù)表3可以看出,3個模塊都提升了模型的性能。協(xié)同注意力機(jī)制通過融合文檔和問題信息,幫助模型準(zhǔn)確定位文檔和問題中的重要位置,對模型性能的影響最大,精確匹配率提高了2.3%,模糊匹配率提高了2.2%。自注意力機(jī)制通過學(xué)習(xí)序列上下文信息,解決了長距離依賴的問題,對模型性能有積極的影響。自適應(yīng)調(diào)整解決了文檔信息冗余的問題,在兩個指標(biāo)中都略有提升。添加3個主要創(chuàng)新模塊后模型精確匹配率提高了4.1%,模糊匹配率提高了3.9%。
3.4.3 不同參數(shù)對比實驗分析
(1)學(xué)習(xí)率對模型性能的影響
學(xué)習(xí)率在深度學(xué)習(xí)中起著重要的作用,決定了目標(biāo)函數(shù)收斂到局部最小值的能力與速度。若學(xué)習(xí)率設(shè)置的過小,會導(dǎo)致收斂過程緩慢。若學(xué)習(xí)率設(shè)置的過大,會導(dǎo)致梯度來回震蕩,甚至無法收斂,降低模型性能。合適的學(xué)習(xí)率可以幫助目標(biāo)函數(shù)快速的收斂到局部最小值。實驗中學(xué)習(xí)率的大小分別設(shè)置為:0.01,0.001,0.0001,迭代次數(shù)設(shè)為5萬次,實驗數(shù)據(jù)使用SQuAD中的測試集。圖2、圖3展示了不同學(xué)習(xí)率取值對EM值和F1值的影響。
圖2 不同學(xué)習(xí)率下的EM值
圖3 不同學(xué)習(xí)率下的F1值
根據(jù)圖2可得,橫坐標(biāo)表示迭代次數(shù),縱坐標(biāo)表示答案預(yù)測的精確匹配能力。根據(jù)曲線可以看出,當(dāng)learning_rate=0.01時,迭代2.5萬次時EM值達(dá)到71.3%,但是2.5萬次以后曲線不穩(wěn)定,模型性能一般。當(dāng)learning_rate=0.0001時,迭代5萬次曲線一直處于上升階段,仍未收斂,模型性能最差。當(dāng)learning_rate=0.001時,迭代4萬次時EM值達(dá)到72.7%,最先收斂,模型精確匹配率最高。根據(jù)圖3可得,橫坐標(biāo)表示迭代次數(shù),縱坐標(biāo)表示答案預(yù)測的模糊匹配能力??梢钥闯觯?dāng)learning_rate=0.001時收斂速度最快,F(xiàn)1值取得最大值,模糊匹配能力最好。綜合圖2、圖3可以得出,學(xué)習(xí)率取0.001時模型的理解和推理能力最好。
(2)隨機(jī)失活對模型性能的影響
為了防止過擬合的發(fā)生,設(shè)置合適的隨機(jī)失活值至關(guān)重要。隨機(jī)失活值設(shè)置過高或過低都會影響模型的性能。合適的隨機(jī)失活值可以控制訓(xùn)練集的訓(xùn)練精度,提高模型精度。實驗在訓(xùn)練集和測試集上進(jìn)行驗證,迭代次數(shù)為5萬次,隨機(jī)失活選取了0.5,0.6,0.65,0.7,0.8這5個不同的數(shù)值進(jìn)行對比。實驗結(jié)果見表4。
表4 隨機(jī)失活對模型性能的影響
根據(jù)表4可以看出,當(dāng)隨機(jī)失活值取0.8時,訓(xùn)練集和測試集的損失函數(shù)值相差最大,模型的表現(xiàn)較差。隨著隨機(jī)失活的減小,損失函數(shù)的差距減小,模型的性能逐漸提升。當(dāng)隨機(jī)失活值降低到0.6時,準(zhǔn)確率達(dá)到最高值。當(dāng)隨機(jī)失活值取0.5時,在訓(xùn)練集和測試集上模型的性能都表現(xiàn)的最差。實驗結(jié)果表明,當(dāng)隨機(jī)失活值取0.6時,協(xié)同注意力機(jī)器閱讀理解模型具有最好的答案預(yù)測效果。
通過全面對比不同參數(shù)對模型指標(biāo)以及收斂時間的影響,選取了最優(yōu)參數(shù)設(shè)置。實驗結(jié)果表明,本文提出的基于協(xié)同注意力和自適應(yīng)調(diào)整的閱讀理解模型在閱讀理解任務(wù)中具有相對較好的性能。
機(jī)器閱讀理解任務(wù)旨在讓計算機(jī)能夠理解文檔的內(nèi)容以便回答問題。為解決語義表示能力差、信息冗余、信息丟失等問題,提出了一種基于協(xié)同注意力和自適應(yīng)調(diào)整的閱讀理解模型。模型利用余弦相似度加強(qiáng)與問題相關(guān)文本的特征表示,借助協(xié)同注意力機(jī)制捕獲文檔和問題中的相關(guān)信息,使用自注意力機(jī)制學(xué)習(xí)當(dāng)前時間步驟與上下文的關(guān)系,獲取問題和文檔的自匹配向量表示。實驗結(jié)果表明,本文提出的模型對于精確匹配和模糊匹配均具有較高性能,具有一定的應(yīng)用價值。在未來的研究任務(wù)中,將添加快讀功能,縮短收斂時間,提升閱讀速度。此外,設(shè)計新的模型以應(yīng)對更復(fù)雜的問答型閱讀理解任務(wù)。