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