符升旗,李金龍
(中國科學技術大學 計算機科學與技術學院,安徽 合肥230026)
自動文本摘要模型旨在提取出原文中的關鍵信息并生成摘要。對自動文本摘要的研究可以分為兩大類:抽取式文本摘要和生成式文本摘要。抽取式文本摘要直接從原文中抽取出一些句子組成摘要,而生成式文本摘要首先構建一個模型對原文中的信息進行理解,然后根據對原文的理解以模擬人類的方式輸出摘要。本文主要關注生成式文本摘要模型。
目前,生成式文本摘要模型主要基于序列到序列(sequence-to-sequence,seq2seq)模型構建[1-2]。seq2seq模型包含一個編碼器和一個解碼器。編碼器對輸入的原文進行編碼得到文本表示,解碼器對編碼器的輸出進行解碼生成摘要。在實際中,輸入文本通常包含冗余信息,即噪聲[3],而seq2seq 模型會將輸入文本的所有信息進行編碼,包括噪聲,這會導致最終生成的摘要不能很好地體現原文中的關鍵信息[4]。最近的一些研究[4-5]表明,對輸入文本中的噪聲進行過濾能提高摘要模型的表現。
對輸入文本中的噪聲進行過濾通常包含兩個步驟[4-5]:(1)根據編碼器的輸出(局部向量)計算得到全局向量,全局向量代表了輸出文本的整體表示;(2)根據全局向量和局部向量計算門向量,然后將局部向量和門向量按元素對應位置相乘,來實現對輸入文本中語義噪聲的過濾。例如,ZHOU Q[5]等人使用長短時記憶網絡(Long Short Time Memory,LSTM)作為模型的編碼器,然后將編碼器最后一個時間步的輸出作為全局向量進行噪聲過濾。LIN J[4]等人使用基于卷積神經網絡(Convolutional Neural Network,CNN)的方法對編碼器的輸出進行卷積得到全局向量,之后使用全局向量進行噪聲過濾。
這種噪聲過濾方法存在兩個問題:(1)在計算全局向量的過程中存在信息損失。例如,ZHOU Q[5]將LSTM 最后一個時間步的輸出作為全局向量,沒有考慮其他時間步的輸出,這會造成信息損失。LIN J[4]使用基于CNN 的方法來計算全局向量,而CNN 中的卷積操作會導致輸入文本中位置信息的丟失[6],也會帶來信息損失問題。由于信息損失,全局向量不能很好地表達輸入文本整體的含義,從而影響到噪聲過濾的過程。(2)噪聲過濾算法存在信息被過度過濾的問題。在噪聲過濾的過程中,首先通過全局向量和編碼器的輸出計算出門向量,由于門向量中的元素值都在0 到1 之間,將門向量和編碼器的輸出按元素對應位置相乘實現噪聲過濾的過程中,不止噪聲會被過濾,關鍵信息也會被削弱,從而造成信息被過度過濾的問題。
為了解決上述的兩個問題,本文提出了基于動態路由的分層噪聲過濾層,首先使用動態路由算法計算全局向量來避免信息損失,動態路由算法的思想來自于膠囊網絡[7]。膠囊(Capsule)是一組神經元的集合,它能比普通的神經元包含更多的信息(例如位置信息)。在動態路由的過程中,編碼器每個時間步的輸出都被看做是一個膠囊,并參與運算,避免了使用LSTM 計算全局向量中信息損失的問題。此外,因為膠囊中包含了位置信息,避免了使用CNN 計算全局向量中的位置信息丟失問題。然后使用分層噪聲過濾算法對噪聲過濾過程進行清晰地建模并且避免了信息被過度過濾的問題。具體來說,分層噪聲過濾算法在詞層面和語義層面對噪聲進行過濾,首先通過全局向量和編碼器的輸出選擇輸入文本中的關鍵字,然后使用雙門語義噪聲過濾算法在語義層面對輸入文本進行噪聲過濾。在文本摘要數據集Gigaword和CNN/Daily Mail 上的實驗結果驗證了方法的有效性。
圖1 描述了模型的結構,其由三部分組成:編碼器、基于動態路由的分層噪聲過濾(Dynamic Routing Based Hierarchical Information Filtering,DRBHIF)層以及解碼器。輸入文本首先通過編碼器進行編碼得到文本表示,即局部向量。DRBHIF 層則首先根據局部向量,通過動態路由算法計算得到全局向量,然后根據全局向量進行分層噪聲過濾。具體來說,首先根據全局向量和局部向量進行詞層面的關鍵字選取,然后通過雙門語義噪聲過濾算法進行語義層面的噪聲過濾。

圖1 模型結構圖
給定長度為n的輸入文本S=(x1,x2,…,xn),其中,xi表示S中的第i個單詞。編碼器對S中的單詞編碼得到S的文本表示H=(h1,h2,…,hn),其中,hi為單詞xi的文本表示。編碼器基于Transformer[8]構建,它由N個堆疊的層組成。編碼器的每一層包含兩個模塊:自注意力模塊和前饋神經網絡(Feed-Forward Network,FFN)模塊。每兩個模塊之間使用殘差連接,并且對FFN 的輸出應用層標準化。編碼的過程如下列公式所示:

自注意力模塊的輸入為三個矩陣:查詢矩陣Ql∈Rn×dn、鍵 矩陣Kl∈Rn×dn和值矩陣Vl∈Rn×dn,其中,dn是矩陣的維度。這三個矩陣是由前一層的輸出Hl-1經線性變換得到。最終,自注意力模塊的輸出Zl通過式(4)計算得到:

動態路由模塊根據編碼器的輸出H動態地計算出全局向量V,全局向量會指導接下來的分層信息過濾過程。
將編碼器的輸出H=(h1,h2,…,hn)作為輸入膠囊,將全局向量V=(v1,v2,…,vm)作為輸出膠囊,其中,vi是第i個輸出膠囊,m是輸出膠囊的個數。在動態路由的過程中,第i個輸入膠囊傳送到第j個輸出膠囊的信息比例是由因子cij確定的,cij的計算方法如式(5)所示:

其中,bij是初始化為0 的對數幾率。根據信息傳送的比例cij,則從第i個輸入膠囊hi傳送到第j個輸出膠囊vj的信息mij可由式(6)得到:

其中,Wch為權重矩陣。第j個輸出膠囊vj從所有輸入膠囊接收到的信息mj可以通過式(7)計算:

對mj應用一個非線性的擠壓函數(Sqush Function)得到第j個輸出膠囊vj,然后根據vj和第i個輸入膠囊的相似度更新對數幾率bij,如式(8)和式(9)所示:

其中,Wij為參數矩陣。
分層信息過濾在兩個層面對輸入文本中的噪聲進行過濾,分別是詞層面的關鍵字選擇和語義層面的雙門噪聲過濾。
1.3.1 關鍵字選擇
該模塊旨在根據全局向V和編碼器的輸出H對輸入文本中的關鍵字進行選擇。首先根據V和H計算權重向量α,如式(10)所示:

其中,Wh和Wv為權重矩陣,bhv為偏置向量,α=(α1,α2,…,αn),αi對應第i個單詞wi的重要程度,αi越大,wi越重要,從而被當做關鍵字。將α和H相乘得到輸入文本中的關鍵字表示,如式(11)所示:

1.3.2 雙門語義噪聲過濾
雙門語義噪聲過濾算法包含兩個門:過濾門和補充門。過濾門對輸入文本中的語義噪聲進行過濾,補充門根據過濾門過濾的結果,將原文中的信息補充回一部分形成最終的文本摘要,這樣可以避免信息被過度過濾的問題。過濾門的計算方法如式(12)和式(13)所示:

其中,Whf、Wvf和bf為可訓練的參數,σ 表示Sigmoid激活函數,?表示按矩陣元素對應位置相乘。
補充門d由過濾后的文本表示和關鍵字的初始表示通過式(14)計算得到:

其中,Whd、Wvd和bd為可訓練的參數。最后,根據補充門d,補充一部分原文中的信息組成最終的文本表 示:

解碼器對過濾后的文本表示進行解碼生成摘要。解碼器的結構類似于編碼器,也是由N個相同的層疊加組成。解碼器最后一層的輸出被記為D,在生成摘要中的第t個單詞時,將D輸入到一個線性層生成單詞分布Pvocab,如式(16)所示:

其中,Wo和bo是可訓練的參數。最終,通過單詞的分布Pvocab得到第t個輸出單詞。
為了驗證模型的有效性,在兩個公開的文本摘要基準數據集Gigaword[9]和CNN/Daily Mail[10]上進行了實驗。兩個數據集均由原文—摘要數據對組成。其中,Gigaword 包含380 萬條訓練樣本,8 000 條驗證樣本和2 000 條測試樣本。CNN/Daily Mail 數據集包含28 萬條訓練樣本,1 萬條驗證樣本和1 萬條測試樣本。兩個數據集的具體統計數據如表1 所示。

表1 實驗數據集描述
基于Transformer[8]構建模型,模型的編碼器共有12 層,解碼器也有12 層。詞向量的維度為1 024,隱狀態的維度為768。在多頭注意力中,注意力頭的個數被設置為12。使用預訓練的模型權重MASS[11]來初始化模型參數。使用Adam[12]隨機梯度下降優化器對模型進行訓練,在Adam 優化器中,β1被設置為0.9,β2被設置為0.999,∈被設置為1×10-8。模型的初始學習率被設為0.000 1,使用sqrt 學習率調度器在訓練過程中動態地減小學習率。為了防止過擬合,在模型中引入了Dropout[13]機制,并設置dropout率為0.1。在模型訓練的過程中,設置模型訓練的批量大小為64。在兩塊NVIDIA RTX 2080 SUPER GPU 上進行實驗。為了加快訓練速度并減小顯存占用,使用了混合精度訓練[14]。
參照之前的工作,使用ROUGE[15]作為模型的評價指標。ROUGE 通過計算模型生成的摘要和參考摘要之間的n元組(n-grams)的召回率來衡量模型生成摘要的質量。在本實驗中,使用ROUGE-1(1 元組)、ROUGE-2(2 元組)和ROUGE-L(最長公共序列)作為具體的評價指標。
2.4.1 Gigaword 數據集
將模型在Gigaword 數據集上和SEASS[5]、CGU[4]、BiSET[16]、UNILM[17]、MASS[11]和PEGASUS[18]進行了比較。其中,SEASS、GCU、BiSET 也采用了噪聲過濾的思想,UNILM、MASS、PEGASUS 則是目前最先進的模型。在Gigaword 數據集上各模型的實驗結果如表2 所示。

表2 各模型在Gigaword 數據集上的實驗結果
對比模型的所有結果均來自其原始文獻。結果表明,模型在Gigaword 數據集上的ROUGE-1 和ROUGE-2 兩個指標上均超過了對比模型。相比于之前噪聲過濾模型BiSET,模型在ROUGE-1 上提升了0.23,在ROUGE-2 上提升了0.37。相比于基模型MASS,模型在ROUGE-1 上提升了0.61,在ROUGE-2 上提升了0.44,在ROUGE-L 上提升了0.33。
2.4.2 CNN/Daily Mail 數據集
將模型在CNN/Daily Mail 數據集上和BottomUp[19]、EditNet[20]、DCA[21]、BERTSum[22]、MASS[11]進 行 了 比較。各模型在CNN/Daily Mail 數據集上的實驗結果如表3 所示。
對比模型的所有結果均來自其原始文獻。結果表明,模型在ROUGE-1 和ROUGE-L 上超過了所有的對比模型。相比較于基模型MASS,模型在ROUGE-1 上提升了0.19,在ROUGE-2 上提升了0.02,在ROUGE-L 上提升了0.35。

表3 各模型在CNN/Daily Mail數據集上的實驗結果
輸出膠囊的個數m在計算全局向量時是一個關鍵參數,因為全局向量是由m個輸出膠囊組成的。當輸出膠囊個數過少時,由輸出膠囊傳送到輸出膠囊的信息會發生一定程度的損失,而當輸出膠囊過多時,輸出膠囊和輸出膠囊會比較相似,這會導致由輸出膠囊組成的全局向量不能很好地表達輸入文本的全局含義。將輸出膠囊的個數m在{1,2,4,8}范圍內進行實驗,實驗結果見圖2。從圖2 中可以看出,隨著輸出膠囊個數的增加,模型的ROUGE-1得分先上升后下降,這與之前的預期相符合。

圖2 輸出膠囊的個數對ROUGE-1 的影響
對比了計算全局向量的3 種方法:(1)將編碼器最后一個時間步的隱狀態作為全局量(LSTMbased);(2)使用基于CNN 的方法計算全局向量(CNNbased);(3)使用動態路由算法計算全局向量(DRbased)。三種方法在Gigaword 數據集上的實驗結果如表4 所示。
可以看到,使用膠囊網絡計算全局向量的結果相比于基于LSTM 的方法和基于CNN 的方法均有提升,這說明了使用動態路由方法計算全局向量比基于LSTM 的方法和基于CNN 的方法更有效。使用基于LSTM 的方法計算全局向量比使用基于CNN的方法計算全局向量的結果要好,這說明了位置信息對全局向量計算的重要性。

表4 不同全局向量計算方法對最終結果的影響方法
通過刪減實驗來驗證DRBHIF 層中各模塊的有效性。依次將補充門、過濾門和關鍵字選擇模塊從模型中刪除并進行實驗,實驗結果如表5 所示。

表5 刪除不同的模塊對最終結果的影響
其中,-CG 表示從模型中刪除補充門,-CG-FG表示從模型中刪除補充門和過濾門,-CG-FG-KS表示從模型中刪除補充門、過濾門以及關鍵字選擇模塊。從表5 可以看出,每刪除一個模塊,模型的性能都會隨之下降,這驗證了模型中各個模塊的有效性。
在本文中,為了對輸入文本中的噪聲過濾進行清晰地建模,解決噪聲過濾過程中全局向量的計算問題以及噪聲被過度過濾的問題,提出了基于動態路由的分層信息過濾層DRBHIF。DRBHIF 使用動態路由算法代替基于LSTM 的方法和基于CNN 的方法來計算全局向量,這防止了信息損失的問題,并且從詞層面和語義層面對噪聲進行過濾。為了防止語義噪聲過濾過程中出現的信息被過度過濾的問題,還提出了雙門語義噪聲過濾算法。在Gigaword 數據集和CNN/Daily Mail 數據集上的實驗結果驗證了本文模型的有效性。在未來的工作中,將嘗試進一步提高DRBHIF 在長文本噪聲過濾上的性能。