閆維宏, 李少博, 單麗莉, 孫承杰, 劉秉權
1(人民網 傳播內容認知國家重點實驗室, 北京 100733)
2(哈爾濱工業大學 計算學部, 哈爾濱 150006)
對于機器而言, 自動地閱讀并理解文本是一項頗具挑戰的任務, 它需要機器能夠依照現實世界中的事實和常識來剖析自然語言所表述的內容[1]. 機器閱讀理解(machine reading comprehension, MRC)旨在以問答的形式來理解文章, 其輸入是自然語言形式的問題, 以及包含了能夠支撐該問題回答的證據文章, 輸出則是問題對應的答案. 抽取式機器閱讀理解規定問題的正確答案會以文本片段的形式出現在輸入文章中, 要求在文章中“抽取”出正確的答案片段.
在以GPT[2]和BERT[3]為代表的大規模預訓練語言模型出現之前, 該類任務通常的解決方法是通過循環神經網絡對輸入問題和文章進行編碼并交互, 其模型結構主要包括4個部分, 分別是嵌入層、編碼層、交互層和輸出層. 問題和文章以詞序列的形式分別輸入到模型中, 嵌入層首先將問題和文章的輸入序列轉換為詞向量序列, 編碼層對詞向量序列進行編碼后得到自然語言序列對應的上下文編碼, 交互層負責將問題和文章的上下文編碼進行交互, 加強問題和文章之間的相互感知, 最后由輸出層計算出答案片段在文章中的具體位置. 在這一經典結構的基礎上, 許多工作對其進行了修改. Attentive Reader[4]將細粒度注意力機制應用到模型中來加強交互層的理解能力. Match-LSTM[5]將 Match-LSTM 以及 Answer Pointer 模型相結合, 將Pointer Net中指針的思想首次應用于閱讀理解任務.BiDAF[6]通過雙流注意力機制來提高問題與文章的交互能力. QA-NET[7]利用自注意力機制和CNN[8]來進行文本的編碼, 相比于RNN[9], 其并行運算能力提高了訓練速度, 也取得了當時在SQuAD[1]數據集上的最優預測精度.
盡管上述各類方法使得機器閱讀理解模型性能逐漸提高, 但是這些模型僅僅使用固定的檢索表(look-up table)映射得到詞編碼的方式具有一些無法避免的缺陷, 例如無法解決一詞多義等問題[10]. 而BERT[3]等預訓練模型引入動態編碼的方式, 利用大規模語料來獲取更深層且更加匹配上下文的語義表征, 極大地提高了各類模型的性能, 在機器閱讀理解數據集SQuAD 1.0[1]和SQuAD 2.0[11]上的表現甚至超越了人類. BERT做到如此出色的性能提高引起很多相關領域研究者的興趣, Jawahar等人[12]通過探測任務挖掘BERT中的語言學信息, 實驗表明BERT的低層網絡學習到了短語級別的信息表征, 中層網絡學習到了豐富的語言學特征, 而高層則學習到了豐富的語義信息特征. 而針對閱讀理解任務, Si等人[13]的工作表明對BERT的微調主要學習到文本中的關鍵詞如何引導模型進行正確的預測, 而非學習語義理解和推理. Albilali等人[14]則通過對抗樣例表明基于預訓練的語言模型僅僅依靠表面的線索, 如詞匯重疊或實體類型匹配, 就能獲得有競爭力的性能; 同時, 預測的錯誤可以由BERT的低層網絡所識別. Aken等人[15]的工作則從BERT不同編碼層的粒度揭示了BERT回答問題的過程, 作者將問答模型由低層至高層的輸出分別表示為語義聚類, 聚類后語義與問題中相關實體的鏈接, 對于支持問題事實的抽取以及答案片段抽取4個階段, 并將該過程與人類閱讀理解的過程進行了類比.
目前的工作大都關注于為什么BERT的內部表征能夠如此有效地完成機器閱讀理解任務, 對顯式地在BERT引入額外的特征的研究則較少. 類似工作是SemBERT[16], 該模型通過將BERT輸出的上下文特征與語義角色特征相拼接, 顯式地利用這兩種特征對來抽取答案片段, 在SQuAD 2.0數據集上, SemBERT取得了優于原始BERT模型的表現.
受此啟發, 語義角色之外其他的詞法或句法特征同樣值得我們關注. 人類在理解文本的過程中是先驗地知道某些詞法或者文法特征的, 例如, CMRC2018中的問題“前秦對前燕發動的滅國戰爭是誰主導的?”中,我們可以通過問題中的疑問代詞“是誰”, 推斷出問題的答案是“人名”, 從而更加關注文章中命名實體特征為“人名”的文本片段“慕容垂”. 而對于類似這樣的詞法、句法特征, 人類同樣具有對其理解的能力, 但是在當前的主流模型中并未體現. 為了填補這部分工作的缺失, 我們提出融合詞法和句法特征的抽取式機器閱讀理解模型. 我們的主要工作如下:
(1) 在BERT輸出的上下文表示的基礎上, 顯式地引入多詞法和句法特征, 來探究這些特征是否能夠在BERT預訓練語言模型所提供上下文特征的基礎上, 進一步增強機器閱讀理解的性能. 其中詞法特征包括命名實體特征和詞性特征, 句法特征則包括依存分析特征.
(2) 設計基于注意力機制的自適應特征選擇方法對各類特征進行融合, 并探究不同文本特征對BERT模型的影響.
(3) 在公開數據集CMRC2018上, 與基準模型進行對比, 本文所提出的顯式融合詞法和句法特征的抽取式機器閱讀理解模型在F1和EM指標上分別取得了0.37%和1.56%的提升.
在本節中, 我們首先對本文方法進行概述, 隨后對基于BERT的抽取式閱讀理解模型進行詳細介紹, 并闡述我們使用到的詞法句法特征, 最后描述各類特征融合的動態融合方法, 并得到最終的輸出.
抽取式機器閱讀理解可以形式化地定義為: 給定一個包含 m 個字符的問題q =(q1,q2,···,qm), 一個包含n 個字符的文章 p=(p1,p2,···,pn) 以及一個包含l個字符的答案 a =(a1,a2,···,al) , 其為 p中的一個子序列. 我們的目標是學習一個機器閱讀理解模型f, 來根據輸入文章 p 和 問題q 得 到輸出答案a, 如式(1)所示:

本文工作的結構如圖1所示, 我們利用已有的模型對輸入數據進行預處理, 得到文本特征. 我們的問答模型首先使用BERT對問題和文章進行編碼得到編碼后的輸出 HC. 接下來, 將HC與表征為向量的文本特征通過自適應的注意力機制進行融合, 再使用多層Transformer encoder進行編碼, 得到融合特征的編碼表示HF. 將二者通過自適應的注意力特征融合層, 得到我們最終的輸出H , 并利用一個答案位置分類器得到最終的答案開始位置得分和結束位置得分.

圖1 融合詞法和句法特征的抽取式機器閱讀理解模型結構
本文使用BERT作為基準模型來解決閱讀理解問題. 本文任務輸入的問題和文章是一串字符, 神經網絡無法直接處理這樣的數據. 在預訓練模型出現前通常的做法是使用靜態詞向量將不同的詞映射為對應的高維向量, 例如基于局部上下文窗口編碼單詞的Word2Vec[17]和引入全局統計信息的GloVe[18]. 而BERT則使用基于注意力機制的Transformer encoder, 利用大規模語料通過其強大編碼能力將文本編碼為具有上下文信息的文本向量.
針對本文所涉及的問答任務這類的上下句任務,BERT通常會將分字后的問題的詞序列和文章的詞序列連接起來, 輸入序列如式(2)所示:

其中, qi表 示問題的詞序列中第i 個 字符, pi表示文章的詞序列中第i 個字符; [ CLS] 和[ SEP]為BERT中定義的特殊標記, [ CLS]表 示序列開始, [ SEP]則是分隔標記, 用來分隔問題和文章以及標識輸入序列的結束. 隨后, 我們利用BERT的Embedding層將輸入序列分別映射為詞向量(token embedding)、類型向量(segment embedding)和位置向量(position embedding), 將三者相加即為BERT的最終輸入特征. 接著通過多層Transformer encoder進行編碼, 進而獲得問題與文章交互的向量表示HC:

其中, l 表示輸入序列長度, d表示BERT輸出的每個詞對應的向量的維度, 在本文中d =768,表示經由BERT編碼后的第i個詞對應的上下文表征.
接下來, 通常的做法是使用一個全連接層作為分類器得到答案開始位置和結束位置的得分向量, 如式(4)和式(5):

在后續的特征融合模塊中, 我們將利用BERT輸出的上下文向量HC與詞法和句法特征進行融合.
當前的數據集僅僅包括文本形式的問題和文章,并未包含所需的額外詞法和句法特征, 為了獲取額外特征, 我們利用現有模型進行標注, 并將這些特征進行組合, 其中詞法特征包括詞性特征和命名實體特征, 句法特征包括依存分析特征. 為了使得我們的文本特征閱讀模型盡可能地與BERT閱讀模型在輸入層的分布相同, 我們以單字粒度進行分詞, 使得各個特征構建的向量與BERT預訓練模型最大長度相同, 以便直接進行拼接. 文本的特征示例如圖2所示.

圖2 文本特征標注示例
詞性(part of speech, POS)特征: 我們使用詞性標注的CTB規范[19], 包括37個詞性標簽. 以單字切分文本后, 使用BIO規則對特征進行重構, 即某個詞w 的詞性為 P, 按字切分后為{ z1,z2,···,zn}, 我們將其標注為{B-P,I-P,···,I-P}. 對于BERT中的3種特殊標簽[ CLS]、[SEP]和[ UNK], 我們標記為O. 共計75種標簽, 我們將其轉換為75維的one-hot向量.
命名實體(named entity, NE)特征: 我們使用MSRA的命名實體標注規范, 該規范源于中文文本標注規范(5.0 版), 其中包括專有名詞(NAMEX)、時間表達式(TIMEX)、數字表達式(NUMEX)、度量表達式(MEASUREX)和地址表達式(ADDREX)五大類及其下屬的31個子類. 我們同樣使用BIO規則進行標注, 并將其轉換為63維的one-hot向量.
依存分析(dependency parse, DEP)特征: 該特征用來表示句法結構中各項之間的依賴關系[20], 共44項.我們同樣使用BIO規則進行標注, 并將其轉換為89維的one-hot向量.
在處理這些特征標簽時, 我們需要將其轉換為向量的形式. 首先, 我們對詞性、命名實體和依存標簽分別通過一個嵌入層映射為固定維度的向量, 并分別將這些特征與上下文特征 HC通過相加的方式融合, 從而將不同的特征融入上下文表示, 見圖3. 接著我們使用單個淺層的特征編碼器對特征向量進行編碼, 該編碼器同樣是Transformer encoder.

圖3 實體特征輸入模塊
編碼后我們便得到了詞性特征的向量表示HP(POS),命名實體識別特征的向量表示 HN(NE), 以及依存分析特征的向量表示 HD(DEP), 編碼過程可以如式(6)-式(8)所示:

其中, Emb和 T ransformer分別表示嵌入層和編碼層. 每個詞 xi最 終對應的融合特征hi則通過對3種不同層次的特征進行加權求和得到, 注意力權重使用雙線性注意力機制[21]得到, 如式(9)-式(11):


根據上下文編碼對各個特征的注意力權重, 將所有特征進行加權融合, 得到最終的融合了詞法與句法特征的問題與文章交互向量表示 H , 如式(12)-式(15),我們使用全連接層對 H 進行二分類, 分別得到每個詞作為答案開始位置和結束位置的概率, 并使用Softmax得到歸一化后的起止位置的最終得分.

本文使用的數據是哈工大訊飛聯合實驗室機器閱讀理解組(HFL-RC)于2018年發布的中文篇章片段抽取型閱讀理解數據集CMRC2018[22], 由近20 000個由人類專家在維基百科段落中注釋的真實問題組成. 我們使用其給出的訓練數據集來進行模型的訓練, 用其驗證數據集來對模型進行評估. 圖4是該數據集的樣例, 包括1篇文章以及2個問題, 其中藍色文字表示與問題1相關的內容, 紅色文字表示與問題2相關的內容.

圖4 CMRC2018數據集示例
針對基于BERT模型的機器閱讀理解任務, 我們對數據進行了一些預處理來使得其符合BERT的輸入限制. 首先我們對數據進行字粒度的切分, 并將問題和文章進行拼接, 并固定輸入的序列長度為512. 若輸入的數量超出這個長度, 則利用128的滑動窗口來切分為多份數據.
而對于文本特征, 我們則利用已有的模型對實驗數據進行了詞性標注、命名實體識別以及依存分析的預處理. 接著以BIO規則進行標注, 以適應字符級別的輸入粒度.
對于抽取式機器閱讀理解模型, 我們需要評估答案預測值和真實答案之間的字面匹配程度, 本文采用了文獻[1]中的EM和F1兩個指標. EM為模型預測的驗證數據集中的答案與真實答案完全一致的百分比,而F1為機器學習中常用的指標, 是精確率與召回率的調和平均. 在本文場景下, 將答案的預測字符串與真實值各自按字符切分后, 分別視作詞袋, 并計算二者的F1值來粗粒度地評估它們的匹配程度.
算法模型的搭建使用深度學習框架PyTorch[23]實現, 其中的基準模型使用針對中文語料進行預訓練的Chinese-roBERTa-wwm-ext模型[24], 相較于最初的中文預訓練模型BERT-base-Chinese[6], 該模型將掩碼語言模型(masked language model)的訓練策略由遮蓋單個字變更為遮蓋整個中文詞, 且使用了更大規模的中文語料, 其在相關下游任務上有更強的表現.
我們使用最后一層的輸出作為上下文表示特征,Aken等人[15]和Cai等人[25]的工作也分別展示了在機器閱讀理解任務上, BERT中越高層的編碼輸出越有效. 模型的主要參數設置如下: batch size設置為4, 學習率為3E-5, 并采用學習率預熱的策略[26], dropout設置為0.2, 使用訓練集微調兩個輪次后, 在驗證集上取得了不錯的基準效果.
接下來我們分別嘗試將BERT的輸出與文本特征的輸入進行交互. 共設置了5組實驗, 分別基準模型的實驗, 在基準模型基礎上分別融合詞性特征、命名實體特征和依存分析特征的實驗以及融合全部特征的實驗. 如表1所示.

表1 對照實驗組別與模型
對于每組實驗, 我們分別設置了5個隨機種子進行多次實驗, 使用5次不同隨機種子實驗中性能的最佳結果以及平均結果作為該組模型實驗的最終結果,以排除一些訓練過程中的隨機性.
(1) 模型閱讀理解能力. 在數據集CMRC2018上的實驗結果見表2, 其中加粗行分別是添加單特征的最優實驗結果和添加全部特征的實驗結果.

表2 在數據集CMRC2018上的實驗結果 (%)
表2展示了基準模型Chinese-roBERTa-wwmext經微調后, 最高可以達到86.21%的F1匹配率和67.85%的精確匹配率. 在此基礎上分別添加詞性特征、命名實體特征、依存句法特征進行實驗, 實驗結果表明每一種特征的融合都能夠帶來模型的精度的提升, 且對于EM值上的提高要明顯高于F1值. 其中詞性特征帶來的匹配率提升效果最為顯著, 可以達到85.85%的平均F1匹配率和67.46%的平均EM匹配率, 相較于基準模型分別可以提升0.3%和0.6%, 而最優輪次的EM相較于基準模型提高0.87%.實體特征和依存分析特征也同樣在兩個評估標準上相較基準模型有一定的提高, 但較詞性特征而言并不顯著.
同時添加3項特征后, 實驗結果可以達到85.91%的平均F1匹配率和68.27%的平均EM匹配率, 相較于基準模型分別可以提高0.35%和1.43%, 相較于只融合單特征的實驗結果, EM值得到了接近一個百分點的提升. 而我們的最優模型達到了86.58%的F1匹配率和69.41%的EM匹配率, 相較于只使用預訓練BERT模型, 分別可以得到0.37%和1.56%的提升.
基于上述實驗結果以及分析, 我們的方法可以在預訓練模型的基礎上得到1.5%左右的EM匹配率提升, 證明了提出方法的有效性, 并且在3種特征中, 詞性特征更加能夠幫助閱讀理解模型進行預測. 實驗結果也驗證了在BERT等預訓練模型中引入顯式的語言學知識同樣能夠幫助機器進行閱讀理解. 至于EM值的提升如此顯著, 我們分析認為顯式的語言特征本身就是更加結構化的特征, 因此能夠更有效地幫助機器歸納總結出更加精確的答案起始位置.
(2) 效率. 我們對“對預訓練模型進行改進”與“引入顯示語言學特征”這兩種方法的細節進行比較, 包括訓練的數據規模與算力成本, 以及各自在CMRC2018數據集上帶來的性能提升百分比, 對比結果見表3. 其中,B表示10億.

表3 對預訓練模型改進與引入顯示語言學特征兩種方法的比較
預訓練模型改進: Cui等人[24]提出的BERT-wwmext在BERT的基礎上, 將詞掩碼方式設置為中文全詞覆蓋, 并引入了包括百科、新聞以及問答頁面的訓練文本, 詞量高達5.4 B. 訓練步數的數量級也高達百萬,在TPU v3上通常需要數周. 最終在CMRC2018驗證集上分別可以得到0.8%和0.1%的EM和F1指標提升. 而RoBERTa-wwm-ext進一步移除了下句預測任務, F1和EM分別提升了1.1%和1.6%.
引入顯式語言學特征: 本文方法引入詞法和句法特征, 在遠小于0.1 B詞量的數據集上利用現有模型進行標注, 融合了分詞結果和各類特征的訓練集大小為107 MB, 以4為batch size在3080Ti上訓練2個輪次,共需要20 min, 而EM和F1指標最高可以提升1.56%和0.37%.
本文方法相較對預訓練模型進行改進, 使用遠少于后者的數據與算力成本, 在閱讀理解數據集上獲得了持平甚至更優的指標提升. 可見本文方法較為高效,同時也證明了引入顯式的詞法句法等語言特征能夠為特定的下游任務帶來較大的性能提升.
本文提出一種融合多種特征的抽取式機器閱讀理解模型, 顯式地引入包括詞性、命名實體的詞法特征以及依存分析的句法特征, 同時設計了基于注意力機制的自適應特征選擇模塊, 進一步提升了機器閱讀理解模型的性能. 在抽取式機器閱讀理解數據集CMRC2018的實驗上表明, 本文提出的機器閱讀理解模型能夠通過極低的算力成本, 在F1和EM指標上取得0.37%和1.56%的提升.
實驗結果驗證了我們方法的有效性. 對于閱讀理解模型而言, 詞性特征相較命名實體特征和句法依存分析特征更能夠幫助模型理解文本. 同時也說明了對于機器閱讀理解這類難度較高的自然語言處理任務,盡管BERT等預訓練模型帶來的表征能力是突破性的,但是語言本身的一些特征也具有不可忽視的作用. 在未來的研究中包括但不限于詞法、句法等各類語言學特征同樣值得更多的關注, 它們在與預訓練模型的結合中究竟起到了怎樣的作用以及這些特征的重要程度都是值得關注的研究課題, 同時在二者的結合中也可以進一步幫助我們了解BERT等預訓練模型對于語言的理解機制.