林世平,陳 璐,陳開志,吳運兵,廖祥文
(福州大學數(shù)學與計算機科學學院, 福建 福州 350108)
機器閱讀理解任務(wù)的目標是讓機器閱讀給定的原文和問題,得到正確的答案[1],現(xiàn)有研究工作可以分為兩類. 1) 基于傳統(tǒng)特征工程的方法. 依賴于人工特征,使用問題構(gòu)建出相應的詞袋向量,再通過滑窗算法計算出詞袋向量的重疊分數(shù)用于評定答案[2],同時利用詞距特征[2]以及綜合多個不同大小的滑窗結(jié)果[3]來改進性能;或者通過任務(wù)特化的目標函數(shù),訓練出綜合特征的隱變量模型來計算出答案的概率分布[4]. 但是,人工特征的定義會消耗大量的人力、 物力以及時間,并且得到的特征向量魯棒性不夠強. 2) 基于深度學習的方法. 將文本中的每個單詞映射成向量形式,采用深度神經(jīng)網(wǎng)絡(luò)來獲取有連續(xù)性的文本表示,并通過注意力機制的方式來使文章的表示能夠考慮問題,再使用得到的表示向量算出答案的概率分布[5],最后在這個基礎(chǔ)上通過雙向注意力流[6]、 自注意力[7]等方式來考慮更多的信息. 基于深度學習的方法能獲得連續(xù)并考慮上下文的特征,但是目前的工作大多數(shù)使用循環(huán)神經(jīng)網(wǎng)絡(luò),在單詞信息逐層傳遞的過程中,可能會丟失文本的整體信息,并且拼接上下文內(nèi)容可能導致失去部分上下文信息.
有鑒于此,本研究提出基于時間卷積網(wǎng)絡(luò)的機器閱讀理解模型. 模型使用時間卷積網(wǎng)絡(luò)來將問題和文章的每個單詞表示融入上下文信息,使問題和文章表示能進一步地融合上下文,獲得更加完整的信息.
在基于傳統(tǒng)特征工程的一般方法中,模型通過提煉問題、 候選答案和相關(guān)文檔中的詞匯、 句法、 語義等特征進行文本的相似度匹配以獲取答案. 文獻[2]提出了基于詞袋滑窗的方法和考慮了長范圍依賴的基于詞距的方法,都使用了簡單的詞匯特征. 此后,文獻[3]通過設(shè)置不同大小的窗口長度來捕捉文章和問題之間更全面的相關(guān)信息,從而改進了基于詞袋滑窗的方法. 然而,簡單的滑窗模型并不能很好地回答擁有多個支持句(為問題提供回答線索的句子)的問題. 文獻[4]使用了隱變量模型來選取出問題句的候選支持句,并額外考慮了話語關(guān)系特征.
雖然在一些簡單的機器閱讀理解任務(wù)中,基于傳統(tǒng)特征工程的方法能夠取得較為優(yōu)秀的效果,但是依舊存在許多問題無法得到解決. 比如,傳統(tǒng)特征難以考慮到表達的多樣性問題. 大多數(shù)特征工程的方法使用窗口進行匹配,很難解決多句子間的長距離依賴問題. 同時,由于窗口和n-gram固定長度的特性,不是一個最有效的語義單元,故可能存在語義缺失或者噪聲干擾等問題.
相較基于傳統(tǒng)特征的方法,在深度神經(jīng)網(wǎng)絡(luò)中,語義單元被表示為連續(xù)的語義空間上的向量,這樣能有效解決語義稀疏性的問題. 因此,近年來有很多基于深度神經(jīng)網(wǎng)絡(luò)的機器閱讀理解模型被提出. 主流的想法是通過循環(huán)神經(jīng)網(wǎng)絡(luò)編碼文本,利用注意力機制來進行問題和文章的交互,再利用循環(huán)神經(jīng)網(wǎng)絡(luò)獲得答案. 文獻[5]提出一個Match-LSTM模型來同時編碼問題和文章,模型使用注意力機制計算文章對問題的注意力,生成文章對問題的交互向量并與文章表示拼接.
為了更好地進行文章和問題的交互,在注意力改進方面,最早的思路是堆疊注意力,文獻[6]提出的雙向注意力流方法不僅計算了文章對問題的交互向量,同時也計算了問題對文章的交互向量來提高交互程度. 而后,出現(xiàn)了自我匹配的注意力,文獻[7]設(shè)計了一個門限注意力和自匹配注意力機制,過濾無關(guān)信息并對文章和問題一起進行編碼.
在其他特征增加和融合方面,文獻[8]采用一個細粒度的門限機制來對單詞級和字符級的特征進行融合. 文獻[9]設(shè)計出使用時間步模擬多步推理并綜合每一步的結(jié)果得到答案的模型. 文獻[10]通過卷積神經(jīng)網(wǎng)絡(luò)來統(tǒng)一處理所有匹配矩陣,同時綜合考慮選項與篇章及問題的匹配,來得到最終答案.
如今基于深度學習的方法在機器閱讀理解任務(wù)上取得了不錯的效果,但是大多數(shù)此類方法使用循環(huán)神經(jīng)網(wǎng)絡(luò),缺乏有效的上下文信息融合方式并無法考慮整體信息,因此對表現(xiàn)產(chǎn)生了影響.
一般閱讀理解需要給出一篇文章來用于閱讀,之后根據(jù)文章內(nèi)容提出問題來讓讀者做答,所以問題的形式化定義如下:給定一篇文章P={p1,p2, … ,pn, … ,pT},pn為文章文本中的單詞, 1 ≤n≤T; 一個對應的問題Q={q1,q2, … ,qm, … ,qu},qm為問題文本中的單詞, 1 ≤m≤u;T和u分別為文章和問題的長度;目標是利用模型得到答案的上邊界abegin和下邊界aend, 其中1 ≤abegin≤aend≤T,最終得到答案A= {pabegin,pabegin+1, … ,paend}.
圖1 基于時間卷積網(wǎng)絡(luò)的機器閱讀理解模型 Fig.1 The model of machine read comprehension based on temporal convolutional network
為了更好地考慮文本的整體信息,在多個階段采用時間卷積網(wǎng)絡(luò)[11]來對問題和文章進行上下文編碼,并使用注意力機制來交互,最后使用多層GRU[12]來預測答案,同時綜合所有時間步的結(jié)果來給出最終答案,具體模型結(jié)構(gòu)如圖 1 所示.
為了考慮不可回答的問題,將字符串NULL加入文章的尾部,無法回答的問題答案邊界指針指向這個標記. 本研究的模型主要包含以下 5 個模塊:
1) 基于GloVe的詞嵌入模塊. 將輸入的文本中每個單詞映射到詞嵌入,并將附加的特征拼接在詞嵌入末尾.
2) 基于時間卷積網(wǎng)絡(luò)的上下文編碼模塊. 獲取詞嵌入模塊得到的單詞離散表示,將表示加入上下文信息.
3) 基于注意力機制的交互模塊. 使用注意力機制將問題和文章的上下文表示進行交互,使文章表示能夠考慮問題,之后將文章本身進行交互.
4) 基于多層GRU的答案預測模塊. 根據(jù)問題表示和考慮過問題的文章表示來預測文章中每個單詞是答案邊界的概率.
5) 分類器模塊. 用于判斷問題是否無法回答.
2.2.1 基于GloVe的詞嵌入模塊
基于GloVe[13]的詞嵌入模塊主要對每個單詞進行離散地編碼將單詞映射成數(shù)值型的向量,并加入單詞的額外特征. 首先,采用預訓練詞嵌入GloVe分別將問題和文章中的每個單詞映射成300維的向量. 之后使用拼接的方式加入額外的特征,額外特征如表1所示.
表1 額外特征
最后,使用兩個獨立的雙層逐位置前向網(wǎng)絡(luò)[9]將問題和文章編碼映射成相同的維度. 這一層的輸出是問題編碼矩陣Q∈Rd×u和文章編碼矩陣P∈Rd×T,d是映射后的維度.
2.2.2 基于時間卷積網(wǎng)絡(luò)的上下文編碼模塊
對于一個文本來說,一個單詞與前后文本的關(guān)系包含了大量的特征,有效利用這些特征能更好地提高模型的性能. 而時間卷積網(wǎng)絡(luò)(TCN)被證明在不少序列建模任務(wù)上相比LSTM有更好的表現(xiàn).
圖2 無因果的時間卷積網(wǎng)絡(luò)層次結(jié)構(gòu)Fig.2 The structure of non-causal temporal convolutional network
因此在詞嵌入模塊的輸出得到了拼接好的矩陣P和Q后,在上下文編碼模塊中,使用了2個相連的時間卷積網(wǎng)絡(luò)對問題和文章的上下文信息進行編碼,并在每一層的輸入拼接上1個600維的CoVe[14]向量. 普通的時間卷積網(wǎng)絡(luò)采用因果卷積,即當前狀態(tài)的輸出僅與之前狀態(tài)的輸入有關(guān),而不考慮之后的輸入. 因為機器閱讀理解任務(wù)已經(jīng)給出完整的文本,所以采用無因果的時間卷積網(wǎng)絡(luò),即當前狀態(tài)與上文和下文的狀態(tài)都相關(guān),如圖2所示.
輸入是問題和文章詞嵌入的序列,每一層使用2個相連的1維空洞卷積網(wǎng)絡(luò),每層之間采用殘差的方法連接. 卷積核大小為3,即輸出根據(jù)當前狀態(tài),以及之前和之后的各1個時間步的狀態(tài)決定. 空洞卷積網(wǎng)絡(luò)根據(jù)空洞值s決定卷積核的間隔大小,第1層的空洞值為1,即一般的1維卷積網(wǎng)絡(luò),之后的每一層使用的卷積層的空洞值逐漸增加. 隨著空洞值的增加,每個單詞表示能夠考慮更廣泛的信息. 同時卷積網(wǎng)絡(luò)通過加權(quán)和的方式來匯總文本信息,高層時間卷積網(wǎng)絡(luò)表示獲得的文本信息更有整體性,而且卷積網(wǎng)絡(luò)的卷積核能更自然地融合上下文信息.
兩個相連的時間卷積網(wǎng)絡(luò)在問題和文章之間共享參數(shù),下層時間卷積網(wǎng)絡(luò)的輸出作為上層時間卷積網(wǎng)絡(luò)的輸入,在各層輸出分別得到文章的上下文表示HP和HP′,以及問題的上下文表示HQ和HQ′. 其中‖是兩個向量的拼接運算.
2.2.3 基于注意力機制的交互模塊
從上下文編碼模塊分別獲得了問題和文章獨立的上下文表示,在交互模塊中將問題和文章表示進行交互來考慮問題信息. 交互模塊使用注意力機制來考慮問題信息,參與計算的問題和文章表示是GloVe、 CoVe,兩層時間卷積網(wǎng)絡(luò)輸出的拼接分別得到問題和文章的表示為DQ和DP,采用點乘的方式來計算交互矩陣,并對交互矩陣使用逐行的 softmax 函數(shù). 具體表達式如下所示:
G=(h(DP))Th(DQ)
(1)
R=softmax(G)
(2)
之后將R與問題表示點乘,并與文章的上下文表示進行拼接得到考慮問題的文章表示CP. 將獲得的考慮問題的文章表示傳入一個新的時間卷積網(wǎng)絡(luò)來融入上下文信息,可得:
UP=TCN(CP)
(3)
同時,采用相似的方式對文章表示進行自注意力計算, 獲得考慮本身信息之間關(guān)系的文章表示CP′. 將拼接的考慮問題和考慮自身的文章表示傳入時間卷積網(wǎng)絡(luò),得到下面表達式:
(4)
2.2.4 基于多層GRU 的答案預測模塊
在答案預測模塊中,使用SAN模型[9]的思路,采用多層GRU網(wǎng)絡(luò)來模擬多輪推理. 首先使用時間卷積網(wǎng)絡(luò)獲得問題的上下文表示:
(5)
(6)
最終答案的邊界概率由所有時間步平均得到:
(7)
其中:K為時間步的長度. 在訓練的時候,對每個時間步隨機應用dropout使部分時間步不影響答案預測.
2.2.5 分類器模塊
加入一個分類器更好地區(qū)分問題是否可答. 類似答案預測模塊,不可回答的概率fU通過初始狀態(tài)S0以及另一個文章表示加權(quán)和m0拼接起來得到:
(8)
預測答案將根據(jù)不可回答的概率與設(shè)定的閾值進行比較,當概率大于閾值時,判斷問題為無法回答. 當概率小于閾值的時候,選擇邊界概率最高的單詞作為答案的開始和結(jié)束邊界.
為了同時訓練出預測答案的模塊和分類器,將答案預測和分類器的損失結(jié)合在一起,損失L主要由片段預測損失Lspan和分類器損失Lclassifier組成:
L=Lspan+Lclassifier
(9)
答案預測損失由正確答案的開始邊界概率fBg和結(jié)束邊界概率fEg獲得, 其表達式如下:
Lspan=-(log2fBg+log2fEg)
(10)
分類器損失與是否無法回答的概率fU相關(guān), 表達式為:
Lclassifier=-(ylnfU+(1-y)ln(1-fU))
(11)
其中:y∈{0, 1},如果問題無法回答則y=1,問題可答則y=0.
本研究使用SQuAD2.0[15]數(shù)據(jù)集,其由SQuAD1.0[16]數(shù)據(jù)集中選出的問題-答案對以及新制定的無法回答問題組成. 這些無法回答的問題與可回答問題相似,但是無法使用文章回答. 訓練集中可回答樣例個數(shù)為86 821,無法回答的樣例個數(shù)為43 498;驗證集中可回答樣例個數(shù)為5 928,無法回答的樣例個數(shù)為5 945.
實驗中,學習率為0.02,優(yōu)化器算法為Adamax,dropout值為 0.1,GRU時間步長度為10,GRU隱藏層大小為128,時間卷積網(wǎng)絡(luò)層數(shù)為2層,時間卷積網(wǎng)絡(luò)隱藏層大小為256,時間卷積網(wǎng)絡(luò)卷積核大小為3,第n層的卷積網(wǎng)絡(luò)空洞值為2n-1.
采用的評估指標有兩種,分別為精確匹配(EM)值和F1值.
其中: 正確答案為strgold,而模型預測出的答案為strpred;wg為正確答案中的單詞數(shù)量;wp為預測出的答案的單詞數(shù)量,wc為正確答案和預測出答案中單詞的重合數(shù)量.
本研究選取以下模型作為基準實驗
BNA[15]. 該模型采用雙向注意力結(jié)構(gòu),并通過加入偏差的方式來生成問題無法回答的概率,最后將無法回答的概率與答案邊界的概率比較來判斷是否可以回答.
DOC[15]. 流水線型的問答模型,先提取出單個段落之后,再將其傳入模型進行預測.
R.M-Reader[17]. 采用重注意力機制來進行多輪推理的模型,重復問題對文章的注意力和自注意力過程以模擬多步推理.
R.M-Reader+Verifier[17]. 使用重注意力機制并添加問題是否可答的驗證器的模型,即在R.M-Reader上增加一個分類器用于判斷問題是否可以回答.
Joint SAN[18]. 使用雙向LSTM編碼,再使用GRU的多個時間步進行多輪推理的模型.
U-Net[19]. 該模型加入整體結(jié)點將問題和文章拼接來學習問題和文章的整體信息,并將其用于答案預測及是否可答分類.
表2 對比實驗結(jié)果
Tab.2 Compare experimental result (%)
模型評分結(jié)果EMF1BNA59.862.6DocQA61.964.8R.M-Reader66.969.1R.M-Reader+Verifier68.571.5Joint SAN69.372.2U-Net70.374.0本研究模型76.982.1
注:表中黑色數(shù)字表示最優(yōu)結(jié)果,下同.
為了驗證模型在機器閱讀理解任務(wù)的有效性,在訓練集上訓練且在驗證集中評定結(jié)果. 為了證明本研究實驗的合理性,把該實驗與現(xiàn)有的機器閱讀理解方法進行比較,結(jié)果如表2所示. 可以觀察到模型的表現(xiàn)相較于基準實驗在EM和F1值上分別提高了6.6%和8.1%. 所以,相較于基準實驗的模型,本研究的模型取得了較好的效果,由此驗證了時間卷積網(wǎng)絡(luò)的有效性.
在其他基準實驗中,使用的是LSTM與GRU等循環(huán)神經(jīng)網(wǎng)絡(luò)來編碼上下文信息,而該模型使用的是時間卷積網(wǎng)絡(luò). 相比于SQuAD2.0發(fā)布時使用的基準模型BNA和DocQA,在EM值上分別提升了17.1%和14.9%,在F1 值上分別提升了19.6%和17.3%. 而與R.M-Reader+Verifier模型采用多次注意力迭代模擬推理相比,該模型采用的是多層GRU,性能在EM和F1值上分別提升了8.4%和10.6%. 相較于使用LSTM編碼上下文信息的Joint SAN模 型,在EM和F1值上獲得了7.6%和9.9%的提升. 在U-Net模型中,使用一個結(jié)點來考慮問題和文章共同的整體信息,而該模型運用時間卷積網(wǎng)絡(luò)的特性來考慮整體信息,能更全面地考慮整體信息,在EM和F1值的表現(xiàn)提升了6.6%和8.1%.
3.5.2 針對時間卷積網(wǎng)絡(luò)的對比實驗
為了觀察時間卷積網(wǎng)絡(luò)層數(shù)對性能的影響,分別對不同層數(shù)的時間卷積網(wǎng)絡(luò)進行實驗,結(jié)果如表3所示. 從表3可以發(fā)現(xiàn),當時間卷積網(wǎng)絡(luò)層數(shù)為2層的時候,表現(xiàn)比其他層數(shù)的時間卷積網(wǎng)絡(luò)更好. 同時,為了更細致地了解時間卷積網(wǎng)絡(luò)在不同類型問題上的表現(xiàn),進行了時間卷積網(wǎng)絡(luò)和其他循環(huán)神經(jīng)網(wǎng)絡(luò)的對比實驗. 在其他網(wǎng)絡(luò)類型的實驗中,用對應的網(wǎng)絡(luò)來替換所有的時間卷積網(wǎng)絡(luò), 結(jié)果如表4所示. 從表4觀察到,本研究模型主要在不可回答問題上有優(yōu)于循環(huán)神經(jīng)網(wǎng)絡(luò)的表現(xiàn),而在可回答問題上的性能稍有不足. 分析認為,時間卷積網(wǎng)絡(luò)相比于LSTM和GRU雖然可能在考慮不相鄰文本之間關(guān)系有所不足,但是更能保留文本的整體信息,有更準確的文章整體信息能更好地判斷一個問題是否無法回答,所以在是否可回答的判斷上,比LSTM和GRU表現(xiàn)優(yōu)秀,這使得最終的總體結(jié)果能優(yōu)于LSTM和GRU.
表3 不同層數(shù)的實驗結(jié)果
表4 不同問題類型實驗結(jié)果
本研究提出一個基于時間卷積網(wǎng)絡(luò)的機器閱讀理解方法,采用了時間卷積網(wǎng)絡(luò)來編碼問題和文章表示,使得問題和文章表示帶有上下文信息并更好地考慮文本的整體信息. 通過與基準實驗的對比表明,所提方法能夠更有效地考慮文本的整體信息,證明了該方法的有效性. 但是該方法沒有考慮到文章對問題表示的影響,未來將通過注意力機制的方式引入文章對問題的影響,并使用多種注意力來進行研究.