夏鴻斌,肖奕飛,劉 淵
1.江南大學 人工智能與計算機學院,江蘇 無錫214122
2.江蘇省媒體設計與軟件技術重點實驗室,江蘇 無錫214122
在機器翻譯、文本摘要、問答系統等自然語言處理中,生成語句通順、連貫的文本是非常重要的。而這些都是基于有監督的文本生成,無監督的文本生成最近引起了重大關注。
一種最早由Cho 等人提出的經典方法是訓練一個遞歸神經網絡(recurrent neural network,RNN),后來用作最大化給定觀察到的每個正確的標注數據的對數似然性。但是由于它采用的是線性序列結構,當用于反向傳播時存在傳播路徑太長、梯度消失或者梯度爆炸等優化困難的問題。為了解決這個問題,有學者引入了長短期記憶網絡(long short-term memory,LSTM)和門控循環單元(gated recurrent unit,GRU)模型。通過增加中間狀態信息直接向后傳播,解決了梯度消失問題,使得LSTM 和GRU 成為RNN的標準模型。后來,自然語言處理(natural language processing,NLP)又從圖像領域借鑒并引入了注意力機制,疊加網絡把深度做深,以及引入編碼器-解碼器框架,這些技術進展極大拓展了RNN的能力。2015年,LeCun 等人將卷積神經網絡(convolutional neural networks,CNN)引入NLP 領域,使用時間卷積網絡(ConvNets)將深度學習應用于從字符級輸入一直到抽象文本概念的文本理解。CNN強有力的并行計算能力使得其已經完全取代了RNN 在NLP 領域中的地位。但是CNN不同于RNN的線性結構,不會自然地將位置信息進行編碼,因此存在位置編碼的問題,當在設計模型中加入池化層時,CNN 會丟失相對位置信息。就目前CNN 的發展趨勢來看,大多數已經放棄池化層,選擇加深卷積層的深度。2017年,谷歌首次提出了Transformer并用于機器翻譯任務,并以Transformer為基礎提出了bert模型,該模型編碼器部分由Multi-Head Attention和一個全連接組成,用于將輸入語料轉化成特征向量。Transformer不像RNN或CNN,必須明確地在輸入端用位置函數來進行位置編碼。在長距離捕獲特征和并行計算能力等方面,Transformer表現出比RNN和CNN更明顯的優勢。
生成對抗網絡(generative adversarial networks,GAN)最早是在2014 年由Goodfellow 提出,用于連續的數據例如圖像、圖片和視頻生成等。并逐步應用于離散數據,例如文本生成。生成對抗網絡包含生成器網絡和判別器網絡,這些網絡可以是神經網絡,例如卷積神經網絡、遞歸神經網絡等。這兩個網絡之間相互博弈,生成器網絡目標是生成完美能欺騙判別器的虛假圖像,而判別器的目標則是分辨出圖像的真實性。經過反復多次的博弈,最終使得生成器網絡生成的圖像能被判別器網絡認同。標準的GAN在處理離散數據時會遇到生成器難處理傳遞梯度和判別器不能評估殘缺的序列等困難,AAAI 2017的文獻[10]提出的序列對抗網絡(sequence generative adversarial networks,SeqGAN)解決了這些問題。核心思路是將GAN 作為一個強化學習系統,用策略梯度算法更新生成器的參數,同時采用蒙特卡洛搜索算法,實現對任意時刻的殘缺序列都可以進行評估。盡管如此,SeqGAN 仍存在缺陷,即當要生成較長的文本時,判別器的指導信號的稀疏性使得生成過程中缺少與文本結構相關的中間信息,從而導致效果不夠良好。隨后AAAI 2018的文獻[11]提出了一種叫作LeakGAN(leak generative adversarial networks)的新算法框架,通過泄露由判別器提取的特征作為逐步引導信號,以指導生成器更好地生成長文本,同時借鑒分層強化學習從判別器向生成器提供更豐富的信息。在GAN中,鑒別器使用CNN提取輸入信息的特征向量,來指導生成器中MANAGER 模塊的訓練,使指導信號更有信息性,同時使用分層生成器結構,將整個生成任務分解為各種子任務,進而緩解指導信號的稀疏性問題。但是,對于使用這種分層強化學習,會導致生成對抗網絡在訓練上遇到許多困難,以及生成長文本缺乏多樣性。2019年,文獻[15]提出了一種叫作RelGAN(relational generative adversarial networks)的網絡模型。該模型不僅解決了上述兩個問題,并且對初始化參數和超參數也加以優化。其主要思想是利用relational memory,使生成器具有更強表達能力和在長文本上更好的模型能力。利用gumbel-softmax relaxation模型訓練生成對抗網絡,代替強化學習啟發式算法。在判別器上利用多層詞向量表示,使得生成器往更具多樣性方向更新。
淺層CNN不具備捕獲長距離依賴關系和區分位置信息的能力,Transformer雖然可以彌補其缺點,但是計算量大,并行速度慢。本文在文獻[11]的基礎上對LeakGAN 模型引入多頭自注意力機制,并命名為SALGAN(self-attention leak generative adversarial networks)模型,將多頭自注意力機制融入CNN 模型獲取原始文本的全局語義信息,從而提高CNN 模型的長距離捕獲能力。在生成器中使用GRU模型編碼訓練,使得參數減少,加快訓練速度。
本文工作的主要貢獻:
(1)引入多頭自注意力機制與CNN模型相結合,增強CNN 模型的長距離特征提取能力,multi-head的數量越多,長距離特征捕獲能力越強,相比傳統CNN更快達到擬合。
(2)在生成器部分引入GRU替換掉LSTM,利用其參數少、訓練速度快的優點,降低了計算量,提高了生成文本的質量。
生成對抗網絡其實就是一個極大極小的博弈,主要由判別器和生成器構成,如圖1所示。在博弈的過程中,生成器生成的數據盡可能地欺騙判別器,判別器無法分辨生成的數據就是真實數據,判別器的作用就是區分哪些是真實數據,通過反復多次這樣的交替訓練,判別器和生成器兩個模型不斷增強,直到判別器判斷生成的數據就是真實數據并且生成器生成的數據與真實數據十分相似,也就能得到完美的生成效果。換句話說,就是極大化判別器的判斷能力,極小化生成器的被識破的概率,因此有以下公式:

圖1 生成對抗網絡Fig. 1 Generative adversarial networks

判別網絡進行次更新,生成網絡才會完成一次更新,當判別網絡進行更新時,()越大越好,噪聲函數()越小越好,因此需要最大化判別模型,而在生成網絡更新時則相反,需要最小化生成模型。
首先介紹自注意力機制(self-attention),自注意力機制計算三個新向量、、,分別由嵌入向量與一個隨機初始化的矩陣相乘得到。然后,乘以的轉置表示編碼一個詞,表示對輸入的其他部分的關注度。接下來這個關注程度除以一個常數后做softmax 操作,表示其他部分對這個詞的相關性程度。最后使用和softmax 得到的值相乘,結果即為self-attention在這個詞的值,如下所示:

多頭自注意力(multi-head self-attention)就是由多個self-attention 組成的,初始化多組、、,然后把這些矩陣降為一個矩陣,再與一個隨機初始化的矩陣相乘即可。如下所示:

文獻[7]提出一種向量位置編碼解決詞順序問題的方法。位置編碼的維度和嵌入的維度相同,將位置編碼與嵌入的值相加,代替原本嵌入的值傳遞給下一層。位置向量能表示當前詞所在位置。其常用的計算方法有以下三種:
第一種采用正弦位置進行編碼,位置編碼必須要和詞向量的維度相同,位置為偶數時用正弦函數,位置為奇數時用余弦函數:

第二種是相對位置表達,當相對位置超出規定的某個閾值的絕對值時,都用該閾值進行代替,如圖2所示。

圖2 相對位置表達Fig. 2 Relative position expression
第三種采用學習位置編碼。對應每個位置學得獨立的向量,方法與生成詞向量大致相同。
經過比較,本文采用第三種方法。前饋神經網絡提供非線性變換。注意力機制輸出的維度由輸入的batch_size與句子長度的乘積和判別器中的卷積核層數與卷積核數量的乘積決定。
在文獻[11]提出的LeakGAN 模型基礎上,構建一種改進SALGAN模型。將多頭自注意力機制融入到CNN 模型中,引入位置信息編碼,使得CNN 模型對于長距離特征提取能力顯著提高,將WORKER模塊使用GRU 代替LSTM 進行編碼,提高運算速度并改善文本生成質量,SALGAN模型如圖3所示。

圖3 SALGAN模型Fig. 3 SALGAN model
與傳統的GAN 訓練框架不同,判別器新增內部狀態特征f,其作用是向生成器提供當前生成句子的特征,分層生成器包含一個高層次的MANAGER模塊和一個低層次的WORKER 模塊,生成器通過MANAGER模塊將判別器泄露的信息進行非線性變換,并且利用生成詞的提取特征輸出一個潛在向量來指導WORKER 模塊進行下一個詞的生成。給定MANAGER生成的目標嵌入,WORKER首先用GRU編碼當前生成的詞,然后結合MANAGER 的輸出和目標嵌入,并在當前狀態下采取最終動作。 s表示當前生成的所有詞,作為當前狀態,表示隨機策略參數化生成網絡,(·|s)表示將s映射到整個詞匯表的一個分布,x表示下一個詞,D表示參數化判別器,f表示判別器在當前狀態為生成器提供的特征向量。考慮到當句子變長時,標量引導信號的信息量相對較少,因此允許判別器向生成器提供當前狀態下的特征向量f,生成器的分層結構能更好地利用其泄露的信息進行生成。
其對抗文本生成使用D作為學習獎勵函數:

MANAGER 模塊是一個LSTM 模塊,在每一時間步,輸入提取的特征向量f,并輸出一個目標向量g,然后將該目標向量g作為WORKER 模塊的輸入,以指導下一個詞的生成。
MANAGER 和WORKER 模塊都從全零隱藏狀態開始,在每一步中,MANAGER從判別器中接收泄漏的特征向量f,該特征向量進一步與MANAGER的當前隱藏狀態相結合產生目標向量g:

為了整合MANAGER 產生的目標,對最近個目標求和后,結合權重矩陣進行線性變換,以產生維目標嵌入向量w:

給定目標嵌入向量g,WORKER模塊以當前詞x作為輸入,輸出一個矩陣o,再與w通過矩陣乘積相結合,通過一個softmax可以得到:

然后使用策略梯度算法以端到端的方式訓練生成器。分別對MANAGER 和WORKER 模塊訓練,可以使用蒙特卡洛搜索算法進行估算,MANAGER模塊的梯度定義為:

同理,WOEKER模塊的梯度定義為:

WORKER模塊的內在獎勵被定義為:

在實踐中,需要在對抗訓練前對生成器進行預訓練。其中MANAGER的預訓練梯度為:

MANAGER被訓練成模擬特征空間中真實文本樣本的轉換,而WORKER 則是通過最大似然估計來訓練的。
在訓練過程中,生成器和判別器交替訓練。在生成器中,MANAGER和WORKER也為交替訓練。
采用Pytorch深度學習作為框架,在Linux 64位操作系統,Pycharm 2019,CPU為IntelCorei7-7700k@4.20 GHz,內存32 GB,GPU 為11 GB 1080Ti,python 3.7(Anaconda)的環境下進行對比實驗分析。
為了數據集的統一性和讓最終生成結果更具有可對比性,本文使用Image_COCO(1 MB)數據集和EMNLP2017 WMT News(48 MB)數據集,其中數據均已完成分詞預處理,并按照文獻[15]的標準進行劃分:在Image_COCO 數據集中,訓練集和測試集分別由10 000 個句子組成,設置樣本數量為10 000,單個句子最大長度為37,詞匯表大小為4 658。EMNLP-2017 WMT News 數據集包含270 000 個句子的訓練集和10 000個句子的測試集,設置樣本數量為10 000,單個句子最大長度為51,詞匯表大小為5 256。
對于合成數據,本文使用兩種負對數似然值和對應的,前者用于測試樣本多樣性,后者用于測試樣本質量,負對數似然常用于解決分類問題,也可用于測量兩種概率分布之間的相似性,取負是為了讓最大似然值和最小損失相對應。定義如下:


對于真實數據集,為了評估本文模型的精確性和相似度,選擇一種廣泛使用于文本生成領域且適用于分析生成文本和參考文本中元組出現的程度的評價方法BLEU作為評價指標,定義為:

其中,候選譯文可以表示為c,而對應的一組參考譯文可以表示為s={s,s,…},-gram 表示個單詞長度的詞組集合,令w表示第組可能的-gram,h(c)表示w在候選譯文c中出現的次數,h(s)表示w在參考譯文s中出現的次數。
因為普通的CP值計算并不能評價翻譯的完整性,但是這個屬性對于評價翻譯的質量不可或缺,所以研究者們在最后的_值之前加入BP 懲罰因子:

本質上,BLEU 是一個-gram 精度的加權幾何平均,按照下式計算:

在本文中,取2,3,4,5,而w一般對所有取常值,即1/。
為了驗證提出的SALGAN 模型的性能,本文對比了修改前后的傳統的泄露生成對抗網絡模型LeakGAN和另外兩個生成對抗網絡模型SeqGAN和RelGAN以及基線模型MLE。
(1)MLE:MLE在生成對抗網絡中取得較好結果,是一種采用LSTM訓練的簡單的生成對抗網絡模型。
(2)SeqGAN:Yu等人通過強化學習作為框架,使用策略梯度算法和蒙特卡洛搜索分別對單個詞進行考量。
(3)LeakGAN:Guo 等人通過判別器泄露特征信息指導生成器中的兩個LSTM對單個詞進行生成,從而解決了長文本信息稀疏性的問題。
(4)RelGAN:Narodytska 等人在生成器上使用relational-memory 代替傳統的LSTM,同時為了簡化模型,使用gumbel-softmax relaxation 進行訓練,在多樣性和質量上有很大提升。
(5)SALGAN:本文模型,融入多頭自注意力機制,改善傳統CNN 僅能解決局部文本語義的特征提取能力,隨后采用GRU代替LSTM進行編碼,減少運算時間。
在COCO IMAGE CAPTIONS 和EMNLP2017 WMT NEWS兩個真實數據集上進行實驗,這里考慮到SALGAN 模型GPU 占用率和使用設備配置以及運行時間等因素。由于EMNLP2017 WMT NEWS數據集較大,將batch_size 設置為32,COCO IMAGE CAPTIONS 數據集對應的batch_size 設置為64,其他模型batch_size 均設置為64。對于SeqGAN 模型,生成器學習率為0.01,判別器學習率為0.000 1,dropout設置為0.2,MLE 訓練epoch 設置為120,對抗訓練epoch 設置為200;對于LeakGAN 和SALGAN 模型,生成器學習率設置為0.001 5,判別器學習率為0.000 1,dropout 設置為0.2,MLE訓練epoch設置為8,對抗訓練epoch設置為200,溫度設置為1.0;對于RelGAN模型,生成器學習率設置為0.01,判別器學習率為0.000 1,dropout 設置為0.2,MLE 訓練epoch 設置為150,對抗訓練epoch設置為3 000,溫度設置為100.0。
(1)合成數據
分別對長度為20 和40 的合成數據進行對比實驗,作為表1 中SALGAN 模型與其他模型的對比實驗結果,其中基線模型是MLE。

表1 合成數據實驗結果Table 1 Experimental results of synthetic data
從表1中可以得出,SALGAN模型在該實驗中表現出的性能優于其他對比模型。隨著文本長度的增加,SALGAN 模型的性能也是最好的。由于GRU 參數量少,WORKER模塊采用GRU解決了在保留長期序列信息下減少梯度消失問題,運行速度加快。GRU只使用兩個門控開關,減少了過擬合的風險,效果與LSTM 接近,當引入GRU 后效果提升顯著。結果證明該方法的有效性是基于GRU 的改進,該方法可適用于生成短文本以及中長度文本。
(2)COCO IMAGE CAPTIONS數據集
為了驗證SALGAN 模型在中長度文本中的性能,在COCO IMAGE CAPTIONS數據集上進行對比實驗,實驗結果如表2 所示。根據結果可以得出:本文的SALGAN 模型相比LeakGAN 模型性能有較大提升,RelGAN模型在該數據集上生成的文本效果要優于LeakGAN 模型,SALGAN 模型在相同環境上對比RelGAN 模型的評價指標(BLEU-2,3,4,5)分別提升了1.6%、4.9%、4.4%、6.9%。

表2 COCO IMAGE CAPTIONS數據集實驗結果Table 2 Experimental results of COCO IMAGE CAPTIONS dataset
因為在小型英文數據集中,LeakGAN 模型使用LSTM 對單個詞進行編碼參數量較大,花費時間過長,采用參數量減少的GRU代替LSTM,在一定程度上減少了過擬合的風險。由于傳統CNN是通過堆積深度捕獲長距離特征,當卷積核的大小和深度增加,可以獲得更大的長度覆蓋,而對于本文的SALGAN模型,引入多頭自注意力機制提高CNN 模型的長距離捕獲能力,影響其主要因素是multi-head 的數量。在資源有限的環境下,經調整超參數后,SALGAN模型的特征提取能力增強。因此證明,SALGAN 模型中的CNN與自注意力機制相結合的方式能極大提高長距離特征提取能力,傳遞更完整的特征信息指導文本生成,提高文本生成質量。又由于生成對抗網絡訓練速度比較緩慢,GRU相比LSTM參數量小,可以在一定程度上加快訓練速度。
(3)EMNLP2017 WMT NEWS數據集
為了驗證SALGAN 模型生成長文本的性能,在EMNLP2017 WMT NEWS 數據集上進行對比實驗,實驗結果如表3所示。實驗結果表明:相比LeakGAN模型,SALGAN模型的評價指標在BLEU-2和BLEU-3 上提升了6.1%和1.4%。RelGAN 模型性能優于LeakGAN 模型,而本文的SALGAN 模型在BLEU-2上對比RelGAN模型提升了1.0%。

表3 EMNLP2017 WMT NEWS數據集實驗結果Table 3 Experimental results of EMNLP2017 WMT NEWS dataset
可以得出結論,在長文本英文數據集中,隨著序列變長,數據復雜度變大,由于GRU 參數較少,導致其編碼效果不如LSTM,又由于CNN 捕獲長距離特征的能力與卷積核的大小和深度有關,本文模型中的CNN 與自注意力相結合增強特征信息的提取能力,使其包含文本的全局語義信息。當數據量非常大時,達到擬合的速度比傳統CNN 快且生成的文本有較好的相關性,因此本文模型融入自注意力機制后的長距離特征捕獲能力和語義特征提取能力比傳統CNN模型提升更為明顯。而通過對比本文模型和RelGAN 模型可以得知,當處理較長文本時,采用LSTM編碼效果比GRU更優。
(4)生成樣本示例
考慮僅通過BLEU 作為評價指標評估模型生成文本質量的好壞具有一定的片面性,因此也可以觀察每個模型生成的樣本,較主觀地評價生成樣本的流暢程度以及語法邏輯問題。
為了更好地驗證并評估生成文本的質量,在線下邀請20個人完成問卷調查填寫。為了實驗的公平性,每個問卷包含由SeqGAN、LeakGAN、RelGAN 和本文的SALGAN模型分別隨機生成的10個句子,要求參與人員判斷生成句子的真實性,即主觀判斷該句子是否由機器生成。如果認為該句子是真實的則得分加一,反之不得分。最終計算每個模型的平均得分,得分越高表示生成效果越真實,質量越好。最終的問卷調查結果如圖4所示。根據圖中數據顯示:本文的SALGAN模型生成的句子相比于其他模型來說具有更好的可讀性和全局一致性。每個模型分別在COCO IMAGE CAPTIONS 與EMNLP2017 WMT NEWS 兩個真實數據集上生成的部分樣本如表4所示。

表4 真實數據集生成樣本示例Table 4 Examples of samples generated from real datasets

圖4 圖靈測試結果Fig. 4 Results of Turing test
針對傳統生成對抗網絡存在生成長文本時判別器指導信號稀疏的問題和學習文本局部語義信息的限制,本文提出一種融入自注意力機制的長文本生成對抗網絡模型。考慮到分層生成器效果十分緩慢,MANAGER 模塊仍采用LSTM 編碼特征向量效果更好,WORKER 模塊使用結構簡單的GRU 編碼,可以適當減少計算量,提高運算效率的同時還能提高文本生成質量。此外,對比了另外三種深度學習模型SeqGAN 和RelGAN 以及原模型LeakGAN,實驗結果顯示,SALGAN 模型在上述兩個真實數據集上均表現出較好的結果,證明采用本文模型提取文本信息的上下文語義關系和關鍵信息能一定程度上提高文本生成的質量,并且GRU 的代替在小數據集上不僅沒有因為缺少運算導致評價指標降低,還減少了運行時間,并且在合成數據中提高了生成樣本的質量。
盡管SALGAN模型的評測指標有一定的提高,但由于生成器部分采用的WORKER模塊和MANAGER模塊均對單個詞進行處理,導致實驗效率低下,并且占用GPU資源量大,而且GRU在大數據集中表現不佳。因此接下來的工作可嘗試將本文思想應用于中文數據集,從中文分詞等角度改善運算效率。考慮到生成器難以控制的問題,還可以嘗試在生成模型和判別模型上為數據添加標簽,減少關鍵信息的缺失,進一步地提高提取特征向量的能力。