蘇依拉 高 芬 牛向華 仁慶道爾吉
(內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院 內(nèi)蒙古 呼和浩特 010080)
機器翻譯是人工智能領(lǐng)域的重要研究課題之一,主要目標是研究如何使用計算機實現(xiàn)一種自然語言到另一種自然語言的自動轉(zhuǎn)換[1]。針對蒙漢機器翻譯中平行語料資源稀缺的問題,提出利用單語語料[2-8]訓(xùn)練來提高蒙漢機器翻譯的質(zhì)量。而實現(xiàn)基于單語語料庫訓(xùn)練的蒙漢機器翻譯系統(tǒng)最重要的基礎(chǔ)就是需要一個翻譯性能良好的初始化翻譯模型,而初始化的翻譯模型是基于字典的翻譯系統(tǒng)和語言模型相結(jié)合才能實現(xiàn)的,故預(yù)訓(xùn)練一個表現(xiàn)較好的語言模型就顯得尤為重要。
語言模型這個概念最早出現(xiàn)在統(tǒng)計機器翻譯中,是統(tǒng)計機器翻譯技術(shù)中較為重要的概率模型之一。通俗而言,語言模型就是一串詞序列或者一句話的概率分布,其作用就是可以為一個長度為n的句子計算其存在的可能性的概率分布p。在統(tǒng)計機器翻譯中常用的是N-gram語言模型,N表示n元模型,當(dāng)n選取較大時,就會產(chǎn)生數(shù)據(jù)稀疏問題,從而導(dǎo)致估算結(jié)果出現(xiàn)較大的偏差。因此,實際中最常用的是三元模型,也就是Tri-gram模型。為了緩解N-gram語言模型導(dǎo)致的數(shù)據(jù)稀疏的問題,也由于計算機技術(shù)的快速發(fā)展,現(xiàn)在有很多研究者專注于預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)語言模型的研究。實際上,語言模型就是依據(jù)上下文信息去預(yù)測下一個詞,因為不需要人工標注的數(shù)據(jù),所以預(yù)訓(xùn)練語言模型,其實就是從大量的單語語料中,學(xué)習(xí)到比較豐富的語義知識的表示。使用神經(jīng)網(wǎng)絡(luò)訓(xùn)練時基本上都是基于后向傳播算法(Back Propagation,BP),通過對網(wǎng)絡(luò)模型的參數(shù)進行隨機的初始化,再通過一些優(yōu)化算法去優(yōu)化初始的模型參數(shù)。預(yù)訓(xùn)練的原理是:對神經(jīng)網(wǎng)絡(luò)模型的參數(shù)不進行隨機的初始化,而是有目的地訓(xùn)練一套網(wǎng)絡(luò)模型參數(shù),之后將這套參數(shù)用來做初始化,然后再訓(xùn)練。在遷移學(xué)習(xí)中也大量地使用了這樣的思想。
近幾年,在自然語言處理(NLP)領(lǐng)域,在多項NLP任務(wù)上使用預(yù)訓(xùn)練語言模型的方法皆獲得了令人可喜的成果,因此預(yù)訓(xùn)練語言模型也受到人們廣泛的關(guān)注。例如,2018年在NTM領(lǐng)域引起熱門討論的幾篇文章都和預(yù)訓(xùn)練語言模型有關(guān),其中三個比較具有代表性的模型為ELMo[9]、OpenAI GPT[10]和BERT[11],它們都是神經(jīng)網(wǎng)絡(luò)語言模型。因神經(jīng)網(wǎng)絡(luò)語言模型在當(dāng)前研究中表現(xiàn)最佳,且使用神經(jīng)網(wǎng)絡(luò)的方法可以結(jié)合上下文信息學(xué)到一些語義信息有利于翻譯系統(tǒng)性能的提升,所以本文也采用了該方法預(yù)訓(xùn)練語言模型。
雖然基于LSTM[13]神經(jīng)網(wǎng)絡(luò)的方法在一定程度上能夠緩解長距離依賴問題,但是因為不能進行并行運算,所以計算速度相對比較緩慢。而且,基于雙向LSTM[14]神經(jīng)網(wǎng)絡(luò)預(yù)訓(xùn)練語言模型的方法看似是雙向的,實則是兩個單向運算結(jié)果的拼接。為了實現(xiàn)真正意義上的雙向運算,本文使用基于多頭自注意力機制(Multi-head Self-attention Mechanism)的框架預(yù)訓(xùn)練跨蒙漢語言模型,此框架依然是編碼器-解碼器的結(jié)構(gòu),只不過編碼器由多層編碼器層堆疊而成,在每一層編碼器層中都包含前饋神經(jīng)網(wǎng)絡(luò)層和使用了基于多頭注意力機制的Transformer的注意力層[15]。
注意力機制來自人類的視覺注意力機制,當(dāng)人類使用視覺感知外界事物的時候,一般不會將場景中的事物都掃描一遍,而是有選擇地去觀察那些對自己有用的信息。而注意力機制也是基于這樣的原理,注意力函數(shù)可以被形容為一個查詢(Query)到一系列鍵值對(Key-Value)的映射,如圖1所示,其計算公式如下:
圖1 注意力機制原理
(1)
注意力函數(shù)值的計算步驟如下:首先是計算Query和每一個Key之間的相似度權(quán)重,相似度如果是通過點積再除以維度K進行計算的,則稱為放縮點積注意(Scaled Dot-product Attention);然后通過Softmax將計算得到的權(quán)重進行歸一化操作;最后將歸一化之后的相似度權(quán)重和Value做加權(quán)求和就得到了注意力值。
自注意力機制就是運算過程中Key、Value、Query是相等的。多頭注意力就是多個自注意力。多頭注意力運算過程是Query、Key、Value首先進行一次線性變換,然后再執(zhí)行多次的放縮點積注意力運算。而且每次Query、Key、Value進行線性變換的參數(shù)W是不一樣的。然后將多次的放縮點積注意力結(jié)果進行拼接,再進行一次線性變換得到的值作為多頭注意力機制的結(jié)果。多頭注意力可以允許模型在不同的表示子空間里學(xué)習(xí)到相關(guān)的信息。在蒙漢語言模型的訓(xùn)練過程中,指的就是當(dāng)輸入一句話時,句子中的每個詞都得和其他的詞做注意力運算,這樣就能學(xué)習(xí)到句子中每個詞之間的相互依賴關(guān)系,即能更進一步地解決長期依賴的問題。
而Transformer的整體構(gòu)成其實也是一個編碼器-解碼器的結(jié)構(gòu),只是整個編碼器是由很多個子編碼器組成的,每一個子編碼器中包含一個多頭注意力機制和一個前饋神經(jīng)網(wǎng)絡(luò)。它的解碼器部分則和編碼器部分類似,但是為了更好地優(yōu)化網(wǎng)絡(luò),又添加了一個多頭注意力層,并使其與其他層進行了殘差連接。
基于多頭自注意力機制的框架最大的特點就是使用一個多層雙向的Transformer編碼器,因為Transformer中包含自注意力機制,所以該框架中所有的網(wǎng)絡(luò)層都是直接相互連接的,這也是其優(yōu)于雙向LSTM神經(jīng)網(wǎng)絡(luò)模型的地方,因此它實現(xiàn)了真正意義上的雙向和全局?;诙囝^自注意力機制框架的組成結(jié)構(gòu)如圖2所示。
圖2 多頭自注意力機制
其中:EN表示加入了位置信息和句子切分信息的詞向量,Trm表示訓(xùn)練模型Transformer,TN表示翻譯譯文。在基于多頭自注意力機制預(yù)訓(xùn)練語言模型的框架中,其輸入是加入了位置信息和句子切分信息的詞向量EN,接著在多層Transformer上預(yù)測任務(wù)進行訓(xùn)練,稱之為遮擋式語言模型(Mask Language Model,MLM)。此任務(wù)中,在輸入詞向量序列時,隨機地使用標記MASK遮擋15%的詞,然后通過訓(xùn)練來預(yù)測這些被遮擋的詞是什么。
首先對語料庫進行預(yù)處理,使用詞級粒度的方法對中文語料進行切分,再使用BPE進行子詞級處理,學(xué)習(xí)到一個共享的蒙漢詞匯表,將蒙漢語料庫中共有的標記作為錨點來對齊兩種語言的詞向量空間,如數(shù)字和英文字母等,訓(xùn)練好一個跨語言詞向量空間。接著借鑒MLM的方法進行語言模型建模,從BPE處理之后的文本中隨機抽取15%的BPE標記,訓(xùn)練中80%的時間用MASK標簽代替,10%的時間用隨機的標記替換,剩余10%的時間保持正確的BPE標記不變。MLM預(yù)訓(xùn)練語言模型的過程如圖3所示。
圖3 MLM預(yù)訓(xùn)練語言模型的過程
實驗環(huán)境配置為:Python 3.6.0,PyTorch 1.0.1,NumPy,fastBPE和Moses。
實驗參數(shù)設(shè)置為:BPE codes數(shù)量設(shè)置為60 000,詞向量的維度設(shè)置為512,Transformer的神經(jīng)網(wǎng)絡(luò)層數(shù)設(shè)置為6層,多頭注意力機制設(shè)置為8頭,droupout設(shè)置為0.1,注意力機制的droupout設(shè)置為0,激活函數(shù)使用GELU,batch_size設(shè)置為16,句子的最大長度設(shè)置為256,使用Adam優(yōu)化算法,學(xué)習(xí)率lr設(shè)置為0.000 1,學(xué)習(xí)率衰減率設(shè)置為0,一階矩估計的指數(shù)衰減率beta1設(shè)置為0.9,二階矩估計的指數(shù)衰減率beta2設(shè)置為0.98,epoch_size設(shè)置為300 000,batch_size設(shè)置為16。
本文主要以內(nèi)蒙古工業(yè)大學(xué)構(gòu)建的123萬句蒙漢對齊語料庫中的蒙古語作為源語言端單語語料庫,以全球AI挑戰(zhàn)賽(AI Changer)中給出的1 000萬句英漢對齊語料庫中的漢語作為目標語言端單語語料庫為研究數(shù)據(jù)。訓(xùn)練集均為123萬句對蒙漢單語語料,驗證集均為3 000句對蒙漢平行語料,測試集均為1 000句對蒙漢平行語料。
實驗的評測使用的是語言模型評測中常用的兩個指標:語義困惑度(Perplexity,ppl)和準確率(Accuracy,acc)來判斷的。ppl越小表示語言模型越好,而acc越高表示語言模型越好。
在整體預(yù)訓(xùn)練過程中,跨蒙漢語言模型的ppl和acc在測試上的變化趨勢分別如圖4和圖5所示。
圖4 語言模型的ppl變化趨勢
圖5 語言模型的acc變化趨勢
可以看出在epoch 3時訓(xùn)練結(jié)果有了很大的提升,而當(dāng)?shù)竭_epoch 10左右結(jié)果的變化開始趨于平緩。這說明基于自注意力機制的預(yù)訓(xùn)練語言模型的方法,訓(xùn)練速度還是比較快的。由于結(jié)果可以很快收斂,所以短時間內(nèi)也可以預(yù)訓(xùn)練一個比較好的跨蒙漢語言模型。
本文總體技術(shù)路線圖如圖6所示,圖中虛線框表示的部分即為語言模型預(yù)訓(xùn)練部分。將其添加到蒙漢語言模型之前對語言模型的參數(shù)進行初始化。
圖6 預(yù)訓(xùn)練語言模型的蒙漢機器翻譯總體技術(shù)路線圖
實驗環(huán)境為Ubuntu 16.04的Linux系統(tǒng),實驗架構(gòu)的基礎(chǔ)為Pytorch,基于Facebook AI Research開源的框架XLM實現(xiàn)。參數(shù)設(shè)置如下:Transformer的神經(jīng)網(wǎng)絡(luò)層數(shù)設(shè)置為6層,多頭注意力機制設(shè)置為8頭,droupout設(shè)置為0.1,注意力機制的droupout設(shè)置為0,激活函數(shù)使用GELU,batch_size設(shè)置為16,句子的最大長度設(shè)置為256,優(yōu)化函數(shù)使用Adam優(yōu)化算法,學(xué)習(xí)率lr設(shè)置為0.000 1,學(xué)習(xí)率衰減率設(shè)置為0,一階矩估計的指數(shù)衰減率beta1設(shè)置為0.9,二階矩估計的指數(shù)衰減率beta2設(shè)置為0.98,epoch_size設(shè)置為300 000,batch_size設(shè)置為16,batch_size的最大值限定為64,實驗終止條件設(shè)置為模型在驗證集上10個epoch內(nèi)不再發(fā)生改變。
預(yù)訓(xùn)練語言模型的蒙漢機器翻譯模型的BLEU值的變化趨勢如圖7所示。mn-zh表示蒙漢翻譯模型的結(jié)果;zh-mn表示漢蒙翻譯模型的結(jié)果;Test表示在測試集上的結(jié)果;Valid表示在驗證集上的結(jié)果。
圖7 預(yù)訓(xùn)練之后的BLEU值
如圖7所示,預(yù)訓(xùn)練跨蒙漢語言模型之后,基于單語語料庫訓(xùn)練的蒙漢機器翻譯模型的BLEU值在20個epoch上呈現(xiàn)增長趨勢,在測試集上蒙漢翻譯性能于epoch17時表現(xiàn)最好,此時BLEU值為10.23,在驗證集上蒙漢翻譯性能于epoch19時表現(xiàn)最好,此時BLEU值為14.93。
本節(jié)考慮使用少量平行語料來改進蒙漢翻譯模型。因為跨蒙漢語言模型和漢語語言模型在驗證集中的ppl都很高,所以提出應(yīng)用翻譯語言模型(Translation Language Model,TLM)來改進跨蒙漢預(yù)訓(xùn)練。方法是在基于多頭自注意力機制預(yù)訓(xùn)練語言模型的框架中加入另一個預(yù)測任務(wù),此任務(wù)是預(yù)測下一個句子。在此任務(wù)中,一方面輸入同屬于一句話中的兩個句子,將其視為正例;另一方面則輸入兩句不屬于同一句話中的句子,將其視為反例,兩方面的任務(wù)各占一半。那么整個語言模型預(yù)訓(xùn)練的目標函數(shù)就是將這兩個任務(wù)求和之后再使用極大似然函數(shù)求值。為了預(yù)測被遮擋的蒙語,該模型可以同時處理蒙語句子和與它對應(yīng)的漢語句子,并通過重置漢語句子中的位置嵌入表示以使得蒙語和漢語詞嵌入表示進一步對齊。TLM預(yù)訓(xùn)練語言模型的過程如圖8所示。實驗設(shè)置同第2節(jié)一致,只是在數(shù)據(jù)集中添加了3萬句對的蒙漢平行語料庫作為訓(xùn)練集,平行語料的預(yù)處理方式同驗證集和測試集一致。
圖8 TLM預(yù)訓(xùn)練語言模型的過程
加入TML預(yù)訓(xùn)練語言模型的蒙漢機器翻譯模型的BLEU值的變化趨勢如圖9所示。
圖9 添加TML后BLEU值的變化趨勢
可以看出,添加TML之后,蒙漢機器翻譯模型的BLUE值產(chǎn)生了較大幅度的提升,蒙譯漢于測試集上在epoch 28表現(xiàn)最好,此時BLEU值為23.05,于驗證集上也是在epoch 28表現(xiàn)最好,此時BLEU值為32.743。這證明加入平行語料庫進一步促進了蒙漢詞嵌入表示的對齊程度,提升了基于單語語料訓(xùn)練的蒙漢機器翻譯系統(tǒng)的整體翻譯性能。
本文敘述了基于自注意力機制預(yù)訓(xùn)練跨蒙漢語言模型的方法以及添加少量蒙漢平行語料來進一步優(yōu)化預(yù)訓(xùn)練語言模型的方法,并基于這兩種方法構(gòu)建了蒙漢翻譯系統(tǒng)進行實驗。將實驗結(jié)果和基于單語語料庫訓(xùn)練方法進行了對比,統(tǒng)計到三組實驗在20個epoch上測試集的ppl和BLEU如表1所示,其相應(yīng)的變化趨勢如圖10所示。
表1 三組實驗結(jié)果
續(xù)表1
圖10 三組實驗BLEU值變化趨勢
可以明顯地看出,在語料庫相同的情況下,預(yù)訓(xùn)練跨蒙漢語言模型的方法結(jié)果表現(xiàn)較好,說明語言模型對于基于單語語料庫訓(xùn)練的蒙漢機器翻譯性能有很大的影響,預(yù)訓(xùn)練跨蒙漢語言模型能夠在一定程度上改善其翻譯質(zhì)量。通過對比實驗證實了融合單語和雙語語料預(yù)訓(xùn)練語言模型提升基于單語語料庫訓(xùn)練的蒙漢機器翻譯的可行性。三組實驗訓(xùn)練出的最優(yōu)BLEU值如圖11所示。
圖11 最優(yōu)BLEU值
基于單語語料庫訓(xùn)練的蒙漢機器翻譯系統(tǒng)在不同的epoch上翻譯的測試語句如表2和表3所示。
表2 短句翻譯模型測試
表3 長句翻譯模型測試
如表2和表3所示,模型通過不斷地學(xué)習(xí)最終可以將原句子表達的意思準確地翻譯出來,而且在沒有準確翻譯出來時也沒有出現(xiàn)UNK,而是使用了和原文中詞語意思較為接近的詞來代替。
本文主要介紹了預(yù)訓(xùn)練思想和基于自注意力機制預(yù)訓(xùn)練跨蒙漢語言模型的方式以及基于此方法設(shè)置的實驗,并將實驗所得的跨蒙漢語言模型應(yīng)用于基于單語語料庫訓(xùn)練的蒙漢機器翻譯系統(tǒng)中。最后,通過和基于單語訓(xùn)練的蒙漢翻譯模型的實驗結(jié)果做對比?;谧宰⒁饬C制預(yù)訓(xùn)練跨蒙漢語言模型的方法極大地改善了蒙漢機器翻譯系統(tǒng)的性能。究其原因,其一是自注意力機制能夠?qū)W習(xí)整個句子中每一個詞之間的關(guān)系,可以更好地學(xué)習(xí)到上下文的信息;其二是預(yù)訓(xùn)練的方法可以對參數(shù)進行有目的的初始化;其三是使用了少量的蒙漢平行語料庫進一步提升了語言模型的準確率以及蒙漢詞嵌入表示的對齊程度。