符升旗,李金龍
(中國科學(xué)技術(shù)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,安徽 合肥230026)
自動文本摘要模型旨在提取出原文中的關(guān)鍵信息并生成摘要。對自動文本摘要的研究可以分為兩大類:抽取式文本摘要和生成式文本摘要。抽取式文本摘要直接從原文中抽取出一些句子組成摘要,而生成式文本摘要首先構(gòu)建一個模型對原文中的信息進(jìn)行理解,然后根據(jù)對原文的理解以模擬人類的方式輸出摘要。本文主要關(guān)注生成式文本摘要模型。
目前,生成式文本摘要模型主要基于序列到序列(sequence-to-sequence,seq2seq)模型構(gòu)建[1-2]。seq2seq模型包含一個編碼器和一個解碼器。編碼器對輸入的原文進(jìn)行編碼得到文本表示,解碼器對編碼器的輸出進(jìn)行解碼生成摘要。在實際中,輸入文本通常包含冗余信息,即噪聲[3],而seq2seq 模型會將輸入文本的所有信息進(jìn)行編碼,包括噪聲,這會導(dǎo)致最終生成的摘要不能很好地體現(xiàn)原文中的關(guān)鍵信息[4]。最近的一些研究[4-5]表明,對輸入文本中的噪聲進(jìn)行過濾能提高摘要模型的表現(xiàn)。
對輸入文本中的噪聲進(jìn)行過濾通常包含兩個步驟[4-5]:(1)根據(jù)編碼器的輸出(局部向量)計算得到全局向量,全局向量代表了輸出文本的整體表示;(2)根據(jù)全局向量和局部向量計算門向量,然后將局部向量和門向量按元素對應(yīng)位置相乘,來實現(xiàn)對輸入文本中語義噪聲的過濾。例如,ZHOU Q[5]等人使用長短時記憶網(wǎng)絡(luò)(Long Short Time Memory,LSTM)作為模型的編碼器,然后將編碼器最后一個時間步的輸出作為全局向量進(jìn)行噪聲過濾。LIN J[4]等人使用基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的方法對編碼器的輸出進(jìn)行卷積得到全局向量,之后使用全局向量進(jìn)行噪聲過濾。
這種噪聲過濾方法存在兩個問題:(1)在計算全局向量的過程中存在信息損失。例如,ZHOU Q[5]將LSTM 最后一個時間步的輸出作為全局向量,沒有考慮其他時間步的輸出,這會造成信息損失。LIN J[4]使用基于CNN 的方法來計算全局向量,而CNN 中的卷積操作會導(dǎo)致輸入文本中位置信息的丟失[6],也會帶來信息損失問題。由于信息損失,全局向量不能很好地表達(dá)輸入文本整體的含義,從而影響到噪聲過濾的過程。(2)噪聲過濾算法存在信息被過度過濾的問題。在噪聲過濾的過程中,首先通過全局向量和編碼器的輸出計算出門向量,由于門向量中的元素值都在0 到1 之間,將門向量和編碼器的輸出按元素對應(yīng)位置相乘實現(xiàn)噪聲過濾的過程中,不止噪聲會被過濾,關(guān)鍵信息也會被削弱,從而造成信息被過度過濾的問題。
為了解決上述的兩個問題,本文提出了基于動態(tài)路由的分層噪聲過濾層,首先使用動態(tài)路由算法計算全局向量來避免信息損失,動態(tài)路由算法的思想來自于膠囊網(wǎng)絡(luò)[7]。膠囊(Capsule)是一組神經(jīng)元的集合,它能比普通的神經(jīng)元包含更多的信息(例如位置信息)。在動態(tài)路由的過程中,編碼器每個時間步的輸出都被看做是一個膠囊,并參與運算,避免了使用LSTM 計算全局向量中信息損失的問題。此外,因為膠囊中包含了位置信息,避免了使用CNN 計算全局向量中的位置信息丟失問題。然后使用分層噪聲過濾算法對噪聲過濾過程進(jìn)行清晰地建模并且避免了信息被過度過濾的問題。具體來說,分層噪聲過濾算法在詞層面和語義層面對噪聲進(jìn)行過濾,首先通過全局向量和編碼器的輸出選擇輸入文本中的關(guān)鍵字,然后使用雙門語義噪聲過濾算法在語義層面對輸入文本進(jìn)行噪聲過濾。在文本摘要數(shù)據(jù)集Gigaword和CNN/Daily Mail 上的實驗結(jié)果驗證了方法的有效性。
圖1 描述了模型的結(jié)構(gòu),其由三部分組成:編碼器、基于動態(tài)路由的分層噪聲過濾(Dynamic Routing Based Hierarchical Information Filtering,DRBHIF)層以及解碼器。輸入文本首先通過編碼器進(jìn)行編碼得到文本表示,即局部向量。DRBHIF 層則首先根據(jù)局部向量,通過動態(tài)路由算法計算得到全局向量,然后根據(jù)全局向量進(jìn)行分層噪聲過濾。具體來說,首先根據(jù)全局向量和局部向量進(jìn)行詞層面的關(guān)鍵字選取,然后通過雙門語義噪聲過濾算法進(jìn)行語義層面的噪聲過濾。
圖1 模型結(jié)構(gòu)圖
給定長度為n的輸入文本S=(x1,x2,…,xn),其中,xi表示S中的第i個單詞。編碼器對S中的單詞編碼得到S的文本表示H=(h1,h2,…,hn),其中,hi為單詞xi的文本表示。編碼器基于Transformer[8]構(gòu)建,它由N個堆疊的層組成。編碼器的每一層包含兩個模塊:自注意力模塊和前饋神經(jīng)網(wǎng)絡(luò)(Feed-Forward Network,F(xiàn)FN)模塊。每兩個模塊之間使用殘差連接,并且對FFN 的輸出應(yīng)用層標(biāo)準(zhǔn)化。編碼的過程如下列公式所示:
自注意力模塊的輸入為三個矩陣:查詢矩陣Ql∈Rn×dn、鍵 矩陣Kl∈Rn×dn和值矩陣Vl∈Rn×dn,其中,dn是矩陣的維度。這三個矩陣是由前一層的輸出Hl-1經(jīng)線性變換得到。最終,自注意力模塊的輸出Zl通過式(4)計算得到:
動態(tài)路由模塊根據(jù)編碼器的輸出H動態(tài)地計算出全局向量V,全局向量會指導(dǎo)接下來的分層信息過濾過程。
將編碼器的輸出H=(h1,h2,…,hn)作為輸入膠囊,將全局向量V=(v1,v2,…,vm)作為輸出膠囊,其中,vi是第i個輸出膠囊,m是輸出膠囊的個數(shù)。在動態(tài)路由的過程中,第i個輸入膠囊傳送到第j個輸出膠囊的信息比例是由因子cij確定的,cij的計算方法如式(5)所示:
其中,bij是初始化為0 的對數(shù)幾率。根據(jù)信息傳送的比例cij,則從第i個輸入膠囊hi傳送到第j個輸出膠囊vj的信息mij可由式(6)得到:
其中,Wch為權(quán)重矩陣。第j個輸出膠囊vj從所有輸入膠囊接收到的信息mj可以通過式(7)計算:
對mj應(yīng)用一個非線性的擠壓函數(shù)(Sqush Function)得到第j個輸出膠囊vj,然后根據(jù)vj和第i個輸入膠囊的相似度更新對數(shù)幾率bij,如式(8)和式(9)所示:
其中,Wij為參數(shù)矩陣。
分層信息過濾在兩個層面對輸入文本中的噪聲進(jìn)行過濾,分別是詞層面的關(guān)鍵字選擇和語義層面的雙門噪聲過濾。
1.3.1 關(guān)鍵字選擇
該模塊旨在根據(jù)全局向V和編碼器的輸出H對輸入文本中的關(guān)鍵字進(jìn)行選擇。首先根據(jù)V和H計算權(quán)重向量α,如式(10)所示:
其中,Wh和Wv為權(quán)重矩陣,bhv為偏置向量,α=(α1,α2,…,αn),αi對應(yīng)第i個單詞wi的重要程度,αi越大,wi越重要,從而被當(dāng)做關(guān)鍵字。將α和H相乘得到輸入文本中的關(guān)鍵字表示,如式(11)所示:
1.3.2 雙門語義噪聲過濾
雙門語義噪聲過濾算法包含兩個門:過濾門和補(bǔ)充門。過濾門對輸入文本中的語義噪聲進(jìn)行過濾,補(bǔ)充門根據(jù)過濾門過濾的結(jié)果,將原文中的信息補(bǔ)充回一部分形成最終的文本摘要,這樣可以避免信息被過度過濾的問題。過濾門的計算方法如式(12)和式(13)所示:
其中,Whf、Wvf和bf為可訓(xùn)練的參數(shù),σ 表示Sigmoid激活函數(shù),?表示按矩陣元素對應(yīng)位置相乘。
補(bǔ)充門d由過濾后的文本表示和關(guān)鍵字的初始表示通過式(14)計算得到:
其中,Whd、Wvd和bd為可訓(xùn)練的參數(shù)。最后,根據(jù)補(bǔ)充門d,補(bǔ)充一部分原文中的信息組成最終的文本表 示:
解碼器對過濾后的文本表示進(jìn)行解碼生成摘要。解碼器的結(jié)構(gòu)類似于編碼器,也是由N個相同的層疊加組成。解碼器最后一層的輸出被記為D,在生成摘要中的第t個單詞時,將D輸入到一個線性層生成單詞分布Pvocab,如式(16)所示:
其中,Wo和bo是可訓(xùn)練的參數(shù)。最終,通過單詞的分布Pvocab得到第t個輸出單詞。
為了驗證模型的有效性,在兩個公開的文本摘要基準(zhǔn)數(shù)據(jù)集Gigaword[9]和CNN/Daily Mail[10]上進(jìn)行了實驗。兩個數(shù)據(jù)集均由原文—摘要數(shù)據(jù)對組成。其中,Gigaword 包含380 萬條訓(xùn)練樣本,8 000 條驗證樣本和2 000 條測試樣本。CNN/Daily Mail 數(shù)據(jù)集包含28 萬條訓(xùn)練樣本,1 萬條驗證樣本和1 萬條測試樣本。兩個數(shù)據(jù)集的具體統(tǒng)計數(shù)據(jù)如表1 所示。
表1 實驗數(shù)據(jù)集描述
基于Transformer[8]構(gòu)建模型,模型的編碼器共有12 層,解碼器也有12 層。詞向量的維度為1 024,隱狀態(tài)的維度為768。在多頭注意力中,注意力頭的個數(shù)被設(shè)置為12。使用預(yù)訓(xùn)練的模型權(quán)重MASS[11]來初始化模型參數(shù)。使用Adam[12]隨機(jī)梯度下降優(yōu)化器對模型進(jìn)行訓(xùn)練,在Adam 優(yōu)化器中,β1被設(shè)置為0.9,β2被設(shè)置為0.999,∈被設(shè)置為1×10-8。模型的初始學(xué)習(xí)率被設(shè)為0.000 1,使用sqrt 學(xué)習(xí)率調(diào)度器在訓(xùn)練過程中動態(tài)地減小學(xué)習(xí)率。為了防止過擬合,在模型中引入了Dropout[13]機(jī)制,并設(shè)置dropout率為0.1。在模型訓(xùn)練的過程中,設(shè)置模型訓(xùn)練的批量大小為64。在兩塊NVIDIA RTX 2080 SUPER GPU 上進(jìn)行實驗。為了加快訓(xùn)練速度并減小顯存占用,使用了混合精度訓(xùn)練[14]。
參照之前的工作,使用ROUGE[15]作為模型的評價指標(biāo)。ROUGE 通過計算模型生成的摘要和參考摘要之間的n元組(n-grams)的召回率來衡量模型生成摘要的質(zhì)量。在本實驗中,使用ROUGE-1(1 元組)、ROUGE-2(2 元組)和ROUGE-L(最長公共序列)作為具體的評價指標(biāo)。
2.4.1 Gigaword 數(shù)據(jù)集
將模型在Gigaword 數(shù)據(jù)集上和SEASS[5]、CGU[4]、BiSET[16]、UNILM[17]、MASS[11]和PEGASUS[18]進(jìn)行了比較。其中,SEASS、GCU、BiSET 也采用了噪聲過濾的思想,UNILM、MASS、PEGASUS 則是目前最先進(jìn)的模型。在Gigaword 數(shù)據(jù)集上各模型的實驗結(jié)果如表2 所示。
表2 各模型在Gigaword 數(shù)據(jù)集上的實驗結(jié)果
對比模型的所有結(jié)果均來自其原始文獻(xiàn)。結(jié)果表明,模型在Gigaword 數(shù)據(jù)集上的ROUGE-1 和ROUGE-2 兩個指標(biāo)上均超過了對比模型。相比于之前噪聲過濾模型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 數(shù)據(jù)集
將模型在CNN/Daily Mail 數(shù)據(jù)集上和BottomUp[19]、EditNet[20]、DCA[21]、BERTSum[22]、MASS[11]進(jìn) 行 了 比較。各模型在CNN/Daily Mail 數(shù)據(jù)集上的實驗結(jié)果如表3 所示。
對比模型的所有結(jié)果均來自其原始文獻(xiàn)。結(jié)果表明,模型在ROUGE-1 和ROUGE-L 上超過了所有的對比模型。相比較于基模型MASS,模型在ROUGE-1 上提升了0.19,在ROUGE-2 上提升了0.02,在ROUGE-L 上提升了0.35。
表3 各模型在CNN/Daily Mail數(shù)據(jù)集上的實驗結(jié)果
輸出膠囊的個數(shù)m在計算全局向量時是一個關(guān)鍵參數(shù),因為全局向量是由m個輸出膠囊組成的。當(dāng)輸出膠囊個數(shù)過少時,由輸出膠囊傳送到輸出膠囊的信息會發(fā)生一定程度的損失,而當(dāng)輸出膠囊過多時,輸出膠囊和輸出膠囊會比較相似,這會導(dǎo)致由輸出膠囊組成的全局向量不能很好地表達(dá)輸入文本的全局含義。將輸出膠囊的個數(shù)m在{1,2,4,8}范圍內(nèi)進(jìn)行實驗,實驗結(jié)果見圖2。從圖2 中可以看出,隨著輸出膠囊個數(shù)的增加,模型的ROUGE-1得分先上升后下降,這與之前的預(yù)期相符合。
圖2 輸出膠囊的個數(shù)對ROUGE-1 的影響
對比了計算全局向量的3 種方法:(1)將編碼器最后一個時間步的隱狀態(tài)作為全局量(LSTMbased);(2)使用基于CNN 的方法計算全局向量(CNNbased);(3)使用動態(tài)路由算法計算全局向量(DRbased)。三種方法在Gigaword 數(shù)據(jù)集上的實驗結(jié)果如表4 所示。
可以看到,使用膠囊網(wǎng)絡(luò)計算全局向量的結(jié)果相比于基于LSTM 的方法和基于CNN 的方法均有提升,這說明了使用動態(tài)路由方法計算全局向量比基于LSTM 的方法和基于CNN 的方法更有效。使用基于LSTM 的方法計算全局向量比使用基于CNN的方法計算全局向量的結(jié)果要好,這說明了位置信息對全局向量計算的重要性。
表4 不同全局向量計算方法對最終結(jié)果的影響方法
通過刪減實驗來驗證DRBHIF 層中各模塊的有效性。依次將補(bǔ)充門、過濾門和關(guān)鍵字選擇模塊從模型中刪除并進(jìn)行實驗,實驗結(jié)果如表5 所示。
表5 刪除不同的模塊對最終結(jié)果的影響
其中,-CG 表示從模型中刪除補(bǔ)充門,-CG-FG表示從模型中刪除補(bǔ)充門和過濾門,-CG-FG-KS表示從模型中刪除補(bǔ)充門、過濾門以及關(guān)鍵字選擇模塊。從表5 可以看出,每刪除一個模塊,模型的性能都會隨之下降,這驗證了模型中各個模塊的有效性。
在本文中,為了對輸入文本中的噪聲過濾進(jìn)行清晰地建模,解決噪聲過濾過程中全局向量的計算問題以及噪聲被過度過濾的問題,提出了基于動態(tài)路由的分層信息過濾層DRBHIF。DRBHIF 使用動態(tài)路由算法代替基于LSTM 的方法和基于CNN 的方法來計算全局向量,這防止了信息損失的問題,并且從詞層面和語義層面對噪聲進(jìn)行過濾。為了防止語義噪聲過濾過程中出現(xiàn)的信息被過度過濾的問題,還提出了雙門語義噪聲過濾算法。在Gigaword 數(shù)據(jù)集和CNN/Daily Mail 數(shù)據(jù)集上的實驗結(jié)果驗證了本文模型的有效性。在未來的工作中,將嘗試進(jìn)一步提高DRBHIF 在長文本噪聲過濾上的性能。