韓 虎,孫天岳,趙啟濤
(1.蘭州交通大學(xué)電子與信息工程學(xué)院,甘肅 蘭州 730070; 2.甘肅省人工智能與圖形圖像工程研究中心,甘肅 蘭州 730070)
文本生成是自然語(yǔ)言處理NLP(Natural Language Processing)的熱點(diǎn)研究?jī)?nèi)容,其研究如何使機(jī)器熟練地使用自然語(yǔ)言與人類一樣進(jìn)行表達(dá)和寫作,主要應(yīng)用在:機(jī)器翻譯[1]、自動(dòng)摘要[2]和對(duì)話系統(tǒng)[3]等。一般是指將文本、語(yǔ)音、圖像、視頻等作為輸入,產(chǎn)生文本數(shù)據(jù)的過程,目前研究的主流是對(duì)源文本的特征提取、風(fēng)格模擬,以產(chǎn)生與源文本含義相似的文字。
基于神經(jīng)網(wǎng)絡(luò)的文本生成模型是近幾年的研究熱點(diǎn),研究人員使用卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)[4]、循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Netowrk)[5]、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)LSTM(Long Short-Term Memory)[6]和對(duì)抗神經(jīng)GAN(Generative Adversarial Network)[7]網(wǎng)絡(luò)等研究文本生成問題,從目前的效果來(lái)看,生成的文本仍然差強(qiáng)人意。主要存在以下問題:(1)對(duì)書寫符號(hào)只能仿照使用,無(wú)法熟練運(yùn)用。(2)文本創(chuàng)新性不足。生成的文本容易出現(xiàn)對(duì)源文本的仿照,沒有創(chuàng)新性的句子與詞匯產(chǎn)生。(3)目前的模型對(duì)短文本可以取得較好的生成結(jié)果,例如古詩(shī)詞、對(duì)聯(lián)等形式的文本,但對(duì)長(zhǎng)文本(一般認(rèn)為在140個(gè)字符以上[8,9]),如文本摘要、歌曲創(chuàng)作等,會(huì)出現(xiàn)模型難收斂、計(jì)算量大、訓(xùn)練維度不可控等問題。
基于上述背景,本文提出編碼解碼連接對(duì)抗網(wǎng)絡(luò)EAD_GAN(Encoder and Decoder GAN)模型,擬解決基于對(duì)抗網(wǎng)絡(luò)的長(zhǎng)文本生成問題。模型主要結(jié)合自編碼器Auto-Encoder[10]、交叉熵[11]和強(qiáng)化學(xué)習(xí)[12]技術(shù),改進(jìn)GAN網(wǎng)絡(luò)。首先使用自編碼模塊提取原文本特征,之后將隨機(jī)數(shù)據(jù)通過前饋網(wǎng)絡(luò)轉(zhuǎn)換成具有原文本特征信息的數(shù)據(jù),將其作為生成器的輸入,生成器使用LSTM網(wǎng)絡(luò),鑒別器使用CNN網(wǎng)絡(luò)。最后解決生成文本的創(chuàng)新性不足問題,引入強(qiáng)化學(xué)習(xí)和交叉熵作為鑒別器中句子級(jí)和單詞級(jí)的獎(jiǎng)勵(lì),提高文本生成的質(zhì)量。
2011年Sutskever等人[13]在會(huì)話方面解決了RNN訓(xùn)練困難的問題,使用RNN成功生成文本;2012年He等人[14]在統(tǒng)計(jì)模型基礎(chǔ)上,為每一行古詩(shī)進(jìn)行特定訓(xùn)練,生成中國(guó)古詩(shī);在此基礎(chǔ)上,2014年Zhang等人[15]使用RNN學(xué)習(xí)到單個(gè)字符的多種不同組合,解決了多個(gè)字符間關(guān)聯(lián)的問題,使產(chǎn)生的詩(shī)歌更流暢。同年,Sutskever等人[16]使用了Seq2Seq(序列到序列模型)模型,使模型可以學(xué)習(xí)到詞組組合、主動(dòng)語(yǔ)態(tài)和被動(dòng)語(yǔ)態(tài)的表示,并且對(duì)自然語(yǔ)言處理的各個(gè)研究領(lǐng)域產(chǎn)生了重大影響。2016年 Wang等人[17]在前人基礎(chǔ)上使用帶注意力機(jī)制的模型,實(shí)現(xiàn)了詩(shī)歌的多樣性生成。
2015年Wen等人[18]使用LSTM模型通過簡(jiǎn)單的交叉熵訓(xùn)練,使生成的語(yǔ)句很容易地實(shí)現(xiàn)語(yǔ)言變化,提高了對(duì)話系統(tǒng)的真實(shí)性。2018年Tan等人[19]引入門控分層LSTM模型,在問答系統(tǒng)中取得了較好的成績(jī)。
2014年Cho等人[20]使用編碼解碼模型和卷積門控遞歸網(wǎng)絡(luò),使產(chǎn)生的文本具有明顯的語(yǔ)法結(jié)構(gòu)。同年Bahdanau等人[21]在模型中加入軟注意力機(jī)制匹配原句中與預(yù)測(cè)目標(biāo)詞相關(guān)的部分,提高了長(zhǎng)文本生成的準(zhǔn)確率。
2014年Goodfellow 等人[7]提出對(duì)抗生成神經(jīng)網(wǎng)絡(luò)GAN,GAN模型啟發(fā)于博弈論中的二人零和博弈,GAN 模型中的博弈雙方就是生成器和鑒別器。生成器盡可能生成假數(shù)據(jù)騙過鑒別器,而鑒別器學(xué)習(xí)真實(shí)數(shù)據(jù)后,區(qū)分真實(shí)數(shù)據(jù)和生成數(shù)據(jù),當(dāng)鑒別器無(wú)法鑒別生成器生成的數(shù)據(jù)時(shí)就達(dá)到了平衡。Zhang等人[22]提出了TextGAN模型,鑒別文本生成好壞的任務(wù)就由鑒別器來(lái)處理,通過更新參數(shù)和對(duì)參數(shù)優(yōu)化,直至生成文本與真實(shí)文本無(wú)法分辨。由于GAN網(wǎng)絡(luò)對(duì)于離散數(shù)據(jù)的采樣過程是不可微的,Kusner等人[23]使用Gumbel-softmax GAN網(wǎng)絡(luò)模型,解決了離散數(shù)據(jù)在訓(xùn)練過程中梯度不可傳遞的問題,并成功地應(yīng)用于文本生成任務(wù)。Yu等人[24]提出SeqGAN模型,將強(qiáng)化學(xué)習(xí)中的蒙特卡洛搜索樹[25]加入GAN中,提高生成文本的質(zhì)量。目前,較多學(xué)者將GAN應(yīng)用于文本生成任務(wù)時(shí),都在模型中加入了強(qiáng)化學(xué)習(xí)來(lái)提高生成的效果。而SeqGAN模型的創(chuàng)新之一,就是使用蒙特卡洛搜索樹來(lái)提高生成單詞的獎(jiǎng)勵(lì),并且獎(jiǎng)勵(lì)能夠影響梯度的變化。
本文使用的GAN模型的公式表達(dá)為:
EZ~PG[1-logD(G(Z))]
(1)
其中,EX~Pdata代表服從真實(shí)數(shù)據(jù)分布的X訓(xùn)練鑒別器,EZ~PG代表服從隨機(jī)數(shù)據(jù)分布的Z訓(xùn)練生成器和鑒別器,G代表生成器,D代表鑒別器,G(Z)表示生成數(shù)據(jù),D(X)表示真實(shí)數(shù)據(jù)。
本文提出的EAD_GAN模型將編碼器和解碼器融入到GAN中,充分利用編解碼模型獲取特征的能力,提取關(guān)鍵特征。EAD_GAN模型的結(jié)構(gòu)如圖1所示。
Figure 1 Structure of EAD_GAN model 圖1 EAD_GAN模型結(jié)構(gòu)圖
生成器分為2個(gè)部分:自編碼部分和強(qiáng)化學(xué)習(xí)部分。自編碼部分使用Auto-Encoder模型,目的是使隨機(jī)生成的數(shù)據(jù)更符合真實(shí)數(shù)據(jù)的分布,同時(shí)加快訓(xùn)練的過程。強(qiáng)化學(xué)習(xí)部分使用強(qiáng)化學(xué)習(xí)對(duì)模型進(jìn)行訓(xùn)練,使用真實(shí)數(shù)據(jù)對(duì)鑒別器進(jìn)行訓(xùn)練,對(duì)生成的單詞和句子進(jìn)行獎(jiǎng)勵(lì)指導(dǎo)。
生成器的自編碼部分包含3個(gè)模塊:編碼器模塊、連接模塊和解碼器模塊。編碼器模塊和解碼器模塊都是由自動(dòng)編碼器實(shí)現(xiàn)的,對(duì)真實(shí)文本的數(shù)據(jù)利用序列到序列模型Seq2Seq提取特征。連接模塊使用前饋神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)參數(shù),使真實(shí)文本的上一句的特征表示通過前饋網(wǎng)絡(luò)可以學(xué)習(xí)到下一句的特征,然后將隨機(jī)數(shù)據(jù)放入前饋網(wǎng)絡(luò)中已經(jīng)訓(xùn)練好的參數(shù)中,生成特征數(shù)據(jù),如圖2所示。
Figure 2 Three modules of self coding part in EAD_GAN 圖2 EAD_GAN自編碼部分的3個(gè)模塊
3.1.1 編碼器模塊
hfront=Encoder(yfront)
(2)
(3)
(4)
3.1.2 解碼器模塊
hback=Encoder(yback)
(5)
(6)
解碼器模塊的損失函數(shù)定義如下:
(7)
3.1.3 連接模塊
連接模塊是連接2個(gè)模塊的橋梁,也是保證能夠?qū)W習(xí)到文本的真實(shí)數(shù)據(jù)分布的關(guān)鍵一步。 連接模塊的目的是確保隨機(jī)生成的文本在語(yǔ)義上和真實(shí)文本相同。簡(jiǎn)單起見,模型只使用簡(jiǎn)單的前饋網(wǎng)絡(luò)g(a),前饋網(wǎng)絡(luò)的定義為:
g(a(l))=Sigmoid(W(l)*a(l-1)+b(l))
(8)
其中,a(l-1)表示第l-1層神經(jīng)元的輸出,W(l)表示從第l-1層到第l層的權(quán)重矩陣,b(l)表示從第l-1層到第l層的偏置,g(a(l))表示第l層神經(jīng)元的輸出,本文使用Sigmoid函數(shù)作為激活函數(shù)。
連接模塊Mθ3將hfront作為前饋網(wǎng)絡(luò)的輸入,目標(biāo)為hback,對(duì)前饋網(wǎng)絡(luò)的參數(shù)θ3進(jìn)行約束,要求滿足L2范式,使模型不會(huì)過擬合,并且可以學(xué)習(xí)到真實(shí)數(shù)據(jù)分布。公式表達(dá)為:
hback=g(hfront)
(9)
(10)
3.1.4 強(qiáng)化學(xué)習(xí)部分
Figure 3 Reinforcement learning model in generator in EAD-GAN 圖3 EAD_GAN生成器中的強(qiáng)化學(xué)習(xí)模型
生成器中的期望可表示為:
J4(θG)=
(11)
其中,sn為生成器生成的句子,且通過了鑒別器的鑒別。
同時(shí)得到生成器總期望為:
JG(θ1,θ2,θ3,θG)=
J4(θG)+γ[J1(θ1)+J2(θ2)+J3(θ3)]
(12)
其中,γ是可動(dòng)態(tài)調(diào)整的參數(shù)。
鑒別器采用CNN網(wǎng)絡(luò),是一個(gè)二元分類器,用來(lái)判斷一個(gè)句子是生成數(shù)據(jù)還是真實(shí)數(shù)據(jù)。輸出的值是0~1的數(shù),代表該句子是真實(shí)數(shù)據(jù)的概率。鑒別器引入交叉熵函數(shù),構(gòu)建單詞級(jí)獎(jiǎng)勵(lì)和句子級(jí)獎(jiǎng)勵(lì),希望產(chǎn)生創(chuàng)新性語(yǔ)句。
3.2.1 單詞級(jí)獎(jiǎng)勵(lì)
將生成器生成的所有句子放入鑒別器中,把鑒別值大于0.5的句子,組成一個(gè)生成集合S={s1,s2,…,sn},對(duì)生成集合中每個(gè)句子相同位置上單詞(即節(jié)點(diǎn))的獎(jiǎng)勵(lì)全部相加求平均,得到的平均數(shù)作為該位置的單詞級(jí)獎(jiǎng)勵(lì),同時(shí)引入交叉熵作為創(chuàng)新性的體現(xiàn)。交叉熵定義公式為:
loss=-tlogp-(1-t)log(1-p)
(13)
其中,t為類別,p為該類別的概率值。本文把真實(shí)數(shù)據(jù)和生成數(shù)據(jù)認(rèn)為是2種類別,分別對(duì)應(yīng)0和1,則式(13)可簡(jiǎn)化為:
loss=-logp
(14)
單詞級(jí)獎(jiǎng)勵(lì)定義如下:
(15)
其中,γ′是學(xué)習(xí)率,D(si)是通過鑒別器的句子得到的獎(jiǎng)勵(lì)分?jǐn)?shù)。
3.2.2 句子級(jí)獎(jiǎng)勵(lì)
句子級(jí)獎(jiǎng)勵(lì)是所有單詞級(jí)獎(jiǎng)勵(lì)的累加和求平均,如式(16)所示:
(16)
利用LSTM網(wǎng)絡(luò)生成100 000個(gè)長(zhǎng)度為30個(gè)字符且服從標(biāo)準(zhǔn)正態(tài)分布的數(shù)據(jù)作為真實(shí)數(shù)據(jù),標(biāo)記為1,代表真實(shí)數(shù)據(jù)。使用生成器中的自編碼模塊,學(xué)習(xí)前句與后句的特征表示,訓(xùn)練10輪,將隨機(jī)數(shù)據(jù)作為前饋神經(jīng)網(wǎng)絡(luò)的輸入(即圖2中連接模塊里隨機(jī)數(shù)據(jù)),通過前饋神經(jīng)網(wǎng)絡(luò)的計(jì)算得到圖2中的特征數(shù)據(jù),將特征數(shù)據(jù)標(biāo)記為0。特征數(shù)據(jù)和真實(shí)數(shù)據(jù)共同訓(xùn)練鑒別器并加入L2正則化防止過擬合。
本文使用BLEU(BiLingual Evaluation Understudy)[26]評(píng)價(jià)生成的序列。這是由IBM在2002年提出的機(jī)器翻譯自動(dòng)評(píng)測(cè)方法,同時(shí)也適用于文本生成的效果評(píng)價(jià),BLEU采用的方法是統(tǒng)計(jì)同時(shí)出現(xiàn)在系統(tǒng)給定的譯文中和人類專家寫出的參考譯文中的n元詞的個(gè)數(shù),最后用匹配到的n元詞的數(shù)目除以系統(tǒng)全文的單詞數(shù)目,得到評(píng)測(cè)結(jié)果。本文采用BELU中BELU-2、BELU-3和BELU-4 3種評(píng)價(jià)指標(biāo)對(duì)生成的文本進(jìn)行評(píng)價(jià)。
為了評(píng)估本文提出的EAD_GAN模型在文本生成任務(wù)中的表現(xiàn),將其與在文本生成上取得效果的其他模型:RNN、Gumbel-softmax GAN和SeqGAN進(jìn)行對(duì)比。
(1)RNN[5]:RNN是在文本生成中最早使用且取得較好結(jié)果的深度學(xué)習(xí)模型之一。本文實(shí)驗(yàn)中學(xué)習(xí)模型和生成模型都為RNN,學(xué)習(xí)模型的最后隱藏狀態(tài)作為生成器的輸入,再由生成器生成文本。
(2)Gumbel-softmax GAN[23]: 基于Gumbel-softmax分布解決離散對(duì)象的分布采樣過程是不可導(dǎo)的問題,生成的文本也具有一定的可讀性與連貫性。生成模型和判別模型都為L(zhǎng)STM模型,參數(shù)通過基于梯度的算法進(jìn)行更新。
(3)SeqGAN[24]:SeqGAN是近幾年文本生成中影響力較大的模型,較Gumbel-softmax GAN更好地解決了文本離散化參數(shù)不易更新的問題。Yu等人[24]把GAN網(wǎng)絡(luò)看作強(qiáng)化學(xué)習(xí)系統(tǒng),用Policy Gradient算法更新生成器的參數(shù);用蒙特卡洛搜索樹更新Discriminator的參數(shù),并且可以對(duì)模型中任意時(shí)刻的非完整序列文本進(jìn)行評(píng)估,以提高文本生成的速度和質(zhì)量。
EAD-GAN與當(dāng)前流行的文本生成模型進(jìn)行比較的實(shí)驗(yàn)結(jié)果如表1 所示。
Table 1 Performance comparison of various models表1 各種模型實(shí)驗(yàn)性能對(duì)比結(jié)果 %
首先,通過表1可以看出,本文提出的EAD-GAN模型,在BELU-2、BELU-3指標(biāo)上比Gumbel-softmax GAN和SeqGAN更好。其次,模型通過預(yù)先訓(xùn)練提取出文本特征,使生成文本接近真實(shí)數(shù)據(jù)。但是,BELU-4指標(biāo)低于SeqGAN模型的,主要因?yàn)殍b別器中加入了交叉熵獎(jiǎng)勵(lì),希望生成的文本在意思不變的情況下,用詞更具有新穎性,所以得到的準(zhǔn)確率較低;并且實(shí)驗(yàn)數(shù)據(jù)為隨機(jī)無(wú)意義文本,更加客觀地驗(yàn)證了模型學(xué)習(xí)特征的能力;最后,通過表1可以得出GAN網(wǎng)絡(luò)對(duì)數(shù)據(jù)的預(yù)處理方法越精準(zhǔn),準(zhǔn)確率也越高的結(jié)論。
實(shí)驗(yàn)數(shù)據(jù)為周杰倫的全部歌曲,包括著名的《稻香》《牛仔很忙》和《七里香》等歌曲,共計(jì)56 000字。
評(píng)價(jià)指標(biāo)包括:風(fēng)格性、創(chuàng)新性和連貫性(如表2所示),每個(gè)指標(biāo)的分值為 1~10,分值越高,代表生成歌詞與相應(yīng)指標(biāo)的效果描述越接近。
Table 2 Evaluation indexes of Jay Chou’s lyrics表2 周杰倫歌詞評(píng)價(jià)指標(biāo)
對(duì)比模型與4.1節(jié)中的對(duì)比模型相同,本文實(shí)驗(yàn)都是使用PyTorch深度學(xué)習(xí)框架編寫代碼,并在NVIDIA Geforce GTX 1080 GPU上進(jìn)行實(shí)驗(yàn)。因?yàn)橛?xùn)練的數(shù)據(jù)較大,故只記錄5 000個(gè)字表。未記錄的字表,統(tǒng)一使用〈unk〉表示。
具體參數(shù)設(shè)置如表3所示。
Table 3 Experimental parameters表3 實(shí)驗(yàn)參數(shù)表
文本生成模型可以生成多種形式的結(jié)果,表4中形式為其中之一。歌詞中的u是沒有登錄在詞表中的數(shù)據(jù),表示未知詞。
Table 4 Generation of Jay Chou’s lyrics 表4 周杰倫歌詞生成展示
周杰倫的歌曲以情歌為主,通過表4可以看出,生成的歌詞符合周杰倫歌曲創(chuàng)作的風(fēng)格;歌詞整體上邏輯清楚,但也存在不連貫之處,如:文本中的“我知道你再原始無(wú)時(shí)間”。當(dāng)然也出現(xiàn)了創(chuàng)新性歌詞,如:“乾凈”。
實(shí)驗(yàn)評(píng)價(jià)采用人為打分,在高校中對(duì)周杰倫的歌迷群體采用調(diào)查問卷的形式得到評(píng)分。受調(diào)查者都為大學(xué)本科及以上學(xué)歷的在讀學(xué)生,其中女生占比70%,具有較高的可信度。發(fā)放調(diào)查問卷500份,其中有效問卷424份。從風(fēng)格性、創(chuàng)新性和連貫性3個(gè)方面進(jìn)行打分評(píng)價(jià),每一項(xiàng)滿分10分。
實(shí)驗(yàn)評(píng)價(jià)結(jié)果如表5所示。
Table 5 Indexes and average scores表5 指標(biāo)及其平均分值
通過表5可以清晰地看出,本文所提出的模型在3個(gè)指標(biāo)上都超過對(duì)比模型。其中,風(fēng)格性指標(biāo)變化不大,主要是加入自編碼模塊充分學(xué)習(xí)到了原文的特征數(shù)據(jù);創(chuàng)新性的提升幅度最大,展示出交叉熵對(duì)模型效果的提升作用。
通過4.1節(jié)實(shí)驗(yàn)可以看出,在GAN網(wǎng)絡(luò)中加入自編碼模塊后學(xué)習(xí)到特征信息,提高模型的準(zhǔn)確性,在鑒別器中加入交叉熵可以使模型更具有新穎性。通過4.2節(jié)實(shí)驗(yàn)可以看出,本文模塊生成的中文文本具有較高的質(zhì)量,這充分肯定了本文的工作。下一步考慮將文本的結(jié)構(gòu)、敘述的順序等信息加入模型,使模型深層次地學(xué)習(xí)到高維特征,同時(shí)兼顧文本的創(chuàng)新性,增加文本的可理解性、連貫性等。