熊 露,裴志利,姜明洋,包啟明
(1.內(nèi)蒙古民族大學(xué) 數(shù)理學(xué)院,內(nèi)蒙古 通遼 028043;2.內(nèi)蒙古民族大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,內(nèi)蒙古 通遼 028043)
隨著互聯(lián)網(wǎng)、信息技術(shù)的發(fā)展,人工智能方法在許多不同的領(lǐng)域發(fā)揮著重要作用。自然語言處理是人工智能領(lǐng)域的一個重要研究方向,而文本生成是自然語言處理的研究熱點(diǎn)之一。文本生成是自然語言處理的一項(xiàng)基礎(chǔ)性研究內(nèi)容,對話系統(tǒng)、機(jī)器翻譯、圖像描述、人工智能詩詞寫作等應(yīng)用都依賴于文本生成技術(shù)[1-3]。早期用循環(huán)神經(jīng)網(wǎng)絡(luò)[4](Recurrent Neural Network,RNN)進(jìn)行文本訓(xùn)練,但對于時間序列的長期依賴問題無法得到有效解決,隨后長短時記憶網(wǎng)絡(luò)[5](Long Short-Term Memory,LSTM)和門控循環(huán)單元[6](Gated Recurrent Unit,GRU)的出現(xiàn)解決了長期依賴問題,應(yīng)用于文本生成任務(wù)[7]。2014 年,GOODFEL?LOW首次提出了生成對抗網(wǎng)絡(luò)[8-9](Generative Adversarial Networks,GAN),早期它主要用于處理連續(xù)型數(shù)據(jù),例如圖片的生成;后逐漸用于處理離散型數(shù)據(jù),例如文本生成。2016年,杜克大學(xué)的ZHANG等[10]提出了TextGAN,通過使用匹配特征分布將句子向量轉(zhuǎn)化為協(xié)方差矩陣,使得生成更加真實(shí)的句子。YU等[11]提出了SeqGAN,將強(qiáng)化學(xué)習(xí)與GAN相結(jié)合,引入蒙特卡洛搜索方法,解決了序列生成問題。CHE等[12]提出了MaliGAN,通過判別器的輸出導(dǎo)出最低方差目標(biāo),使得訓(xùn)練過程穩(wěn)定并降低梯度方差。LIN等[13]提出了RankGAN,判別器通過給出的參考組對真實(shí)句子和生成句子進(jìn)行分析和排序,最后通過排名得分評估生成文本質(zhì)量。GUO等[14]提出了LeakGAN的新算法框架,通過分層強(qiáng)化學(xué)習(xí)的方法進(jìn)行泄露,由判別器泄露的特征對生成器進(jìn)行指導(dǎo),以此更好地生成長文本。NIE等[15]提出了RelGAN,生成器采用relational memory,同時利用gumbel-softmax替代強(qiáng)化學(xué)習(xí)啟發(fā)式算法,使得生成的文本更具表達(dá)力,判別器利用多層次向量表示,使得生成的文本具有多樣性。由于生成器輸出的結(jié)果可以精確到小數(shù)點(diǎn)后8位或者更高,但對于文本生成結(jié)果要求精確到個位數(shù),造成很多精度的丟失,故筆者提出了一種改進(jìn)的GAN模型(LFM?GAN,Loss Function Mali Generation Adversarial Networks),該模型基于MaliGAN,在此基礎(chǔ)上,設(shè)計了一種Loss函數(shù),用于解決精度影響問題,其中,生成器采用GPT-2模型[16],判別器采用RoBerta模型[17]作二分類,通過與基礎(chǔ)模型、MaliGAN模型和LeakGAN模型以及基線模型MLE對比實(shí)驗(yàn)表明,文中所提出的模型在精度、適用性方面要優(yōu)于其他模型,說明該方法在尋找全局最優(yōu)、降低離散型變量帶來的精度影響方面,具有較好的效果。
1.1 生成對抗網(wǎng)絡(luò) 生成對抗網(wǎng)絡(luò)[8-9]是由判別器D和生成器G兩個部分組成。生成器的目標(biāo)是生成以假亂真的數(shù)據(jù);判別器的目標(biāo)是判斷出數(shù)據(jù)是真實(shí)數(shù)據(jù)還是生成器生成的數(shù)據(jù)。兩者在對抗中不斷學(xué)習(xí),最終生成器生成的數(shù)據(jù)越來越接近真實(shí)數(shù)據(jù),判別器越來越能區(qū)分出與真實(shí)數(shù)據(jù)接近的假數(shù)據(jù),在不斷迭代的過程中,二者能力得到提升。生成對抗網(wǎng)絡(luò)框架見圖1。
圖1 生成對抗網(wǎng)絡(luò)Fig.1 Generative adversarial network
生成對抗網(wǎng)絡(luò)進(jìn)行文本生成的目的是盡可能讓生成器生成的文本質(zhì)量高,對生成器來說目的是讓判別器無法區(qū)別出真實(shí)文本和假文本,對判別器來說目的是能夠正確區(qū)分真實(shí)文本和假文本。
設(shè)輸入生成器的隨機(jī)噪聲為z,噪聲的先驗(yàn)分布為pz,該分布符合正態(tài)分布或均值分布。生成器用G(z;θg)表示,判別器用D(x;θd)表示,其中,θg為生成器的參數(shù),θd為判別器的參數(shù),假設(shè)生成器生成的最終數(shù)據(jù)樣本分布為pg,真實(shí)數(shù)據(jù)樣本分布為pdata,生成器就是讓pg達(dá)到盡量擬合pdata的目的。生成對抗網(wǎng)絡(luò)優(yōu)化的目標(biāo)函數(shù)如下:
其中,第一項(xiàng)為判別器對真實(shí)數(shù)據(jù)樣本的判別期望,第二項(xiàng)為判別器對生成數(shù)據(jù)樣本的判別期望,V(D,G)表示為判別器判斷兩分布之間的差距。當(dāng)數(shù)據(jù)分布為連續(xù)概率分布時,通過概率密度函數(shù)與期望之間的關(guān)系,可將式(1)轉(zhuǎn)化為:
在生成對抗網(wǎng)絡(luò)的訓(xùn)練過程中,生成器和判別器交替訓(xùn)練,通過固定生成器的參數(shù),來訓(xùn)練判別器,在判別器能夠正確區(qū)別生成數(shù)據(jù)樣本和真實(shí)數(shù)據(jù)樣本時,V(G,D)取極值,即得判別器的解:
對于不全為0的實(shí)數(shù)a、b,形如y=alog(y)+blog(1-y)的函數(shù)在0與1之間的數(shù)取得極大值,判別器的訓(xùn)練過程可看作條件概率P(Y=y|x)的對數(shù)似然估計,故有:
其中,KL為KL散度,JS為JS散度。當(dāng)JSD 函數(shù)的值為0時,pdata和pg兩個分布相同,此時生成器訓(xùn)練完成,達(dá)到最優(yōu);當(dāng)JSD 函數(shù)值為log 2 時,pdata和pg兩個分布不同。
在生成對抗網(wǎng)絡(luò)中,通過梯度傳播,幫助生成器完成參數(shù)更新,同時還能根據(jù)生成數(shù)據(jù)樣本以及真實(shí)數(shù)據(jù)樣本進(jìn)行自我更新。
1.2 Sentence-Bert Bert模型需要兩個句子同時進(jìn)入模型進(jìn)行信息交換來計算語義相似度,但是大量的計算造成了訓(xùn)練速度慢。Sentence-Bert的提出解決了Bert存在的不足,利用孿生網(wǎng)絡(luò)的結(jié)構(gòu)生成帶有語義的句子,把不同句子分別輸入到2個Bert模型中,獲取每一個句子的embedding向量,語義相似度高的句子其embedding向量距離也就越小。
Regression Objective Function 是將2個句子的句子向量u和v的余弦相似度作為目標(biāo)函數(shù),隨后使用均方誤差計算損失并與當(dāng)前隱藏狀態(tài)相結(jié)合產(chǎn)生目標(biāo)向量。
余弦相似度是通過計算2個向量夾角之間的余弦值,以此來得到兩向量之間的相似度。在二維空間中,將向量坐標(biāo)值投影到向量空間。余弦相似度通常用來計算詞語或句子相似度,將文本編碼為embedding向量,計算余弦相似度。余弦相似度的表達(dá)式為:
當(dāng)余弦值為1 時,說明2 個向量重合;當(dāng)余弦值為-1時,說明2個向量相反;當(dāng)余弦值為0時,2個向量正交。故2個向量越相似,即余弦值越接近1。
1.3 LFMGAN 模型 文中基于MaliGAN 模型,設(shè)計了一種Loss 函數(shù),改進(jìn)后的模型能夠通過尋找全局最優(yōu)解,同時降低離散型帶來精度影響,以此提高文本生成質(zhì)量。LFMGAN模型結(jié)構(gòu)見圖2。
圖2 LFMGAN模型Fig.2 LFMGAN model
1.3.1 LFMGAN生成器 生成器包含3層,分別為Embedding層、GPT-2網(wǎng)絡(luò)層、softmax層。先對數(shù)據(jù)進(jìn)行預(yù)處理,在Embedding層輸入真實(shí)文本訓(xùn)練集I轉(zhuǎn)換為映射向量x,將其轉(zhuǎn)化為具有查表操作的詞嵌入向量再加上其對應(yīng)的位置向量。GPT-2網(wǎng)絡(luò)層包含掩碼多頭注意力層、批歸一化層、多頭注意力層、全連接層,經(jīng)過位置編碼后的每一個詞向量y產(chǎn)生其相應(yīng)3 個向量:Query 向量(Q)、Key 向量(K)、Value 向量(V),它們是通過詞嵌入矩陣進(jìn)行變換而得到的,隨后計算詞向量的分?jǐn)?shù)score:
整個過程會進(jìn)行多次重復(fù),最后取平均值,這就是多頭注意力。
對于掩碼機(jī)制來說,它是對詞庫中的一些單詞進(jìn)行隨機(jī)性的遮掩,防止出現(xiàn)過擬合情況,增加多樣性。
對批歸一化層作以下處理:
其中,yn為沒有經(jīng)過歸一化的詞向量,μB為詞向量的均值,σ2B為詞向量的方差,為第n個詞的批歸一化后的詞向量,ε、β為較小數(shù),防止分母不存在的情況。
在上述過程中通過注意力機(jī)制學(xué)習(xí)了每個單詞新表達(dá)能力,但體現(xiàn)的表達(dá)能力并不是很強(qiáng),由此希望通過激活函數(shù)強(qiáng)化表達(dá)能力,加強(qiáng)數(shù)值較大部分,抑制數(shù)值較小部分;最后加入了dropout和Layer Nor?malization層,防止數(shù)據(jù)過擬合,提高模型泛化能力以及對數(shù)據(jù)進(jìn)行歸一化。其整個過程的計算公式為:
其中,max為激活函數(shù)。
1.3.2 LFMGAN判別器 判別器采用RoBerta模型,將輸入的真實(shí)數(shù)據(jù)與生成數(shù)據(jù)進(jìn)行真假判斷,同時將判別器的反饋結(jié)果傳至生成器并進(jìn)行不斷優(yōu)化,因此,判別器可作為一個二分類模型。首先,數(shù)據(jù)輸入特征提取層對數(shù)據(jù)進(jìn)行特征提取,然后,輸入Embedding層,它主要作用是對數(shù)據(jù)進(jìn)行降維,最后,對生成數(shù)據(jù)進(jìn)行真假判斷。
本實(shí)驗(yàn)通過計算Loss值作為指導(dǎo)生成器進(jìn)行優(yōu)化,計算公式如下: