霍 歡,王忠萌
(1. 上海理工大學 光電信息與計算機工程學院,上海 200093;2. 復旦大學 上海市數據科學重點實驗室,上海 201203)
機器閱讀,即讓機器閱讀自然語言文本,并根據該文本進行相應問題的回答。一般而言,其輸入輸出均為非結構化的文本序列,這要求機器能夠從原始的文本中分析出所包含的信息。同時,當一個問題對應多個獨立的篇章時,還要求機器對各個篇章進行篩選,然后從該篇章內得到答案。在整個過程中,從文本中提取問題相關的篇章特征尤為重要。同時,在多個篇章的情形下,通過篇章本身的特征,來判斷篇章本身對答案的貢獻程度也是不容忽視的一個環節。
機器閱讀任務中,關于用傳統方法直接從篇章和問題文本中提取特征。Richardson等[1]在篇章上進行滑動窗口,然后用詞袋模型求取篇章片段與答案重疊程度,以此構造特征。Chen等[2]提取單詞頻率、句子共現、依賴解析等特征。Rajpurkar等[3]使用成分分析、詞性標注等特征。然而,這些傳統方法受句法分析結果影響較大。當句子與問題表述不一致時,機器閱讀的性能會明顯降低。
隨著深度學習方法在自然語言處理方面取得廣泛成功。研究者們開始使用深度神經網絡對篇章和問題文本進行建模得到特征,并證明其具有一定的有效性。使用LSTM[4]或GRU[5]進行基本建模的方法成為主流,同時注意力機制將答案與文本對齊作為下一層的特征。如Wang[6]等提出Match-LSTM提取特征,Cui[7]等使用GRU編碼,并使用雙重注意力機制來構建特征。另一方面,卷積網絡在機器閱讀中得到運用,對篇章內每個片段進行卷積運算,從而得到特征。Yin[8]等使用兩個卷積層來提取篇章特征,第一個卷積層用來表示句子,第二個卷積層用來表示片段。Wu[9]等使用堆疊的膨脹卷積來進行句子的編碼。
在實際的應用場景中,機器閱讀需要面臨更多噪音的挑戰。由于文章來源于真實生活,生活用語中會存在著大量的不規范詞法、語法、句式。因而,需要多角度特征的充分結合,來更精準地理解篇章信息。本文針對問答式中文機器閱讀,提出細節、片段、全文三個深度層次特征模型。在讀入的文本進行詞向量表示后,使用循環網絡進行基本建模。然后,融合注意力作為上下文特征,進而利用殘差的堆疊卷積、高速公路網絡生成片段特征。同時,利用循環網絡對上下文進行歸納。在2018機器閱讀理解技術競賽,本方法取得較好的結果。
當前,主流的機器閱讀模型一般分為輸入、混合、建模、輸出四個部分,分別進行篇章與問題各自的編碼、篇章和問題的混合特征構建、特征的建模、最終答案的輸出。
針對篇章和問題的混合,一般使用注意力機制完成對齊操作[10]。Wang等[6]提出篇章對問題的注意力,并用于機器閱讀。隨后,Wang等[11]提出參數注意力對問題編碼,Seo等[12]等提出問題對篇章的最大值注意力。進一步地,有研究者關注卷積特征的提取,如Yu[13]等將卷積層和自匹配注意力合并為一個編碼塊,然后進行堆疊。這些模型的缺點是數據流向和特征層次單一。本文在篇章和問題注意力混合的基礎上,使用基于卷積、若干層高速公路、反卷積的片段特征網絡。由于反卷積的存在,能夠避免卷積后填充序列兩端帶來的影響,同時利用了殘差[14]模塊來緩解深層網絡的難以訓練的問題。最后,結合以原文的細節特征,以多數據流的方式進行文本信息的精準地把握。
針對模型輸出部分,對多篇章內的答案排序問題,Tan[15]等提取篇章、問題為各自向量表示,然后通過全連接層進行打分。而Wang[16]等提出各個答案之間的驗證。以上兩方法按照篇章對問題或答案對答案的相似性來進行篇章的劃分。以上兩種方法為了使模型學習到對篇章的評價,均運用了獨立的損失函數。而本文使用包含問題、篇章、問題與篇章的多信息的來對每個篇章上下文的評價,使得信息更為充分。同時,本文將結果進行線性變換,直接影響輸出層的輸出。
本文貢獻如下: 首先,提出一種提取片段特征的網絡模塊,利用深層卷積網絡結合高速公路網絡提取深層次片段特征。其次,提出了一種提取并利用全文特征的方式,將問題與篇章的多種信息融合一起對全文歸納。最后,設計細節、片段、全文三個層次的特征融合流程,從而較好地實現真實場景下的中文機器閱讀。
本文所針對的問題為面向多篇文章的中文閱讀理解,其答案為文章中的一個片段。具體在模型中,該任務中的輸入為若干個篇章{P1,P2,…},以及一個問題Q。其輸出為三個整數k,as,ae,分別為對應的篇章編號、該篇章答案片段起始位置、該篇章答案片段終止位置。這樣,可以得到唯一的文本片段,作為最終的輸出。
本模型由六個模塊組成,分別為輸入層、混合層、片段層、建模層、歸納層、輸出層。由于模型在處理單篇文檔和多篇文檔時,唯一的不同是輸出部分。為便于描述,我們接下來均以單個篇章的情況來介紹,最后在輸出層具體給出兩者不同的解決方案。
模型結構與數據流如圖1所示,圖中加粗的箭頭表示三種特征數據流。模型以篇章和問題分詞后的各組符號(token)為輸入,轉換為詞向量后經由雙向LSTM編碼,然后經混合層進行問題與文章的混合。一方面,混合后的結果經過片段層,提取片段的特征。然后將該片段特征與篇章的原始編碼作為細節特征一起,經由雙向LSTM一起進行建模。另一方面,該混合特征通過歸納層,生成對文章的歸納。最后,用該歸納與建模后的結果一起進行獨立的線性變換,并由softmax函數變換后的概率值,作為最終答案起始和終止位置的概率輸出。

圖1 深度層次特征模型框架

式(1)~式(4)中,UP∈M×h為篇章的編碼矩陣,UQ∈N×h為問題的編碼矩陣。M,N分別為篇章、問題的長度,h為正反兩向的隱藏層維度之和。
混合層將問題和答案充分混合,為了使后面的各層可以根據問題確定答案。該層使用了兩種注意力機制,分別是文檔對問題的注意力和問題的參數注意力。最后將得到的兩個注意力矩陣與篇章編碼進行拼接,得到最終的混合表示如式(5)~式(12)所示。
式(5)~式(12)中,S∈M×N為篇章與問題的相似矩陣,如Si,j即為和的內積相似度。αt∈1×N為t處篇章編碼與問題編碼UQ之間的相似向量為注意力矩陣M×h的第t行。同樣,T∈M×N為問題的參數相似矩陣,v∈1×h為可訓練的參數,β∈1×N為問題編碼UQ與參數v之間的相似向量1×h為注意力向量,平鋪后得到注意力矩陣。G∈M×3h為拼接后的輸出。
片段層的目的是提取出片段的特征,從而使得模型能夠關注于片段信息。本文采用卷積網絡來進行相鄰若干單詞的混合,該片段層的結構如圖2所示。

圖2 片段層結構
首先,上一層的混合表示經過非填充的卷積層,然后經若干高速公路層[17]進行變換,最后經由反卷積層,同時計算殘差[14]作為該模塊最終輸出,如式(13)~式(17)所示。
其中,

(18)
g=σ(Wgx+bg)
(19)
highway(X)=χ(X,WH)·g+X·(1-g)
(20)

(21)
式(18)~式(21)中,bC,bH,bD,WC,WH,WD均為可訓練參數,*為互相關運算符,χ為非線性變換,H∈M×3h為輸出。
建模層接收原始細節特征和片段特征,進行機器閱讀過程的建模,其輸出進而可以與歸納層一起,經過輸出層變換為最終答案的起始和終止位置。如式(22)所示。
M=BiLSTMM([UP;H])
(22)
其中,M∈M×h為輸出。
歸納層對文章整體做出歸納。本模型使用雙向LSTM編碼和參數注意力兩個方面進行歸納,最后經過線性變換,得到歸納結果。
輸出層將建模層的結果H,和歸納層的結果R融合,作為輸出。我們使用兩個不同的線性變換,并用softmax函數來分別得到答案起點位置和終點位置的概率輸出,如式(28)~式(30)所示。
當有多個篇章時,將所有篇章拼接后的建模層和歸納層特征,按照第一個維度拼接即可,進而整體進行線性變換與softmax輸出。在獲取答案片段的操作中,對篇章內的各個概率進行答案片段定位,最終以as×ae最大值對應的篇章編號為k,該as,ae即為最終的答案起始位置和終止位置。
2018機器閱讀理解技術競賽采用He等[18]發布的面向真實應用場景的大規模中文閱讀理解數據集DuReader。該數據來自于真實的百度搜索和百度知道網頁,其話題涵蓋了教育、文化、日常等各方面的內容。該數據集對問題進行了分類,從問題的呈現類型上,將問題分為實體、描述和是非三類;從問題的意義上,將問題分為事實和觀點兩類。統計情況如表1所示。

表1 問題分類統計(%)
本實驗選用該數據集,共 30 萬條數據,其中包括 27 萬訓練集、1 萬驗證集和 12 萬測試集。本實驗沒有擴充數據集,僅在該數據上進行。該數據集的評價方式為模型預測的答案片段與真實答案片段之間字符級 Rough-L[19]和Bleu-4[20]。
由于該數據集的答案并非是嚴格的篇章連續片段,因此我們需要對答案進行定位,來確定答案起始和終止位置的訓練標簽。
該預處理分為三個步驟。首先,對每個文檔和每個答案進行如下匹配。匹配篇章中第一次出現與答案分詞相同的有意義詞匯,包括中文、英文和數字。其次,將匹配得到的結果區間進行合并。最后,將各個文檔對應的匹配度排序,選取最大匹配度作為目標文檔,并選取該區間為答案的區間。
詳細地,我們采用的各個函數的偽代碼如下。
函數一,獲取一個篇章和一個答案的最大匹配片段


續表
函數二,獲取一個篇章和一個答案所有的匹配片段

輸入: 一個篇章和一個答案片段輸出: 所有匹配片段設已匹配列表為空設篇章指針為零設答案指針為零while 真 do if 篇章指針或答案指針越界then break end 按照函數一得到匹配結果 if 匹配結果非空 then 將答案指針后移到第一個非符號位 if 答案指針越界 do break end end 匹配結果添加入匹配列表 篇章指針加一 答案指針加一end返回匹配結果
函數三,合并匹配區間


續表
函數四,匹配各篇章和各答案

輸入: 各篇章和各答案輸出: 每個篇章與各答案的最大匹配區間設總匹配列表為空for 每個篇章 then 設候選區間列表為空 for 每個答案 then 按照函數二得篇章答案匹配列表 按照函數三得合并后的匹配列表 if 匹配列表為空then break end 得到列表內的最大匹配結果 if 匹配長度大于閾值 then 候選區間列表添加該匹配 結果和匹配度 end if 候選區間列表非空 then if存在答案很短的情況 then 最終匹配列表添加候選區間 else 最終匹配列表添加最大匹配的 候選區間 end endend返回總匹配列表
由于按照此算法,某些答案無法匹配到原文,因而最終得到245 200條訓練樣本與8 797條驗證樣本。
本實驗的硬件環境如下,處理器為Intel I7 7700k, 內存大小為32G,顯卡為NVIDIA GTX 1080。軟件環境如下,系統為Ubuntu16.04,開發語言為Python3.6,深度學習框架為PyTorch0.4.0。
在模型準備階段,設計篇章最大長度為500,問題最大長度為50,最大篇章數為5。詞向量為GloVe[21]詞向量,在數據集本身上進行訓練,設置詞匯表大小為50萬,維度為200。
在模型實現階段,將詞向量設置為固定不變。各個循環網絡的隱藏層統一設置為100。設計卷積層如下,卷積核大小為4,步長為2。高速公路網絡設為3層,非線性函數為ReLU函數。除編碼層LSTM為雙層堆疊外,其他層的LSTM均為單層。在模型的詞向量輸出處和各個循環網絡輸出處,我們使用設計Dropout[22]率為0.2。
在模型訓練階段,使用Xavier[23]初始化各個參數,訓練器為Adam[24],其學習率為0.001,并每隔1代進行減半。L2正則系數為0.001。Batch大小為24。
經過15小時的訓練,模型運行了7個epoch的,其損失值變化如圖3所示。

圖3 模型損失值變化圖
在模型經過每個epoch后,對驗證集進行一次驗證,各個驗證結果的不同指標變化如圖4所示。
為了進一步探究本模型各層次特征的作用及影響,我們在驗證集上進行實驗。設計不同的特征組合,然后分別在不同的任務下進行Rouge-L和BLEU-4分數的計算,得到結果如圖5、圖6所示。

圖4 模型驗證結果變化圖

圖5 不同特征組合在各數據來源下的表現

圖6 不同特征組合在各問題類型下的表現
綜合兩圖來看,首先顯而易見本模型增加特征之后,其性能大體上會得到提升;其次,根據提升的程度來看,片段特征的作用較為明顯,而全文特征的作用較弱;最后,從不同評測指標來看,相較于Rouge-L分數,BLEU-4分數的提高要稍大一些。
對于不同問題類型下的表現,片段特征在描述類與實體類問題表現均較好,其效果可以充分體現;而全文特征僅在描述類問題上體現出優勢,可知描述類問題中更需要對全文的概括與評價,并且在某些情況下該特征并非完全必要。對于不同數據來源的表現,主要集中在百度搜索類型上的提高。這說明,在噪音較大的情形下,更全面的特征可以帶來更好的性能。而對于較規范的數據,添加多層次特征帶來的提升較為有限。
對完整模型在測試集上進行評測,由結果可知,本模型在單模型上獲得57.55的Rouge-L與50.87的Bleu-4分數,較為良好地適用于大規模真實場景機器閱讀。具體地比較如表2,表3所示。

表2 模型在不同數據來源下的分數

表3 模型在不同問題類型下的分數
由于無法準確獲知其他模型的參數并控制變量,因而難以通過總準確率的絕對差異直接比較。但可通過比較各個子任務準確率的相對差異,來分析模型的性能,進而做出評價。為此將其他各模型與本模型在數據來源、問題類型的分數之差,分別繪
制到熱力圖上,如圖7、圖8所示。
觀察圖7與圖8,與本模型的測試結果類似的模型有BiDAF+S+Predict和D-Reader-L2+cls。首先,我們與前者進行比較。該模型的總體分數要高于本模型。然而,從數據來源上,百度知道部分的分數不及本模型。從問題類型上,實體準確率也不如本模型。本模型與之相比, 主要的弱項在于百度搜索部分,以及描述問題部分。究其原因,出于減少模型復雜度的考慮,本模型輸出層設計較為簡單,因而長距離建模受之前各層循環網絡限制,對問題描述類問題在某些場景下或許稍顯不足。

圖7 模型在不同數據來源下的分數差異

圖8 模型在不同問題類型下的分數差異
接下來我們與后者比較。本模型分數唯一在實體的Rouge-L分數略有不及。該模型的分數較前后其他各組模型相比均較高,或許與其模型做了相應改進有關。由于本文針對答案片段型 機 器 閱讀,因而對于實體分散在篇章各處的情況,只能得到其中一個片段,故在該情況下性能會降低。
本文針對面向真實場景的中文機器閱讀,為了更有效地把握文本呈現的復雜場景信息,提出一種深度層次網絡模型。從細節、片段、全文三個角度,對篇章材料進行考察。對于細節特征,本文利用原始的循環網絡編碼;對于片段特征,設計了深度卷積網絡的實現;對于全文特征,設計了注意力機制和循環網絡的實現來提取問題與篇章融合信息。最后,通過完整的數據流,得到最終的結果,在2018機器閱讀理解技術競賽中的實驗取得較好效果。