王士浩,王中卿,李壽山,周國棟
(蘇州大學計算機科學與技術學院,江蘇蘇州 215006)
事件是信息的一種表現形式,其定義為特定的人、物在特定時間和特定地點相互作用的客觀事實。事件抽取旨在將非結構化的文本以結構化的形式呈現。在事件抽取過程中,標志某個事件發生的詞稱為觸發詞,一般為動詞或名詞,而事件的參與者稱為論元,一般為實體、時間、數值等。事件抽取包含事件檢測和事件論元抽取2 個子任務,事件檢測是識別出文本中的觸發詞并對事件類型進行分類,事件論元抽取則是識別出事件的論元并對論元角色進行分類。對于例句“在約旦河西岸,一名示威者中彈死亡”,事件檢測程序首先會識別出“死亡”是觸發詞,然后將其事件類型歸類為“死亡”。接著事件論元抽取程序識別出“約旦河西岸”“示威者”“彈”是事件的論元,然后將它們的角色類型歸類為“地點”“受害者”“工具”。本文主要研究事件論元抽取任務。
隨著深度學習技術的發展,研究者通過增加模型復雜度和參數量使模型具有更強的表征能力。在自然語言處理領域,文獻[1]提出的BERT 模型通過深層的模型結構和大規模數據預訓練,在11 項自然語言處理任務上取得了較好的效果。此后,越來越多的研究者將BERT 模型用于事件論元抽取任務,取得了較大的性能提升。但BERT 模型存在以下2 個缺點:首先是巨額的參數量會導致模型預測速度變慢、時延增加,使模型無法應用于需要實時處理的場景;其次是模型需要極大的計算資源和內存開銷,無法在計算資源有限的設備中運行。大模型無法在計算資源和時間有限的情況下運行,而小模型性能無法達到滿意的效果,因此,模型壓縮顯得尤為重要。
在事件論元抽取領域,先進模型通常使用BERT作為模型編碼器。在這些模型中,BERT 模型的參數占整體參數的絕大部分。因此,模型壓縮的關鍵在于減少BERT 模型的參數。目前,知識蒸餾是常用的模型壓縮方法之一。知識蒸餾的主要是讓性能較高的教師模型指導性能較差的學生模型訓練。教師模型網絡結構復雜,表征能力更強,模型的輸出(即“軟標簽”)中包含著標簽概率分布知識。通過讓學生模型的輸出去擬合教師模型的軟標簽,可使學生模型學到真實標簽(即“硬標簽”)無法表示的知識。文獻[2-4]利用知識蒸餾方法將大尺寸的BERT 模型蒸餾到小尺寸的BERT 模型中。這種蒸餾方式雖然能夠得到較好的結果,但是模型參數量仍然很大。文獻[5]將BERT 模型蒸餾到單層長短期記憶網絡(Long Short-Term Memory network,LSTM)中,大幅降低了模型參數量,但是模型性能仍然需要提升。
本文提出一種基于知識蒸餾與模型集成的事件論元抽取方法(Event Argument Extraction method based on knowledge Distillation and model Ensemble,EAEDE)。將使用BERT 的教師模型蒸餾到使用LSTM 或單層卷積神經網絡(Convolution Neural Network,CNN)編碼的學生模型上,以減少模型參數量,加快預測速度。在蒸餾方式上,本文設計一個兩段式的蒸餾方式,先將教師模型中間層的信息蒸餾到學生模型中,再對學生模型的分類層進行蒸餾,通過將2 個學生模型進行集成,進一步提升模型的性能。
目前,事件抽取的方法已逐漸從機器學習轉換為深度學習。文獻[6]使用卷積神經網絡對句子進行編碼,并提出了動態多池化技術解決多事件中論元角色重疊的問題。文獻[7]將事件檢測任務和事件論元抽取任務進行聯合學習,并利用觸發詞與觸發詞、觸發詞與論元、論元與論元之間的依賴關系提升分類效果。文獻[8]設計了一種依存橋循環神經網絡,在對句子編碼時融入句子的依存句法特征,在計算當前節點隱層向量時不僅考慮上一個節點輸出和記憶細胞中的信息,同時還融入與當前詞有依存關系詞的信息。文獻[9]使用圖卷積方法抽取句子的依存句法特征進行聯合事件抽取,在事件檢測時使用自注意力機制抽取候選觸發詞的特征。文獻[10]使用CRF 模型構造一個多任務學習框架,對子任務進行聯合訓練,同時采用對各事件類型單獨訓練的方式解決標簽重疊問題。自預訓練模型BERT 推出后,研究者們開始使用BERT 進行事件抽取,通過BERT 深層次的網絡結構和大規模的數據預訓練大幅改善了事件抽取效果。文獻[11]采用BERT 加動態池化層的事件檢測模型,同時使用規則的方式生成海量數據并利用對抗訓練對生成的數據進行篩選。文獻[12]提出層次模塊化事件論元抽取模型,對論元角色進行分組并抽取出更抽象的概念,利用論元與抽象概念之間的關系提升論元角色抽取效果。文獻[13]通過預測論元的起始位置抽取論元,為每個論元角色標簽都設置一個二分類器解決標簽重疊問題,同時,還設計一種數據增強方法,解決數據稀缺的問題。文獻[14]以閱讀理解的方式進行事件抽取,同時利用外部的問答語料庫緩解數據稀缺的問題。文獻[15]將事件論元抽取任務看作多輪的問答任務,利用歷史的抽取信息輔助剩余論元的抽取。
在現有研究中,針對BERT 模型的壓縮有知識蒸餾、低秩分解和權值共享2 種方式。
1)知識蒸餾
文獻[16]提出知識蒸餾的概念,其使用KL 散度衡量教師模型輸出與學生模型輸出之間的差異,通過最小化KL 散度將教師模型中的知識遷移到學生模型中。為充分利用模型中間層的特征,文獻[17]通過最大化教師模型和學生模型中間層的互信息進行知識蒸餾。文獻[18]通過使學生模型學習教師模型的注意力特征圖提高學生模型的性能。文獻[2]設計了三重損失函數,計算學生模型和教師模型之間隱層向量的余弦相似度、模型輸出的KL 散度以及真實標簽的交叉熵優化模型,將模型層數減半且保證性能損失較低。文獻[3]提出了兩段式的蒸餾方式,首先對模型進行通用知識蒸餾,計算學生模型和教師模型Transformer 層的隱層向量和注意力的損失值,然后針對具體下游任務進行蒸餾。在神經網絡中,深而窄的模型比淺而深的模型具有更強的表征能力但是難于訓練,文獻[4]采用Bottleneck 機制和堆疊多個前饋神經網絡的方式訓練了一個深而窄的BERT 模型,提升了模型的推理效率。在上述工作中,學生模型和教師模型結構相同,只是使用更少的模型層數或是每層的參數。文獻[5]使用LSTM構造了一個學生模型,并讓學生模型分類層擬合教師模型分類層,將BERT 的知識蒸餾到LSTM 中。文獻[19]在蒸餾方式上與文獻[5]相同,但是使用了對抗生成網絡生成大量無標注標簽文本擴充數據,使學生模型能夠更充分地學習教師模型中的信息。
2)低秩分解和權值共享
BERT 模型的主要參數量來源是詞向量和12 層的Transormer。文獻[20]將詞向量從768 維減少為128 維,再通過一個128×768 的矩陣將詞向量轉換成768 維,從而使詞向量參數減少到原始大小的1/6。為減少Transformer 的參數量,該文獻將12 層的Transformer 參數進行共享,即使用一層Transformer反復迭代12 次,將Transformer 部分參數減少到原始大小的1/12。雖然這種方法可以大幅減小參數量,但是計算量沒有減少,因此,計算速度依然較慢。
本節詳細介紹基于知識蒸餾與模型集成的事件論元抽取方法(EAEDE)。如圖1 所示,該方法模型包含了2 個學生模型和1 個教師模型,將學生模型經過蒸餾后進行集成。具體訓練流程如圖2 所示,其中包含4 個步驟:1)構建2 個學生模型和1 個教師模型;2)訓練教師模型使其達到最優;3)進行知識蒸餾,使學生模型學習教師模型中蘊含的知識;4)將蒸餾后的2 個學生模型進行集成,得到最終的模型。

圖1 EAEDE 模型架構Fig.1 Structure of EAEDE model

圖2 模型訓練流程Fig.2 Procedure of model training
學生模型架構如圖3 所示,其中包含輸入層、句級特征抽取層、詞級特征抽取層、分類層4 個部分。2 個學生模型分別采用CNN 和LSTM 對句子進行編碼。

圖3 學生模型架構Fig.3 Structure of student model
2.1.1 輸入層
給定一個句子S={w1,w2,…,wt,…,wa,…,wn},其中:下標t表示觸發詞位置;下標a表示候選論元位置;下標n表示句子長度。模型的輸入由詞向量、位置特征、事件類型特征三部分組成:詞向量通過使用GloVe模型[21]在維基百科語料上訓練得到,獲得詞向量;位置特征是當前詞與候選論元和觸發詞的相對位置,每個相對位置都由一個隨機向量表示;事件類型特征與位置特征相似,每種事件類型由一個隨機向量表示。將詞向量、位置特征和事件類型特征進行拼接,得到輸入X={x1,x2,…,xt,…,xa,…,xn}。
2.1.2 句級特征抽取層
本文中的2 個學生模型分別使用CNN 和LSTM作為編碼器獲得模型句級特征,使模型之間具有一定的差異性。句子通過輸入層處理后放入編碼器中,得到隱層向量,如式(1)所示:

然后,使用動態多池化方法對隱層向量進行融合,得到候選論元wa的句級特征,如式(2)~式(5)所示:


其中:t表示觸發詞位置;a表示候選論元位置;[]表示拼接。
2.1.3 詞級特征抽取層
詞級特征是事件論元抽取的重要特征。給定一個句子,句子中每個詞的詞向量為{c1,c2,…,ct,…,ca,…,cn}。本文將候選論元、觸發詞以及兩者上下詞的詞向量拼接起來作為詞級特征,具體如式(6)所示:

2.1.4 分類層
在得到句級特征HS與詞級特征HL后,將兩者拼接起來得到最終候選論元wa的最終特征表示H。然后,使用全連接層和Softmax 函數對候選論元進行分類,得到每個類別的概率。
教師模型采用與學生模型相同的架構,但教師模型使用了BERT 模型和圖卷積來提高分類效果,具體見圖4。本小節主要介紹教師模型的句級特征抽取層及教師模型的訓練流程。

圖4 教師模型架構Fig.4 Structure of teacher model
2.2.1 句級特征抽取層
教師模型的編碼器包含BERT 和門控圖卷積2 個部分。給定一個句子S={w1,w2,…,wn}。首先,使用BERT對句子進行編碼,得到句子的隱層向量X。然后,將句子隱層向量與位置特征向量、事件類型特征向量拼接作為圖卷積的輸入X。位置特征向量和事件類型特征向量的初始化方式與學生模型相同。
圖卷積的鄰接矩陣根據依存句法樹進行構造。使用stanfordCoreNLP 工具(https://stanfordnlp.github.io/CoreNLP/)進行依存句法分析。本文將句子中每一個詞作為一個節點,根據依存關系構造該句子的鄰接矩陣A。
參考文獻[22]的工作,本文首先對每一個節點創建一個自環Aii=1,i∈[1,n]。如果節點i和j之間有依存關系,則向鄰接矩陣中添加邊Aij=Aji=1。在構建鄰接矩陣后,對隱層向量X進行兩次圖卷積,得到句子的依存句法特征。然后,對其中一個依存句法特征使用Sigmoid 函數,將其作為門控單元,記為σ。接著,將依存句法特征與σ進行點乘,將輸入的隱層向量X與(1?σ)進行點乘,最后將兩者相加融合,具體如式(7)、式(8)所示:

經過圖卷積后,得到隱層向量Hg={h1,h2,…,hn},本文將候選論元、觸發詞以及和候選論元有直接依存關系的詞進行最大池化,得到候選論元的句級特征,如式(9)所示:

其中:t表示觸發詞的位置;a表示候選論元的位置;A為鄰接矩陣。
2.2.2 教師模型訓練
本文使用交叉熵(Cross Entropy,CE)損失函數計算教師模型的輸出與真實標簽之間的損失值,如式(10)所示:

其中:K表示標簽類別數;y表示真實標簽;?表示教師模型的預測值。
對學生模型的蒸餾共分為2 個階段:第一階段對模型的中間層進行蒸餾;第二階段對模型的分類層進行蒸餾。
在第一階段,選取教師模型Gate-GCN 層的輸出與學生模型Encoder 層的輸出進行蒸餾。教師模型Gata-GCN 層的輸出包含了由BERT 獲得全局的語義信息和由GCN 模型獲得的依存句法信息。2 個學生模型使用了CNN 和LSTM 對句子進行編碼,但兩者都無法有效地獲取長句子的全局語義信息,更無法獲取句子的依存句法信息。通過知識蒸餾,學生模型的Encoder 層會擬合教師模型Gate-GCN 層的輸出,使其輸出的向量包含全局的語義信息和依存句法信息。由于兩者輸出的向量維度不同,因此學生模型Encoder 層的輸出需要進行線性變換匹配教師模型的維度,然后使用均方誤差(Mean Square Error,MSE)損失函數進行蒸餾,如式(11)所示:

其中:ht表示教師模型的隱層向量;hs表示學生模型的隱層向量。
在第二階段,學生模型的分類層會學習教師模型分類層的概率分布知識,即“軟標簽”。軟標簽中包含了比真實標簽(硬標簽)更豐富的信息。以“在約旦河西岸,一名示威者中彈死亡”中的論元“示威者”為例,硬標簽只會告訴模型“示威者”是“受害者”,而軟標簽則會使模型學習到“示威者”很可能是“受害者”,較低可能是“攻擊者”,絕不可能是“地點”。教師模型輸出的軟標簽往往過于陡峭,某一類別的概率很大,而其他類別概率很小。為了放大小概率類別的信息,使軟標簽更加平滑,需要在使用Softmax 函數對概率歸一化時設置溫度系數。溫度越大,軟標簽越平滑,各標簽概率趨向于相同;溫度越小,軟標簽越陡峭,各標簽概率相差越大。具體如式(12)所示:

其中:z表示模型的輸 出;T是溫 度參數表示歸一化后的概率。本階段將軟標簽和預測值的均方誤差損失函數與硬標簽和預測值的交叉熵損失函數相加作為最終的目標函數,具體如式(13)所示:

本文采用加權平均的方法對蒸餾后的學生模型進行集成。模型集成能夠降低單個學生模型的偏差對整體的影響,提升模型的泛化能力。為了獲得更好的效果,被集成的模型之間應當保持一定差異性。本文分別使用CNN 和LSTM 構造2 個不同的學生模型,使模型關注于不同的特征。CNN 由于卷積核大小的限制,使模型傾向于局部的特征,而LSTM 具有記憶細胞,可以記住較遠詞的信息,使模型傾向于全局的特征。模型集成方法的計算公式如式(14)所示:

本文使用ACE2005 英文數據集進行實驗。該數據集包含了新聞、廣播對話、微博等6 個領域的數據,共599 篇文檔,其中定義了33 種事件類型和35 種論元角色。本文采取與文獻[6-7]相同的劃分方式,隨機選取40 篇新聞領域文檔作為測試集,在剩下的文檔中選取30 篇作為測試集,選取529 篇作為訓練集。本文使用準確率、召回率和F1 值作為評價標準,當一個論元的所屬的事件類型、位置和論元角色分類都正確時,則該論元分類正確。
教師模型和學生模型的超參數設置分別如表1和表2 所示。在訓練過程中,模型通過Adam 優化器更新參數。學生模型和教師模型均使用Dropout 機制,防止在訓練過程中模型出現過擬合。

表1 教師模型超參數設置Table 1 Hyperparameter setting of teacher model

表2 學生模型超參數設置Table 2 Hyperparameter setting of student model
本文針對事件論元抽取任務,評測模型論元角色分類的結果。論元角色分類所用的觸發詞由DMCNN[6]模型抽取獲得。為了驗證知識蒸餾與模型集成的事件論元抽取方法的有效性,本文選取以下基準方法進行對比:
1)DMCNN:本文方法的學生模型之一,由CHEN等[6]提出,使用CNN 對句子進行編碼。
2)DMRNN:本文方法的學生模型之一,使用RNN 對句子進行編碼。
3)Teacher Model:本文2.2 小節介紹的教師模型。
4)DMCNN(distill):經過教師模型蒸餾后的DMCNN模型。
5)DMRNN(distill):經過教師模型蒸餾后的DMRNN模型。
6)EAEDE:本文提出的方法,由2 個蒸餾后的學生模型集成后所得。
表3 列出了基準模型與EAEDE 在事件論元抽取上的實驗結果。可以看出:Teacher Model 的F1 值達到60.3%,分別比DMCNN與DMRNN高出6.8個百分點和6.3 個百分點,三者之間差距較大;學生模型經過蒸餾后,論元抽取效果顯著提升,DMCNN(distill)在F1值上比DMCNN高出2.9個百分點,DMRNN(distill)在F1 值上比DMRNN 高出2.6 個百分點,這表明在事件論元抽取任務中,知識蒸餾可以提升淺層模型的表征能力,獲得更好的效果;此外,模型集成后EAEDE 的F1 值分別比DMCNN(distill)和DMRNN(distill)高出2.4個百分點和2.2個百分點,比DMCNN 高出5.3 個百分點,比DMRNN 高出4.8 個百分點,這說明模型集成可以有效彌補單個模型性能不足的缺點,得到一個更全面的模型。

表3 事件論元抽取實驗結果對比Table 3 Experiment results comparison of event argument extraction %
為進一步分析本文方法的有效性,選取以下模型壓縮方法進行對比:
1)Distill-Logits:方法架構與本文方法相同,都是將教師模型蒸餾到2 個學生模型上,然后進行集成。不同之處在于,該方法只對分類層進行蒸餾。
2)Distill-Encoder:方法架構與本文提出的方法相同,但該方法只對學生模型的Encoder 層進行蒸餾,然后使用真實標簽對模型分類層進行訓練。
3)Teacher-TinyBert:本文2.2 小節提出的教師模型,蒸餾方式使用的是JIAO等[3]提出的TinyBert。本文中使用的模型尺寸是6 層768 維。
4)Teacher-MobileBert:文獻[4]所提出的BERT蒸餾方式,本文使用的模型尺寸是24 層512 維。
Teacher-TinyBert 的模型壓縮思路是減少BERT的參數量,而EAEDE 的模型壓縮思路是將大模型知識蒸餾到多個小模型上,然后對小模型進行集成。從表4 可以看出:在論元分類F1 值上,本文提出的EAEDE 比Teacher-TinyBert高出2.1個百分點,比Teacher-MobileBert 高出1.7 個百分點,充分證明了本文模型壓縮思路的有效性;同時,EAEDE 的性能比Distill-Logits高出1.9個百分點,比Distill-Encoder 高出2.2 個百分點。Distill-Logits 和Distill-Encoder 都只對模型的一個部分進行了蒸餾,而EAEDE 對兩個部分都進行了蒸餾,這表明對教師模型各層分別進行蒸餾能夠使學生模型更有效地學習教師模型的知識,提升學生模型的分類性能。

表4 不同模型壓縮方法性能對比Table 4 Performance comparison of different model compression methods %
本文在相同的硬件條件下對模型預測速度進行測試,GPU 型號為Tesla K40m,CPU 型號為E5-2680 v4。表5 列出了EAEDE 與基準方法在參數量和單條數據推理時間上的對比結果。可以看出:EAEDE 在參數量上比Teacher Model減少99.25%,比Teacher-TinyBert減少98.81%,比Teacher-MobileBert減少96.91%;EAEDE僅使用了單層的CNN 和RNN 編碼器,參數量極小;Teacher Model 和Teacher-TinyBert 中的BERT 分別含有12 層和6 層的Transformer,隱層向量維度為768,通過計算可得,僅僅單層的Transformer 參數量就達到了7×106,是EAEDE 的8.1 倍;在單條數據推理時間 上,EAEDE 比Teacher Model減少90.85%,比Teacher-TinyBert 減少85.01%,比Teacher-MobileBert減少81.54%,這充分說明了本文方法在有限的硬件資源和時間下能夠獲得較好的效果。

表5 模型參數量、預測速度與F1 值對比Table 5 Comparison of model parameter quantity,prediction speed and F1 value
本文針對現有事件論元抽取模型參數量大、時延高等問題,提出一種基于知識蒸餾和模型集成的事件論元抽取方法。設計兩階段的蒸餾方式,將含有BERT 的教師模型蒸餾到一個使用單層CNN 或LSTM 編碼器的學生模型中,大幅減少模型參數量,并通過模型集成進一步提升性能。實驗結果表明,本文方法能夠快速完成事件論元抽取任務并取得較優性能。下一步將通過加入詞級特征、詞向量等進行知識蒸餾,提升學生模型的事件論元抽取性能。