趙 旭,蘇依拉,仁慶道爾吉,石 寶
內(nèi)蒙古工業(yè)大學(xué) 信息工程學(xué)院,呼和浩特 010080
機器翻譯(machine translation,MT)[1],是指借助計算機處理將一種自然語言(源語言)轉(zhuǎn)換為另一種自然語言(目標(biāo)語言)的過程,它屬于計算語言學(xué)研究的范圍。自20世紀30年代機器翻譯嶄露頭角開始,機器翻譯的發(fā)展已經(jīng)越來越迅猛。在當(dāng)今的日常生活、學(xué)習(xí)生活中,已經(jīng)越來越離不開機器翻譯的支持,其對于促進文化交流、促進多元交流有著十分重要的作用。目前機器翻譯的發(fā)展歷程經(jīng)歷了基于規(guī)則的機器翻譯到基于統(tǒng)計的機器翻譯[2],再到如今基于神經(jīng)網(wǎng)絡(luò)的機器翻譯(neural machine translation,NMT),每一次的改進極大地推動了機器翻譯領(lǐng)域的飛速發(fā)展。
蒙語機器翻譯的研究最早在20世紀90年代提出了基于詞典和基于規(guī)則的翻譯方法,主要是研究日蒙機器翻譯的研究[3]。蒙漢機器翻譯的研究對推動內(nèi)蒙古自治區(qū)的信息化、促進自治區(qū)社會進步和經(jīng)濟發(fā)展、繁榮和發(fā)展少數(shù)民族文化教育科技事業(yè)有著重要的意義,眾多學(xué)者也提出了很多改進蒙漢翻譯的方法[4-6]。在當(dāng)前流行的翻譯模型中,大多為編碼器-解碼器架構(gòu)的翻譯模型,且屬于自回歸翻譯模型(autoregressive model)[7],自回歸翻譯模型在進行解碼時,它們根據(jù)之前生成的序列生成當(dāng)前序列,這個過程是不可并行的。
雖然當(dāng)前主流翻譯模型大多為自回歸模型,也在眾多生成任務(wù)中得到了廣泛的應(yīng)用,但是自回歸翻譯模型在蒙漢翻譯過程中也存在著顯著的不足:
蒙語語料較為匱乏,使用當(dāng)前的翻譯模型易導(dǎo)致數(shù)據(jù)稀疏和過擬合問題,語義信息的匱乏會影響上下文信息的依賴關(guān)系,進而造成蒙漢翻譯質(zhì)量不高[8]。
自回歸模型的解碼過程是串行輸出的,當(dāng)前序列依賴于之前生成的序列,導(dǎo)致生成時間復(fù)雜度比較高,一般借助GPU生成也需要很長的時間。
當(dāng)前流行的神經(jīng)機器翻譯模型,大多為編碼器-解碼器結(jié)構(gòu),其流程為:將語料進行預(yù)處理,借助編碼器編碼生成向量,借助解碼器對向量以及源語言信息進行處理,得到目標(biāo)語言的翻譯結(jié)果。
傳統(tǒng)的NMT模型,無論是基于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)還是基于Transformer的翻譯模型[9],都可以歸類為自回歸模型。這里的自回歸指的是在翻譯目標(biāo)語句時,模型是從左到右逐字翻譯的,當(dāng)前字需要依賴于上一生成的字,這就導(dǎo)致編碼器-解碼器模型進行推理生成時,只能逐字翻譯,解碼器不能并行輸出。相比于自回歸翻譯模型,非自回歸翻譯模型克服了自回歸模型性依賴于上下文輸出的缺陷,借助于編碼器的改進實現(xiàn)了并行輸出,大大提升了生成的速率。同時借助于跨言詞嵌入[10]和知識蒸餾技術(shù)[11],對蒙漢語料進行相應(yīng)處理,緩解源與目標(biāo)的依賴關(guān)系,緩解數(shù)據(jù)稀疏以及過擬合問題等。使非自回歸翻譯模型既有高準確率也有高生成速率。
在文獻[12]中,基于Transformer翻譯模型進行改進,提出了非自回歸Transformer模型(NAT)在機器翻譯上的應(yīng)用,在同樣的條件下,相比于Transformer模型,NAT翻譯模型在生成速率上大幅領(lǐng)先Transformer模型,這是因為對編碼器進行了改進,增加了一個Fertility模塊[13],來統(tǒng)計源句每個詞的出現(xiàn)次數(shù),進而得到目標(biāo)句子的長度,將Fertility與源句子的復(fù)制共同作為解碼器的輸入,實現(xiàn)翻譯的并行輸出。但也會導(dǎo)致翻譯準確率的下降,而借助于知識蒸餾,將源語言與目標(biāo)語言的依賴關(guān)系降低,進而同步提高翻譯效果與生成速率。故本文基于Transformer和NAT蒙漢翻譯模型,使用內(nèi)蒙古工業(yè)大學(xué)所擁有的120萬蒙漢平行語料作為實驗數(shù)據(jù),對蒙漢語料進行通用BPE處理和知識蒸餾處理做對比實驗。
2017年,谷歌提出了一種新的網(wǎng)絡(luò)架構(gòu):Transformer。其完全基于注意力機制,克服了之前使用的卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)所出現(xiàn)的問題,大幅度提升了機器翻譯的效果。注意力是人類特有的一種能力,可以選擇性地選取重點,注意力機制的提出便基于此[14]。Transformer建模公式如式(1)所示:
在自注意力層中,每個單詞有3個不同的向量來表示,它們分別是Query向量(Q),Key向量(K)和Value向量(V),長度均是64,即dk。它們由嵌入向量X乘以三個不同的權(quán)值矩陣WQ、WK、WV得到,其中三個矩陣的維度也是相同的,均是512×64。其中為了梯度的穩(wěn)定,Transformer使用了score歸一化,即除以dk,softmax是激活函數(shù),最終計算結(jié)果表明Q應(yīng)該關(guān)注V中的哪些值,也就是句子中需要重點關(guān)注的語義信息,以及對應(yīng)語義信息的關(guān)注度達到多少。
人類面對海量信息時,可以選擇性地捕獲重點信息,忽略掉無關(guān)信息,來獲取關(guān)鍵信息。神經(jīng)網(wǎng)絡(luò)在處理大量輸入信息時,也可以借助注意力機制選擇性地獲取處理一些關(guān)鍵信息,來提高神經(jīng)網(wǎng)絡(luò)的處理性能,Transformer翻譯模型便是完全基于注意力機制來實現(xiàn)的。圖1為基于注意力機制的Encoder-Deocder模型的結(jié)構(gòu)[15]。
圖1 基于注意力機制的編碼器-解碼器架構(gòu)圖Fig.1 Encoder-decoder architecture based on attention mechanism
Transformer模型的架構(gòu)也是基于編碼器-解碼器。但其結(jié)構(gòu)相比于之前更加復(fù)雜,包含六層編碼器和六層解碼器。圖2為其基本架構(gòu)圖。
圖2 Transformer基本架構(gòu)圖Fig.2 Architecture of Transformer
對于每一層的編碼器和解碼器,編碼器包含兩層:自注意力層與前饋神經(jīng)網(wǎng)絡(luò)。自注意力層能夠幫助當(dāng)前節(jié)點結(jié)合上下文語義信息來獲得正確的語義理解。解碼器除了包含以上兩層外,在兩層的中間還有一層注意力層,幫助當(dāng)前節(jié)點獲取當(dāng)前需要重點關(guān)注的內(nèi)容。圖3為單層編碼器-解碼器的結(jié)構(gòu)。
圖3 單層架構(gòu)圖Fig.3 Single layer architecture
模型需要對輸入的數(shù)據(jù)進行一個生成嵌入向量操作,得到嵌入向量后,輸入到編碼層,自注意力層處理完數(shù)據(jù)后把數(shù)據(jù)輸入到前饋神經(jīng)網(wǎng)絡(luò)中,其計算過程可以并行處理,得到的輸出會輸入到下一個編碼器。最終編碼完成后,將其輸入到解碼層中,解碼層全部執(zhí)行完畢后,在結(jié)尾通過一個全連接層和softmax層,得到最終概率值最大的對應(yīng)詞就是本文得到的翻譯結(jié)果。具體流程圖見圖4。
圖4 整體流程圖Fig.4 Overall flow chart
相比于自回歸模型相,非自回歸模型在實現(xiàn)上主要有以下兩個區(qū)別:一是解碼器的輸入,二是目標(biāo)序列長度的獲取。自回歸模型解碼器的輸入是上一步解碼出的結(jié)果,每一步解碼生成都依賴于上一步解碼的結(jié)果,當(dāng)解碼到EOS標(biāo)志時,序列的生成過程便自動停止,得到最終的解碼序列。而非自回歸模型沒有這樣的依賴特性,克服了解碼的串行輸出,實現(xiàn)了解碼器的并行輸出。圖5為兩者區(qū)別。
圖5 自回歸與非自回歸模型區(qū)別Fig.5 Differences between autoregressive and non-autoregressive models
NAT翻譯模型采用的也是編碼器-解碼器結(jié)構(gòu),與Transformer相比,是對編碼器進行了改進,增加了一個Fertility模塊,來統(tǒng)計源句每個詞的出現(xiàn)次數(shù),進而得到目標(biāo)句子的長度,將Fertility與源句子的復(fù)制共同作為解碼器的輸入,實現(xiàn)翻譯的并行輸出。圖6為非自回歸Transformer的架構(gòu)。
圖6 NAT結(jié)構(gòu)Fig.6 Architecture of NAT
不同于之前所提出的大多數(shù)語言模型,先前的翻譯模型大多為自回歸模型,在進行解碼輸出的時候要根據(jù)先前的輸出來決定當(dāng)前的輸出,是串行輸出,導(dǎo)致了解碼速度過慢,而NAT通過對編碼器的改進解決了這個問題,在基本維持翻譯效果的條件下,大大提升了解碼生成的速度。
在當(dāng)前機器翻譯研究中,不同語言訓(xùn)練出來的詞向量雖然是獨立的,但是它們的分布形態(tài)卻非常相似,兩種語言中意義相近的詞所代表的詞向量在坐標(biāo)空間上的分布非常相近,如圖7所示。
圖7 雙語向量空間分布Fig.7 Bilingual vector space distribution
因此可借助某種線性或非線性的轉(zhuǎn)換[15],將蒙漢雙語的詞向量映射到同一個共享的空間中,使得意義相近卻來自不同語言的詞向量具有相近的詞向量表征,縮小兩種語言之間的表征差距。模型可以借助對方語義信息來推理詞語含義,可以在雙語之間進行知識遷移,數(shù)據(jù)量少的語言借助高資源語料來進行推理,提高翻譯模型的效果。
為了從源空間映射到目標(biāo)公共空間,一種常見的方法是學(xué)習(xí)一種最小化雙語詞典對應(yīng)詞對距離的線性映射。通用的做法是分別獨立地對雙語語料進行訓(xùn)練[16],得到兩者的嵌入向量,對其進行學(xué)習(xí)訓(xùn)練,得到一種線性映射,使得最小化雙語詞典中列出的等效之間的距離,得到通用向量空間。
設(shè)X和Z表示給定雙語字典的兩種語言中的詞嵌入矩陣,使它們的第i行Xi*和Zi*是字典中第i條的單詞嵌入。本文的目標(biāo)是找到一個線性變換矩陣W,使XW最接近Z,借助歐氏距離來進行評估,見式(2):
接下來進行最大余弦長度歸一化處理,將兩種語言中的詞嵌入向量歸一化處理為單位向量,保證了訓(xùn)練實例對優(yōu)化目標(biāo)有相同的貢獻,見式(3):
通過上述操作得到矩陣W來將兩種語言進行嵌入映射,得到跨語言詞向量,縮小兩種語言之間的推理距離[17],提升機器翻譯的效果。
雖然NAT模型通過改進編碼器結(jié)構(gòu)實現(xiàn)了解碼器的并行輸出,大大提升了機器翻譯的速度,但解碼階段是完全獨立進行的,而在實際的翻譯中,最終翻譯語句并不是條件獨立的。條件獨立性假設(shè)阻止了翻譯模型正確地捕獲目標(biāo)翻譯的高度多模態(tài)分布,模型忽略目標(biāo)語言上下文信息會導(dǎo)致目標(biāo)語義信息不充足以及翻譯效果的降低。
而知識蒸餾方法可以在一定程度上解決這個問題,對數(shù)據(jù)集進行知識蒸餾處理可以在保持原有生成速率的同時,進一步提高翻譯的效果。因此,應(yīng)用知識蒸餾方法,來改善NAT模型的缺陷。
具體流程如下:首先需要訓(xùn)練一個自回歸機器翻譯模型,作為教師模型,在實驗中為了設(shè)置方便,統(tǒng)一采用Transformer模型來作為教師模型;接下來,借助教師模型在訓(xùn)練集上進行集束搜索,構(gòu)建新語料庫,即蒸餾數(shù)據(jù)集;最后將蒸餾數(shù)據(jù)集應(yīng)用在NAT模型(學(xué)生模型)中使用負對數(shù)似然(negative log likelihood,NLL)函數(shù)進行訓(xùn)練,來改善NAT模型翻譯效果。其實現(xiàn)過程如式(4)~(7)所示:
其中,p(t|s)是序列級分布,q(t|s)是教師模型在可能樣本上的序列分布,對其取近似值,y?為借助教師模型進行集束搜索所生成的蒸餾數(shù)據(jù)集。其流程如圖8所示。
在文獻[18]中,分析了知識蒸餾方法在機器翻譯中所起的作用,以及知識蒸餾如何起到促進作用的原因,了解其中的原理對該文實驗有著極大的積極作用。借助于教師模型的集束搜索對數(shù)據(jù)集進行知識蒸餾,可以降低數(shù)據(jù)集的復(fù)雜性和減少目標(biāo)端對上下文的依賴,更好地幫助NAT翻譯模型模擬輸出數(shù)據(jù)的變化,進而提升NAT模型的翻譯效果。
本文實驗所用數(shù)據(jù)為內(nèi)蒙古工業(yè)大學(xué)所擁有的120萬蒙漢平行語料,語料庫的格式為蒙語-漢語的平行語料,在使用之前需對語料庫進行了篩選,將語料庫中包含的文章類的內(nèi)容進行了整理篩選,實驗過程中沒有使用文章部分,因為文章部分每一句之間上下文之間都存在依賴關(guān)系,對于非自回歸模型并不友好,不能較好地實現(xiàn)非自回歸模型的并行,故排除掉文章內(nèi)容后進行語料劃分。蒙漢平行語料數(shù)據(jù)集的劃分如表1所示。
表1 數(shù)據(jù)集劃分Table 1 Dataset partition
數(shù)據(jù)集劃分完后,需對語料進行預(yù)處理,在本實驗中對中文進行分詞處理,分詞流程包含停用詞表的加載,將標(biāo)點、語氣助詞、副詞等出現(xiàn)頻率很高的詞進行篩選清除,降低停用詞對有效信息產(chǎn)生的干擾。在蒙漢語料中適度地減少停用詞的次數(shù),可以提高關(guān)鍵詞的分布密度,使關(guān)鍵詞語義信息更集中,更突出,對后續(xù)機器翻譯性能的提高有一定幫助。
處理完中文分詞后,借助字節(jié)對編碼(byte pair encoder,BPE)方法對蒙漢平行語料進行處理[19]。BPE是一種根據(jù)字節(jié)對進行編碼的算法。BPE處理的主要目的是為了數(shù)據(jù)壓縮,將字符串里頻率出現(xiàn)最高的一對字符被一個沒有在當(dāng)前字符串出現(xiàn)過的字符代替,不斷迭代。通過BPE處理后,可以大大降低數(shù)據(jù)稀疏以及未登錄詞問題對翻譯效果的影響。
首先,BPE算法會將訓(xùn)練語料以字符為單位進行拆分,按照字符對進行組合,并對所有組合的結(jié)果根據(jù)出現(xiàn)的頻率進行排序,出現(xiàn)頻次越高的排名越靠前,排在第一位的是出現(xiàn)頻率最高的子詞,最終會根據(jù)語料生成codec文件。Codec文件分布如圖9所示。
圖9 蒙漢codec文件Fig.9 Codec file of Mongolian and Chinese
根據(jù)生成的蒙漢雙語codec文件,對蒙漢語料進行處理,最終得到完整的BPE處理后的語料庫。處理完畢的語料如圖10所示。
圖10 BPE處理后語料Fig.10 Processing of BPE corpora
對蒙漢語料庫進行BPE處理,也就是對蒙漢平行進行標(biāo)記和分段后,借助BPE生成的子詞(subwords)詞典,使用上述提到的跨語言詞嵌入方法,對蒙漢語料進行映射處理,通過線性變換得到蒙漢雙語嵌入詞向量,來充分利用兩種語言在同一向量空間分布的相近性,提升蒙漢機器翻譯的準確率。
本次實驗所用的Transformer翻譯模型以及非自回歸Transformer翻譯模型借助Facebook AI實驗室提出的開源庫Fairseq(https://github.com/pytorch/fairseq)。借助內(nèi)蒙古工業(yè)大學(xué)提供的GPU服務(wù)器進行實驗,GPU型號為NVIDIA Tesla P100。實驗環(huán)境為Ubuntu16.04,Linux系統(tǒng),Python版本3.7.0,TensorFlow版本1.13.0,借助BLEU值來評估翻譯效果,同時對翻譯模型解碼時間進行記錄。
Transformer Transformer神經(jīng)網(wǎng)絡(luò)層數(shù)設(shè)置為6層,多頭注意力機制設(shè)置為8頭,隱藏單元維度設(shè)置為512,激活函數(shù)使用GELU,優(yōu)化函數(shù)使用Adam算法,初始學(xué)習(xí)率設(shè)置為0.01,Label Smoothing設(shè)置為0.1,一階矩估計的指數(shù)衰減率設(shè)置為0.9,二階矩估計的指數(shù)衰減率設(shè)置為0.95,train_steps設(shè)置為200 000,batch_size設(shè)置為4 096。
非自回歸Transformer神經(jīng)網(wǎng)絡(luò)層數(shù)設(shè)置為6層,多頭注意力機制設(shè)置為8頭,隱藏單元維度設(shè)置為512,優(yōu)化函數(shù)使用Adam算法,激活函數(shù)使用GELU,初始學(xué)習(xí)率設(shè)置為0.01,dropout設(shè)置為0.1,fine-tuning設(shè)置為0.25。PyTorch0.3,torchtext0.2.1,train_steps設(shè)置為200 000,warmup_steps設(shè)置為4 000,batch_size設(shè)置為2 048。同時借助IBM Model 2提供的Fast_Align(https://github.com/fast_Align)來實現(xiàn)編碼器Fertility模塊的改進。
如圖11、圖12所示,本文分別統(tǒng)計了基于Transformer神經(jīng)機器翻譯模型,基于非自回歸Transformer神經(jīng)機器翻譯模型以及進行知識蒸餾處理后非自回歸Transformer模型在200 000訓(xùn)練步數(shù)上的BLEU值變化趨勢,同時統(tǒng)計了三組翻譯模型在實驗過程中所消耗的時間變化趨勢,來對實驗進行完整的分析。
圖11 三組實驗?zāi)P虰LEU值變化趨勢Fig.11 Change trend of BLEU value in three experimental groups
圖12 三組實驗?zāi)P拖臅r間變化趨勢Fig.12 Time consumption trends of three experimental models
表2是基于Transformer神經(jīng)機器翻譯模型,基于非自回歸Transformer神經(jīng)機器翻譯模型以及進行知識蒸餾處理后的非自回歸Transformer神經(jīng)機器翻譯模型在測試集得到的BLEU值以及消耗時間。
表2 三組翻譯模型BLEU值和消耗時間Table 2 BLEU and time consumption of three translation models
表2可以得到基于Transformer翻譯模型的BLEU值為36.4,消耗時間為23.2 h,非自回歸Transformer翻譯模型的BLEU值為32.3,消耗時間為2.35 h,而進行知識蒸餾處理后的非自回歸Transformer翻譯模型的BLEU值達到了39.2,相比于Transformer翻譯模型提高了2.8個BLEU值,消耗時間為3.86 h,大致為Transformer模型的1/8。
圖11、圖12和表2表明進行了知識蒸餾處理后的非自回歸Transformer翻譯模型,在保留非自回歸Transformer翻譯模型耗時短優(yōu)點的同時,也提高了最終蒙漢翻譯的準確率,相比于Transformer翻譯模型,用時大大降低,同時BLEU值得到了2.8的提升。實驗表明對語料進行知識蒸餾處理可以有效解決非自回歸Transformer翻譯模型的缺點,降低依賴性,在維持低耗時的前提下,進一步提升蒙漢翻譯的效果。
當(dāng)前蒙漢機器翻譯研究中,大多數(shù)翻譯模型的計算成本很高,獲得高翻譯效果的同時,消耗時間也是飛速增長,而非自回歸Transformer翻譯模型的提出可以有效解決這個問題,縮短消耗時間,但會導(dǎo)致翻譯效果的下降這個新問題的出現(xiàn)。所以本文主要針對于NAT翻譯模型,研究跨語言詞嵌入[20]和知識蒸餾在翻譯過程中所起到的作用,通過對各方法的實驗結(jié)果進行對比分析。實驗結(jié)果表明進行了知識蒸餾處理的NAT翻譯模型在維持低耗時的前提下,相比于Transformer翻譯模型提升了蒙漢翻譯的效果。但知識蒸餾處理也存在不足之處,知識蒸餾將源語言與目標(biāo)語言的依賴關(guān)系降低,這就使得在翻譯生成時,可能會造成部分語義信息不足的問題,所以在接下來的研究中,考慮是否可以將無監(jiān)督知識蒸餾方法[21]和源-目標(biāo)語料對齊加入到模型訓(xùn)練中,融合更多語義信息,進一步提升蒙漢翻譯的效果,這是未來工作的著重點。