何正方,梁 宇
(云南大學(xué)軟件學(xué)院,昆明 650500)
隨著Internet的飛速發(fā)展,人們?cè)絹碓蕉嗟匾蕾囉谌f維網(wǎng)來獲取所需要的信息.如何更加有效地瀏覽和查閱萬維網(wǎng)上的海量信息成了當(dāng)前的研究熱點(diǎn)[1].自動(dòng)文本摘要技術(shù)對(duì)給定源文本內(nèi)容進(jìn)行壓縮、提煉與總結(jié),并產(chǎn)生簡潔、流暢且保留關(guān)鍵信息的文本來概括用戶所關(guān)注的主要內(nèi)容.根據(jù)摘要內(nèi)容的來源可以分為抽取式摘要和生成式摘要兩類.其中,抽取式摘要生成的摘要內(nèi)容是按一定規(guī)則從原文本中抽取出來的詞、短語或句子組成的.生成式摘要產(chǎn)生的摘要文本則是通過理解文本內(nèi)容,用簡練的文字將原文本的內(nèi)容表達(dá)出來[2].由于生成式摘要與人類做摘要的過程相似,所以生成式摘要方法在文本摘要模型中得到了廣泛使用.
隨著人工智能技術(shù)快速發(fā)展,神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)已廣泛應(yīng)用于自然語言處理任務(wù),比如機(jī)器翻譯、情感分析、語音識(shí)別、文本摘要等.其中,以序列到序列(Sequence2Sequence)[3]神經(jīng)網(wǎng)絡(luò)模型為代表,其結(jié)合了循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[4]和注意力機(jī)制(attention)[5],該模型能夠決定需要關(guān)注輸入的是哪部分,分配有限的信息處理資源給重要的部分,比傳統(tǒng)的自然語言處理方法效果好很多.但是以往設(shè)計(jì)的注意力機(jī)制(BahdanauAttention[5],LuongAttention[6]),不足以將長句的高維特征提取,會(huì)造成導(dǎo)致生成摘要存在句子不通順、詞語重復(fù)、可讀性差等問題.這個(gè)問題限制了模型的性能,尤其是當(dāng)輸入序列比較長時(shí),模型的性能會(huì)變得很差,這個(gè)問題在長句的翻譯中較為明顯.
針對(duì)上述問題,本文重新設(shè)計(jì)了注意力機(jī)制,以提取長句的特征.提出了NN-Attention,其中的NN是全連接神經(jīng)網(wǎng)絡(luò)(Fully-connected Neural Network,FNN)[7].通過實(shí)驗(yàn),該模型生成的摘要在正確性和可讀性上都較以往的注意力模型有所改善.
RNN是神經(jīng)網(wǎng)絡(luò)的一種,它的輸入不僅包括當(dāng)前時(shí)刻的輸入還包含了前一時(shí)刻的輸出.基本的RNN通過反向傳播進(jìn)行矩陣冪運(yùn)算,很容梯度消失或者梯度爆炸.LSTM[8]的提出有效地解決了這個(gè)問題,LSTM通過引入3個(gè)門控單元,通過“門”結(jié)構(gòu)來保留重要的內(nèi)容和去除次要的內(nèi)容.但是由于本文引入了CNN,參數(shù)成幾何級(jí)增長.若使用LSTM,整個(gè)模型的參數(shù)量將非常龐大,訓(xùn)練會(huì)變得十分困難.為了解決LSTM參數(shù)過多,訓(xùn)練時(shí)間過長,本文采用GRU[9]神經(jīng)元.GRU是LSTM的一種變種,它將遺忘門和輸入門合并為一個(gè)更新門,其作用在于每個(gè)隱藏層減少了兩個(gè)矩陣乘法運(yùn)算,模型的參數(shù)得到減少,從而減少了訓(xùn)練時(shí)間,并且容易實(shí)現(xiàn),其示意圖如圖1所示.
圖1 GRU 示意圖
更新門z決定隱藏狀態(tài)的更新是否基于一個(gè)新的隱藏狀態(tài),重置門r狀態(tài)決定之前的隱藏狀態(tài)是否被忽略.
讓我們來描述j-th 隱藏單元的激活是如何計(jì)算的,首先,按照式(1)計(jì)算重置門rj.
式(1)中,σ是Sigmoid激活函數(shù),[·]j是j-th的向量表示.x和ht-1分別表示輸入和前一個(gè)隱藏狀態(tài),Wr和Ur是已經(jīng)學(xué)習(xí)到的權(quán)重矩陣.
類似的,按照式(2)計(jì)算更新門zj.
激活隱藏單元hj的實(shí)際計(jì)算公式如式(3)所示.
其中,
在式(3)中,當(dāng)重置門接近0時(shí),隱藏狀態(tài)僅重置當(dāng)前的輸入并強(qiáng)制移除之前的狀態(tài),這能有效地阻止無關(guān)的信息.另一方面,更新門控制多少之前的隱藏狀態(tài)信息繼續(xù)留存到當(dāng)前的隱藏狀態(tài),這和LSTM網(wǎng)絡(luò)中的記憶細(xì)胞很像,并幫助RNN 記憶長期的信息[10].每一個(gè)隱藏單元都有獨(dú)立的重置門和更新門,并學(xué)習(xí)到長時(shí)記憶和短時(shí)記憶.隱藏單元因重置門被頻繁的激活而學(xué)習(xí)到短時(shí)記憶,因更新門被頻繁激活而學(xué)習(xí)到長時(shí)記憶,所以GRU 很適合作為文本摘要模型的神經(jīng)元.
Sequence2Sequence模型對(duì)輸入序列X缺乏區(qū)分度,因此引入了Attention Mechanism來解決這個(gè)問題,總體模型結(jié)構(gòu)如圖2所示.
在以往的Attention模型中,只采用了Bidirectional-RNN[11],BRNN 對(duì)上下文信息是有效的,但是無法提取文本的高維特征,所以本文引入了CNN[12],CNN的詳細(xì)設(shè)計(jì)見本文的第3節(jié),將CNN的輸出按照式(4)的方式拼接起來.
在該模型中,按照式(5)定義了一個(gè)條件概率.
其中,si是Decoder 中RNN在i時(shí)刻的隱狀態(tài),如圖2所示,其計(jì)算公式如式(6)所示.
圖2 Attention Mechanism模型
這里的語義向量ci的計(jì)算方式,與傳統(tǒng)的Sequence2-Sequence模型直接累加的計(jì)算方式不一樣,這里的ci是一個(gè)權(quán)重化(weighted)之后的值,其表達(dá)式如式(7)所示.
其中,i表示Encoder端的第i個(gè)詞,hj表示Encoder端的第j個(gè)詞的隱向量,αij表示Encoder端的第j個(gè)詞與Decoder端的第i個(gè)詞之間的權(quán)值,表示源端第j個(gè)詞對(duì)目標(biāo)端第i個(gè)詞的影響程度,αij的計(jì)算公式如式(8)所示.
其中,
在式(8)中,αij是一個(gè)Softmax模型輸出,概率值的和為1.eij表示一個(gè)對(duì)齊模型,用于衡量Encoder端的位置j的詞,對(duì)于Decoder端的位置i的詞的對(duì)齊程度(影響程度),換句話說:Decoder端生成位置i的詞時(shí),有多少程度受Encoder端的位置j的詞影響.以往的對(duì)齊模型eij的計(jì)算方式如式(9)所示[6].為了方便討論,對(duì)齊模型的表示如圖2中的Match 框所示.
但是本文在隱藏層增加了CNN的輸出,以往的對(duì)齊模型已不完全適用,所以本文應(yīng)用神經(jīng)網(wǎng)絡(luò)重新設(shè)計(jì)了對(duì)齊模型.
本文將卷積神經(jīng)網(wǎng)絡(luò)CNN應(yīng)用到中文文本摘要任務(wù),圖2中的CNN的詳細(xì)設(shè)計(jì)如圖3所示.
圖3 CNN模型
CNN 利用3個(gè)不同Size的Kernel 來提取句子中的關(guān)鍵信息(類似于多窗口大小的N-Gram)[13],從而能夠更好地捕捉局部相關(guān)性.
TextCNN模型最大的缺陷是全局的Max Pooling無法提取文本的結(jié)構(gòu)信息,所以文本中的轉(zhuǎn)折、遞進(jìn)等復(fù)雜的語義關(guān)系無法被TextCNN 發(fā)現(xiàn).TextCNN 只能知道文本的關(guān)鍵詞是否出現(xiàn)了,而無法獲知關(guān)鍵詞出現(xiàn)的順序和出現(xiàn)的次數(shù).針對(duì)這個(gè)問題,本文采用k-Max Pooling[14]做一些優(yōu)化,k-Max Pooling 針對(duì)每個(gè)卷積核都不只保留最大的值,而是保留前k個(gè)最大值,并且保留這些值出現(xiàn)的順序,也即按照文本中的位置順序來排列這k個(gè)最大值,其在比較復(fù)雜的文本上相對(duì)于Max Pooling 會(huì)有所提升.k的取值見表1.
表1 不同參數(shù)的TextCNN
同時(shí)為了更多的提取文本的高維特征,本文增加了Filter的數(shù)量,具體參數(shù)見表1.本文為了找到最佳的Filter-Size參數(shù),按照表1設(shè)計(jì)了兩種Size的Kernel來訓(xùn)練模型.此外,為了減少CNN的參數(shù),本文對(duì)1到T時(shí)刻的CNN 采用參數(shù)共享的方法來訓(xùn)練模型.
為了驗(yàn)證上述的改進(jìn)對(duì)模型精度的影響,本文按照表1,分別使用CNN-1和CNN-2的參數(shù)訓(xùn)練模型,并分析生成摘要的質(zhì)量.
將圖2中的Match 框抽象提取出來,如圖4所示.其中h為Encoder的隱藏狀態(tài),s為Decoder的隱藏狀態(tài),α為輸出的數(shù)值.
圖4 Match 示意圖
因?yàn)楸疚牡囊肓薈NN,所以傳統(tǒng)的對(duì)齊模型已不再適用.為了提取長句的高維特征,本文采用神經(jīng)網(wǎng)絡(luò)對(duì)Match進(jìn)行了重新設(shè)計(jì),具體是全連接神經(jīng)網(wǎng)絡(luò),如圖5所示.
圖5 全連接神經(jīng)網(wǎng)絡(luò)示意圖
該結(jié)構(gòu)對(duì)xn?1層和xn層而言,xn?1層的每一個(gè)節(jié)點(diǎn)都和第xn層所有節(jié)點(diǎn)有連接.即第xn層的每個(gè)節(jié)點(diǎn)在進(jìn)行計(jì)算的時(shí)候,激活函數(shù)的輸入是xn?1層所有節(jié)點(diǎn)的加權(quán).由于引入了CNN,所以神經(jīng)網(wǎng)絡(luò)要按照式(10)輸入.
其中,
為了保證α為一個(gè)數(shù)值,本文的NN-Attention 最后一層的激活函數(shù)使用Sigmoid函數(shù)[15].為了找到最佳的對(duì)齊網(wǎng)絡(luò),本文設(shè)計(jì)了兩層模型,并用不同的參數(shù)訓(xùn)練模型,具體參數(shù)如表2所示.
表2 不同NN-Attention的參數(shù)
本文數(shù)據(jù)集采用的是CSTSD數(shù)據(jù)集[16],數(shù)據(jù)來源于新浪微博主流媒體(頭條新聞、環(huán)球網(wǎng)、人民網(wǎng)等)發(fā)布的微博約68萬數(shù)據(jù),本文按照8:1:1的比例切分訓(xùn)練集、驗(yàn)證集、測(cè)試集.
(1)去掉無效字符,如表情、日期、鏈接、數(shù)字等.
(2)長度限制,正文的長度規(guī)定為25到250字,摘要長度規(guī)定為8到35字.
(3)相似度過濾,當(dāng)正文和摘要有6個(gè)相同的字時(shí),本文認(rèn)為該數(shù)據(jù)符合條件.
本文引入詞嵌入解決矩陣稀疏性問題,將輸入文本映射為300維的向量.首先根據(jù)詞頻統(tǒng)計(jì)選取出現(xiàn)頻率最高的詞匯為ENCODER和DECODER 各定義一個(gè)詞匯表,在本文中設(shè)置為60 000,沒在詞匯表中的詞都轉(zhuǎn)換成一個(gè)“Unknown”字符,然后在訓(xùn)練期間學(xué)習(xí)詞嵌入的權(quán)重.
將新聞和摘要同時(shí)輸入到Sequence2Sequence模型中,其中新聞對(duì)應(yīng)Encoder,摘要對(duì)應(yīng)Decoder.整個(gè)輸入編碼和解碼的過程中,按照式(13)使用梯度優(yōu)化算法以及最大似然條件概率為損失函數(shù)去進(jìn)行模型的訓(xùn)練和優(yōu)化.
其中,θ為模型的參數(shù),N為訓(xùn)練集的樣本個(gè)數(shù),(yn,xn)是相應(yīng)的輸出和輸入的序列[3].
本文使用TensorFlow[17]構(gòu)建模型,模型的主要參數(shù)見表3.
表3 模型的主要參數(shù)
當(dāng)模型訓(xùn)練完成后,可以得到之前模型沒見過的源文章的摘要,這個(gè)過程稱為推理.在推理時(shí),我們只能訪問源句子,執(zhí)行解碼有很多種方法.本文采用Beam Search (束搜索)[18]解碼,Beam Search在做摘要時(shí)總是將一小部分頂級(jí)候選詞留在周圍,從而在搜索空間更好地探索所有可能的詞匯.Beam的大小稱為寬度,在本文中設(shè)置為12.同時(shí)本文對(duì)生成的摘要的質(zhì)量采用ROUGE[19]評(píng)估中的ROUGE-1,ROUGE-2和ROUGE-L的F1值進(jìn)行評(píng)估.
采用如表1所示的改進(jìn)前后兩種不同的TextCNN參數(shù)來訓(xùn)練網(wǎng)絡(luò),模型訓(xùn)練的Loss 如圖6所示.
從圖6可以看出,CNN-2的Loss剛開始下降沒有CNN-1快,但是最終的Loss比CNN-1要小.訓(xùn)練之后用應(yīng)用Beam Search對(duì)測(cè)試集的文本進(jìn)行推理,并計(jì)算ROUGE 得分,本文以Sequence2Sequence與Attention的模型作為基線模型,計(jì)算后的得分如表4所示.
圖6 改進(jìn)前后的TextCNN的Loss 曲線
表4 CNN不同Size的參數(shù)的ROUGE F1 得分
從表4可以看出,對(duì)文本摘要的問題,在模型引入CNN 后,模型的性能有了提升.模型雖然有了提升,但是引入CNN 后,模型的參數(shù)增加很多,傳統(tǒng)的基于矩陣變換的注意力機(jī)制已經(jīng)不能很好地表征這個(gè)模型,所以本文引入了NN-Attention,按照表2的參數(shù)來訓(xùn)練模型,并使用CNN-2的模型來訓(xùn)練,訓(xùn)練的Loss 如圖7所示.
圖7 多種NN-Attention參數(shù)的Loss 曲線
訓(xùn)練之后運(yùn)用Beam Search 對(duì)測(cè)試集的文本進(jìn)行推理,并計(jì)算ROUGE 得分,這里以CNN-2的模型作為基線模型,計(jì)算后的得分如表5所示.
表5 不同NN-Attention的參數(shù)的ROUGE F1 得分
從表5可以看出,對(duì)文本摘要的問題,在模型引入NN-Attention 后,模型的性能有了較大的提升.雖然NN-Attention-3模型的損失最小,但是NN-Attention-2模型取得了最好的成績.說明NN-Attention-2模型最適合作為本文提出的NN-Attention模型的網(wǎng)絡(luò),NNAttention-3模型存在過擬合問題.
從測(cè)試集前10條中隨機(jī)取4條,給出測(cè)試結(jié)果如表6.
表6 測(cè)試結(jié)果示例
本文首先對(duì)現(xiàn)有Attention 機(jī)制對(duì)文本摘要問題研究的缺點(diǎn)做了分析,在以往的Attention模型中,只采用了Bidirectional-RNN,BRNN 對(duì)上下文信息是有效的,但是無法提取文本的高維特征,所以本文引入了CNN.因?yàn)楸疚牡囊肓薈NN,所以傳統(tǒng)的對(duì)齊模型已不再適用,本文將Attention模型改進(jìn),提出了NN-Attention以解決這個(gè)問題.之后詳細(xì)描述了GRU、Attention 機(jī)制、CNN、NN-Attention,為了尋找最佳的參數(shù),本文使用多種參數(shù)對(duì)模型進(jìn)行訓(xùn)練,通過計(jì)算ROUGE 得分,給出了最佳模型.最后給出了測(cè)試結(jié)果,從測(cè)試結(jié)果可以看出,生成的摘要比之前的模型有所進(jìn)步,但是就準(zhǔn)確性與可讀性而言,生成的摘要還有待提高,生成式摘要的算法是一個(gè)持續(xù)性的研究課題.
計(jì)算機(jī)系統(tǒng)應(yīng)用2020年7期