宜 年,艾山·吾買爾,買合木提·買買提,吐爾根·依布拉音
(新疆大學信息科學與工程學院 新疆多語種信息技術重點實驗室,新疆 烏魯木齊 830046)
目前,大多數從事機器翻譯領域的研究人員將目光轉向了神經機器翻譯模型[1-5],尤其關注Transformer[2]神經機器翻譯模型和基于卷積網絡的神經機器翻譯模型[4-5].Transformer和基于動態卷積的神經機器翻譯不同于基于循環神經網絡的方法[1]和基于注意力機制的方法[3],Transformer的編碼器和解碼器的網絡結構完全基于自注意力機制,基于動態卷積的神經機器翻譯模型則是基于動態卷積神經網絡構成的,這使得兩個模型能夠節省大量的訓練時間并顯著的提升翻譯質量.但基于動態卷積的神經機器翻譯方法在某些翻譯任務上與Transformer模型相比,仍有一定差距.因此,越來越多的研究者將目光轉向Transformer機器翻譯模型.
由于神經機器翻譯模型和任務的高復雜度,神經機器翻譯往往需要大量的平行數據來擬合當前翻譯任務,數據規模大小和質量的高低往往能決定神經網絡機器翻譯模型性能的好壞.然而,目前仍然存在大量缺少平行數據的語言對,這毫無疑問限制了神經網絡機器翻譯的發展.因此,如何提升低資源下機器翻譯的性能成為了一個重要的研究方向,其中一部分研究人員利用數據增強[6-15]的方法通過大量的數據來提升低資源機器翻譯的性能.Sennrich等[6]通過利用翻譯模型將大量目標端單語數據翻譯為源端語言構成大量的生成數據. 但Edunov等[7]通過研究不同情況下反向翻譯對于模型的影響發現:在低資源情況下,數據增強方法因為生成數據質量低反而會降低模型的性能;采樣和規則化集束搜索可提升反向翻譯的效果.與 Edunov等[7]的方法類似,Imamura等[8]通過對生成數據添加噪聲來提升反向翻譯效果.而Caswell等[9]認為添加噪聲方法是通過噪聲讓模型區分生成數據與真實數據,從而提升反向翻譯的效果,因此他們通過在生成數據前添加標簽的方法讓模型區分不同數據并通過實驗表明添加噪聲與添加標簽的方法不正交來驗證他們的猜想.
在數據量充足的情況下,可以得到有效的生成數據來提升翻譯模型的性能,但是對于低資源翻譯任務來說,反向翻譯無法得到高質量的生成數據,造成該方法無法奏效.因此,如何過濾掉生成數據中質量差的數據變得尤為重要.Imankulova等[11]通過循環翻譯將生成的源端數據再次生成為目標端數據,之后利用BLEU[12]對生成數據進行過濾來得到高質量的生成數據.Xu等[13]認為Imankulova等[11]所提方法需要額外的翻譯模型將生成的源端數據再次翻譯為目標端數據后才能計算BLEU值,因此他們利用目標端單語數據和生成的源端數據的詞向量表示來計算生成數據的質量.Hoang等[14]在反向翻譯的基礎之上提出迭代翻譯,通過循環重復反向翻譯的過程來獲取高質量生成數據提升翻譯模型的性能.Imankulova[15]利用語言模型、ASS(average alignment similarity,真實目標句子與偽造的目標句子中所有詞向量的平均余弦相似度)和MAS(maximum alignment similarity,真實目標句子與偽造的目標句子中最相似的詞與合成目標句中每個詞之間的余弦相似性)等方法過濾生成數據.
針對維漢翻譯任務,本文對多種數據篩選的方法進行研究,并使用加標簽[9]的方法對這些方法過濾的數據進行比較,確定哪種方法最有效,并根據不同方法得到生成數據的分數,按比例的抽取生成數據混合到真實數據中.之后利用不同數據篩選方法得到的數據訓練不同的模型,并將這些模型集成起來得到最好的翻譯系統.通過對這些數據篩選方法獲得的生成數據進行加標簽處理,以便模型區分生成數據與真實數據,從而得到高性能的翻譯模型.除此之外,本文為了得到更好的反向翻譯模型,將知識蒸餾方法得到的數據添加到真實數據中,以此來增強漢維翻譯模型的魯棒性.并利用不同數據篩選方法獲得生成數據,通過一種多分支模型訓練方法得到翻譯模型,最終得到性能較好的模型.
本文所描述系統的整體訓練流程如圖1所示,在該過程中使用了反向翻譯、數據過濾、知識蒸餾、微調等方法,接下來將會對這些方法進行介紹.
神經機器翻譯是目前主流的機器翻譯模型方法,Transformer[2]翻譯模型更是其中最受矚目的方法,其不僅在機器翻譯領域得到了極大的關注,也在自然語言其他任務上取得了不錯的結果.本文中以Transformer模型作為維漢機器翻譯模型的基礎模型,Transformer模型的框架主要選用FACEBOOK團隊研發的FAIRSEQ開源系統(https:∥github.com/pytorch/fairseq).
知識蒸餾[16]是一種知識遷移的方法,針對機器翻譯任務,本文主要是將一個翻譯模型所學的知識通過生成的數據轉移到另一個翻譯模型里.針對本次評測的特點,采用句子級的知識蒸餾方法,具體的做法如圖1中教師模型和數據蒸餾階段.在訓練教師模型階段,本文針對句子序列是否為逆向,將漢語句子序列和維吾爾語句子序列的方向分為左到右(L2R)、右到左(R2L)、右到右(R2R),并根據這些情況訓練了6個教師模型,之后利用這些教師模型對原有的平行語料進行翻譯從而得到的6個蒸餾平行語料,將這些蒸餾平行語料與原平行語料進行隨機合并,訓練得到學生模型,并利用學生模型去翻譯漢語單語數據來生成對應的維吾爾語句子.在實驗中,由于生成的平行數據的數量遠遠大于真實數據的數量,為了防止生成的數據分布干擾真實數據,利用原本的平行數據去微調模型,以確保模型生成的結果更遵從原本的平行數據.
為了充分利用單語數據,本文對測評提供的漢語單語言文本進行反向翻譯.該過程主要通過一個漢維方向的翻譯模型自動地將漢語單語數據翻譯為維語數據,與輸入漢語單語數據組成平行數據用于訓練模型.具體做法為:本文使用維漢翻譯任務提供的維漢平行數據并利用知識蒸餾的方法得到一個性能較好的漢維、維漢翻譯模型,并利用漢維和維漢模型循環翻譯漢語單語數據從而構建{真實漢語句子、生成維語句子、生成漢語句子}的語料庫DPseudo={Y,XPseudo,YPseudo}.為了評價所生成數據的質量,本文利用句子困惑度、Y和YPseudo的相似度、數據的領域相似度、Y和YPseudo的詞語對齊值等方式對DPseudo進行評價.
1) 句子困惑度:本文利用平行數據中的維語訓練語言模型LM1,反向翻譯生成的維語訓練語言模型LM2,并使用這兩個語言模型對生成的數據計算困惑度Sppl,將利用加權求和的方法得到的結果作為評判句子流暢度的值,其中訓練語言模型的工具為KenLM(https:∥github.com/kpu/kenlm).

2) 句子對齊程度:利用句子詞語對齊工具fast_align(https:∥github.com/clab/fast_align)計算生成維漢句對基于對齊率的歸一化句子對齊質量Salign.
3) 句子級BLEU值:利用sacrebleu(https:∥github.com/mjpost/sacrebleu)計算真實漢語句子Y和生成的漢語句子YPseudo之間的句子級BLEU值SBLEU,并根據所得值進行篩選.
4) 領域相似度:本文利用BERT預訓練模型[17]來提取生成數據的特征向量,之后將向量輸入到兩層的全連接網絡和softmax函數進行二分類,根據softmax函數輸出的值來判斷生成數據與訓練數據的領域相似度.該過程的公式為:
Xf=BERT(XPseudo),
Ssimi=softmax(tanh(W1Xf+b1)W2+b2),
其中,BERT為預訓練模型,Xf為預訓練模型提取的特征向量,W1和W2為全連接的參數,b1和b2則為全連接的偏置.本文將驗證數據作為領域內數據,通過計算訓練數據與驗證數據的相似度來篩選領域外數據,相似度是通過BERT提取的特征向量利用余弦相似度來表示.領域相似度的值為該分類器其對漢語單語數據進行分類的概率.
5) 數據篩選方法融合:本文希望通過融合篩選后得到的數據更加流暢、語義和領域更加相近,因此對生成句子通過不同的數據篩選方法得到的評分進行差值化.差值化的公式如下:
S=α·Sppl+β·Salign+γ·SBLEU+ρ·Ssimi,
其中,α,β,γ,ρ為權重,且和為1.
本文將篩選后的生成數據與真實數據隨機混合后訓練新的翻譯模型,發現即使經過了篩選,生成數據與真實數據之間仍存在差距.因此,本文使用Caswell等[9]提出的添加標簽的方法,讓模型學習到所輸入數據的來源.
在通過模型集成的方式得到數據結果之后,對測試集進行分析,發現某些結果中只存在數字等非漢語字符的句子.因此本文對這種翻譯結果進行了處理.具體流程為:1) 搜索翻譯結果中漢語句子未包含漢語字符,但是對應的維語句子中有維語字符的結果;2) 將這些維語句子中的非維語數據刪除,之后將句子重新輸入到模型中進行翻譯;3) 將非維語的字符替換到翻譯的結果中.處理結果前后對比如表1所示,因為出現該問題的句子僅占測試集的0.005,該后處理對于結果的提升并不明顯.

表1 后處理舉例
對于本次評測任務,本文對雙語數據和單語數據進行了全角轉半角、轉義、控制等特殊字符處理、分詞等處理,其中維吾爾語分詞工具為本課題組開發,漢語分詞則為哈爾濱工業大學分詞系統.本文還刪除了平行句對中長度比大于3的句子對,通過長度比簡單的過濾數據集.經過所有處理,最終保留16萬維吾爾語和漢語句對和6×106條漢語單語數據.對于6×106條漢語單語數據,經過反向翻譯和不同的數據篩選策略后,保留每個篩選策略中最好的3×106條數據進行實驗.
訓練模型所用服務器的操作系統為CentOS7.2,CPU為 E5-2640,內存為256 GB,使用4塊 V100顯卡.本次評測所訓練的模型參數基于Transformer big model,所有模型的訓練僅在一塊GPU上進行,batchsize為 4 096個 token,每次訓練迭代60 epoch,并平均后30個epoch的模型參數,dropout[18]設為0.3,使用Adam[19]優化模型參數,Adam中β1=0.90,β2=0.98,初始學習率設為0.001,warmup為4 000.在模型預測結果時,beamsize為24.數據預處理所采用的BPE[20]迭代次數為8 000,翻譯結果使用Moses(https:∥www.statmt.org/moses/)中提供的評價腳本multi-bleu.perl計算得到詞級的BLEU值.
為了得到性能更強的翻譯模型從而翻譯得到更好的生成數據,本文對比模型的深度與廣度對于模型性能的影響.由于時間、設備等問題,這些對比實驗在16萬維漢平行數據集上進行,其結果如表2所示,其中基礎模型采用Transformer base model參數.針對廣度模型,本文采用Transformer big model參數.而針對深度模型,本文將Transformer base model 中編碼器和解碼器層數由6層變為8層.實驗結果表明,在低資源情況下,廣度模型的結果要優于基礎模型和深度模型的結果.在低資源情況下,更深的模型可能并不能帶來更好的結果.這可能是因為更深的模型需要在訓練過程中不斷地學習更高層的特征,而學習有效的高層特征需要更多的數據支持.本研究認為廣度的模型可以細化句子的特征,并且因為dropout機制以及線性和非線性組合可以篩選這部分特征從而使模型性能得到更好的提升,下文在廣度模型上進行實驗.

表2 模型廣度和深度實驗結果
針對知識蒸餾的方法,本文根據句子序列方向的不同,將教師模型分為以下幾種:L2R、R2L、R2R.將不同教師模型生成的數據和維漢平行數據(L2L)合并之后得到數據蒸餾模型的結果如表3所示,其中數據蒸餾1為采用L2L、L2R方式得到的生成數據合并之后的模型結果,數據蒸餾2則是在其基礎之上添加R2L,R2R方式得到的生成數據合并之后的模型結果.由于數據蒸餾方法是為了通過得到性能更好的漢維翻譯模型以生成更好的生成數據,因此本文中給出該方法在漢維、維漢驗證和測試集上的結果.

表3 學生模型的實驗結果
從表3,可以看出知識蒸餾對維漢模型和漢維模型的性能均有提升.實驗結果表明,通過添加不同教師模型的生成結果,可以有效的提升基線模型的結果.這可能與增加了平行數據的數量和數據的分布有關.
為了充分利用漢語單語數據以及對不同數據篩選方法進行對比研究,本文使用不同的數據篩選方法對生成的數據進行處理,并在相同數據量的情況下對不同方法進行實驗.相同數據量是指通過數據篩選方法從6×106條單語數據生成的數據集中篩選3×106條數據進行實驗.實驗結果如表4所示,其中加號均表示在基線模型上增加數據篩選方法,1∶4∶1∶4和4∶1∶4∶1為句子困惑度、領域相似度、句子級BLEU值、詞對齊分數的不同插值化.從結果可知,不同數據篩選方法的實驗結果都比較接近,且明顯優于基線模型、數據蒸餾2和反向翻譯.這種結果可能是因為本文在利用生成數據訓練翻譯模型時采用了添加標簽的方法.該方法標明了哪些數據是生成數據,哪些是真實數據,因此使得不同數據篩選方法的結果相近.表中不同數據篩選方法的BLEU值為篩選的數據與真實數據混合訓練后,再使用數據蒸餾的數據和真實數據微調模型之后得到的結果.本文主要針對維漢翻譯,因此數據過濾方法以及模型集成和微調只在維漢驗證集和測試集上進行了計算.

表4 維漢翻譯方向上不同數據篩選方式的實驗結果以及模型集成和微調的結果
本文通過真實的平行數據對數據增強方式得到的模型進行了微調和集成,其實驗結果如表4所示.從實驗結果可以看出,真實的平行數據對于模型進行微調之后,反而模型的結果降低了,這可能是因為在微調時,僅使用了訓練集進行微調的問題.而使用模型集成的方法,將多個模型集成起來得到的結果遠比單個的模型結果要好,表明通過將不同數據選擇方法得到的模型集成起來可以得到性能更好的模型.
在維漢翻譯測評任務中,本次最終提交了3個系統的結果.提交系統在維漢測試集和驗證集上的結果如表5所示,其中主系統為使用不同生成數據集訓練模型集成之后采用后處理的結果,系統1為對不同模型輸出使用重排序的結果,系統2則是集成多個微調后模型得到的結果.

表5 在開發集和測試集上的實驗結果
為了驗證不同模型架構集成對結果的影響,本文做了相應的實驗.該實驗所使用的模型結構為基于動態卷積的神經機器翻譯模型[5]和基礎模型(Transformer)[2],并且這些模型是通過16萬維漢平行句對訓練得到.其實驗結果如表6所示.可以從實驗結果中看出,不同模型結構的集成可以極大的提升低資源翻譯模型的性能.而不同模型結構的集成之所以有更好地提升,可能是因為模型結構不同導致模型從不同角度提取特征,從而通過集成的方法來綜合兩個模型的結果.但是集成僅僅只是考慮兩種模型翻譯的結果而無法將不同角度提取的特征進行互補.

表6 Dynamic模型與Transformer模型集成實驗結果
在本次評測系統的研究中,為了提升維漢翻譯模型的性能,本文使用了反向翻譯、知識蒸餾、微調、模型平均和集成等方法.同時本文也對不同的數據過濾方法進行了對比,希望通過這些對比實驗,繼續對數據增強方式進行研究.由于利用插值化的方法對于融合方法的不穩定,本文希望將領域相似度和數據質量過濾從根本上結合起來,而不是僅僅采用插值的方法進行不同方法的融合.同時本文在實驗過程中發現Transformer模型會在每一層關注句子的整體信息,而基于動態卷積的翻譯模型則是關注局部信息,全局信息是通過多層的方法間接關注,這兩種方法各有優點,從而導致Transformer在低資源情況下可能沒有基于動態卷積的翻譯模型性能好,因此希望在接下來的研究中想辦法將兩個模型的優點結合起來,從而在低資源翻譯任務上得到更好的結果,也會在Transformer模型上進行更深層模型的嘗試以及集成不同結構的模型.