劉 歡,劉俊鵬,黃鍇宇,黃德根
(大連理工大學計算機科學與技術學院,遼寧 大連 116024)
近年來,隨著神經(jīng)機器翻譯(NMT)模型結構的改進[1-3]以及模型容量和數(shù)據(jù)規(guī)模的增加,通用領域高資源語言對之間的翻譯效果已經(jīng)接近人工水平.然而,NMT模型對于雙語平行訓練數(shù)據(jù)需求量大,翻譯質(zhì)量很大程度上取決于訓練數(shù)據(jù)與輸入文本的相關性.通用領域數(shù)據(jù)上訓練的翻譯模型,面對差異性較大的特定領域輸入文本時表現(xiàn)不盡人意,而特定領域上往往難以獲取足夠規(guī)模的高質(zhì)量平行語料來支撐NMT模型訓練.
利用豐富的域外語料來提升特定領域的模型性能的方法被稱為領域適應[4].從數(shù)據(jù)角度,有數(shù)據(jù)增強[5]和領域微調(diào)[6]等領域適應方法.從模型角度,Bapna等[7]和Zhu等[8]在預訓練好的模型上,凍結模型參數(shù),插入多領域的適應性模塊,只對適應模塊進行微調(diào),使得模型能適應多個領域的輸入.同時,隨著預訓練模式的發(fā)展,mBART[9]、mRASP[10]等大規(guī)模預訓練翻譯模型憑借其龐大的訓練數(shù)據(jù)優(yōu)勢,使得模型魯棒性更好,能較好地遷移到特定翻譯任務,改善翻譯效果.
本文針對旅游口語領域的俄漢低資源機器翻譯,主要利用通用領域的大規(guī)模俄漢平行語料(http:∥statmt.org/wmt21/triangular-mt-task.html)進行數(shù)據(jù)增強,并使用多種微調(diào)方法進行領域適應,以改善旅游口語領域俄漢機器翻譯性能.在數(shù)據(jù)預處理方面:針對小規(guī)模的俄漢口語領域數(shù)據(jù),采用長度比過濾;針對大規(guī)模的俄漢通用領域數(shù)據(jù),采用長度比和對齊模型過濾出質(zhì)量較高的平行句對;然后使用詞占比和語言模型進一步來篩選出接近領域內(nèi)的數(shù)據(jù).在模型參數(shù)方面,對小規(guī)模的旅游口語訓練集和大規(guī)模通用領域語料篩選出來的訓練集,用不同參數(shù)配置的Transformer模型訓練NMT模型.然后對雙語NMT模型、加入適應性模塊的雙語NMT模型和mRASP多語言預訓練模型分別進行微調(diào),根據(jù)驗證集上的表現(xiàn)選擇最優(yōu)模型.在譯文輸出過程中,對長度懲罰因子等參數(shù)進行調(diào)優(yōu),最后進行了模型平均和后處理.
本文使用第十七屆全國機器翻譯大會(CCMT2021)提供的旅游口語領域俄漢平行語料作為領域內(nèi)訓練集和驗證集,同時使用WMT2021提供的通用領域俄漢數(shù)據(jù)作為額外數(shù)據(jù).
由于任務提供的旅游口語領域數(shù)據(jù)匱乏(約4.5萬句對),直接訓練NMT模型的翻譯效果十分有限,因此首先用數(shù)據(jù)增強方法對數(shù)據(jù)進行擴充.回譯是一種常見的數(shù)據(jù)增強技術,它通過訓練一個目標語言到源語言的反向翻譯模型,然后利用目標端單語數(shù)據(jù)生成偽平行語料.但由于沒有足夠規(guī)模的旅游口語單語數(shù)據(jù),因此無法使用回譯方法進行數(shù)據(jù)增強.從通用平行語料中篩選出與目標領域高度相似的數(shù)據(jù)是數(shù)據(jù)擴充的另一種方法.本文以WMT2021提供的俄漢翻譯數(shù)據(jù)集作為通用領域數(shù)據(jù),從中選擇靠近旅游口語領域的平行語料.
為此,對通用平行語料采用以下數(shù)據(jù)篩選方法:(a) Fast-align[11](https:∥github.com/clab/fast_align),對齊分數(shù)能一定程度上反映平行句對之間的對齊質(zhì)量,按照對齊分數(shù)的大小排序,去掉得分最低的20%句對;(b) 詞占比[12],過濾出與目標領域詞級重合度較高的平行句對,具體地,對目標領域的漢語句子進行分詞,取字長大于1、詞頻大于2的詞構建目標詞典,對通用領域的漢語句子進行分詞,選取所有詞均在目標詞典中,即目標詞占比為100%的句子;(c) 使用KenLM[13](https:∥github.com/kpu/kenlm)語言模型過濾出接近目標領域的平行句對,去掉語言模型分數(shù)最低的20%句對.
對旅游領域口語俄漢語料和通用領域俄漢語料進行統(tǒng)一預處理,處理過程如下:1) 過濾平行語料中重復的句對;2) 去除多余空格及非打印字符;3) 漢語全角字符轉換為半角字符;4) 對俄語使用Moses腳本(https:∥github.com/moses-smt/mosesdecoder)分詞,對漢語使用Jieba(https:∥github.com/fxsjy/jieba)分詞;5) 對所有數(shù)據(jù)進行子詞長度及長度比過濾:最大子詞長度設置為250,最大子詞長度比設置為2.6) 合并口語語料和通用語料,采用BPE算法[14]分別生成3.2×104大小的俄語和漢語詞表.過濾及預處理后的語料數(shù)量和平均句子長度如表1所示.
表1 過濾及預處理后的訓練集語料數(shù)量統(tǒng)計
由于大規(guī)模高質(zhì)量的訓練數(shù)據(jù)往往難以獲取,而應用領域又廣泛,因此通用模型不能很好地覆蓋和適應所有領域.從領域外的訓練數(shù)據(jù)遷移知識,通過微調(diào)來改進特定領域內(nèi)的翻譯,是一種高效的做法,并且在許多自然語言處理任務上都取得了良好的效果.
根據(jù)預訓練模型所含語言翻譯方向的數(shù)量,可以分為傳統(tǒng)的雙語預訓練模型微調(diào)和近期獲得廣泛關注的多語言預訓練模型微調(diào).對于NMT而言,由于雙語模型中不存在模型容量競爭和語言學知識沖突,雙語模型的性能通常會優(yōu)于同等數(shù)據(jù)規(guī)模下的多語言模型.因此,本文通過引入通用俄漢數(shù)據(jù),訓練通用俄漢雙語模型,然后利用旅游口語俄漢數(shù)據(jù)對預訓練雙語模型微調(diào),以緩解域內(nèi)數(shù)據(jù)稀缺問題.此外,隨著數(shù)據(jù)規(guī)模和模型容量的增加,一些多語言預訓練模型也取得了較好的性能,因此,本文也使用mRASP多語言預訓練翻譯模型進行微調(diào).
首先,在通用訓練集上訓練通用領域的雙語基線模型,在通用模型上使用口語訓練集進行微調(diào).然后,將通用訓練集與旅游口語訓練集混合,訓練混合模型,在混合模型上再使用口語訓練集進一步微調(diào).
除了數(shù)據(jù)使用角度,在模型結構上探索領域之間的共性與差異性也是領域適應的一種方法.本文使用Bapna等[7]提出的adapter模塊來擴展預訓練的NMT模型.如圖1所示,適應模塊是添加在編碼器和解碼器的每一層最后的微小前饋組件,這些模塊化的適應層可以視為專門針對特定領域(或特定語言對)的專家,并可以逐步添加多個模塊.這種解決方案避免了對整個NMT系統(tǒng)進行微調(diào),而是使用適合目標任務的具有相對較少參數(shù)的適應模塊,更具靈活性.本文對通用俄漢NMT模型,凍結模型參數(shù)后在每層前饋網(wǎng)絡后插入適應模塊,再使用口語訓練集進行微調(diào).圖1中適應模塊的輸入矩陣和輸出矩陣,其外部維度與Transformer隱層維度一致,對于內(nèi)部維度,嘗試了128,256,512三個具體維度,實驗表明在本任務上內(nèi)部維度設置為256較為合理,考慮到篇幅有限,后續(xù)實驗只報告基于256內(nèi)部維度的結果.
圖1 加入adapter模塊的模型結構Fig.1 Model structure of adding the adapter modules
近年來,各大企業(yè)發(fā)布的大規(guī)模預訓練模型,因其龐大訓練數(shù)據(jù)和自身結構優(yōu)勢,模型魯棒性較好,在各項自然語言處理的下游任務上微調(diào)取得了較好的效果.在NMT模型中,多語言模型因其容納翻譯方向眾多、部署高效而備受關注,多語言預訓練翻譯模型的效果也不斷提升,甚至在部分語言對上超越了雙語翻譯模型.由于mRASP是面向機器翻譯任務的多語言預訓練模型,其翻譯效果已經(jīng)超過mBART,因此選擇mRASP作為預訓練模型進行微調(diào).本文在mRASP多語言預訓練模型上,使用俄漢口語訓練集進行微調(diào).
模型平均[15-16]可以提升模型魯棒性,有助于提高翻譯質(zhì)量.模型平均是將同一個模型在訓練的不同時刻保存的模型進行參數(shù)平均,通常選擇模型基本收斂時對應的最后N個時刻或是訓練過程中得分最高的N個時刻的參數(shù),以同等權重對參數(shù)進行平均,得到魯棒性更強的模型.
由于BLEU 指標偏向于較短的翻譯結果,因此通常在解碼搜索時使用長度懲罰因子進行約束.長度懲罰因子越大,解碼生成的譯文越長.對于不同語言和領域的翻譯任務,默認的長度懲罰因子不一定是最佳選擇.如表1所示,旅游口語語料的平均句長小于通用語料的平均句長,在預訓練階段,通用領域數(shù)據(jù)訓練出來的模型更傾向生成長句子,為了更好地適應口語領域的短句風格,在譯碼時對長度懲罰因子進行了分析和調(diào)優(yōu).
由于數(shù)據(jù)預處理階段,驗證集和訓練集經(jīng)過了相同的全半角轉換處理后,除了常見的中文標點符號,如“(”“:”“?”等,其余標點被轉換成了半角.因此,后處理主要對生成譯文的半角標點符號進行了還原,與驗證集參考譯文保持一致.
所有實驗基于開源框架Fairseq,并使用單張48 GB的Nvidia RTX A6000顯卡進行訓練和測試.對于Transformer模型,在訓練數(shù)據(jù)充足的情況下,增加模型容量能有效地提高翻譯性能,而訓練數(shù)據(jù)稀缺時,適當減少隱層表示維度、編碼器解碼器堆疊層數(shù)反而更有益[17].基線1采用2層編碼器2層解碼器的淺層Transformer結構,注意力頭數(shù)為2,詞向量和隱層維度均為512,前饋神經(jīng)網(wǎng)絡的隱層維度為2 048;基線2和基線3使用Transformer-big參數(shù)設置.在不同的模型架構上測試dropout以獲得合適的參數(shù)值,對于淺層模型,dropout設置為0.3,activation-dropout和attention-dropout設置為0.2;對于big模型,dropout設置為0.3,activation-dropout和attention-dropout均設置為0.
使用Adam優(yōu)化器,β1=0.9,β2=0.98,warm-up步數(shù)為4 000,每個批次的最大子詞數(shù)量為16 384(訓練和微調(diào)數(shù)據(jù)在5萬以下時調(diào)整為8 192).預訓練階段,設置學習率為5×10-4,每2 000步保存一次模型,patience設置為10.微調(diào)階段,由于不同微調(diào)方法的收斂速度不同,訓練步數(shù)也有所不同,整體微調(diào)和adapter微調(diào)的最大步數(shù)分別設置為1×104和2×104步.每個微調(diào)模型都嘗試5×10-4和4×10-5兩種學習率,每200步設置檢查點并計算BLEU分數(shù).所有微調(diào)方法使用的數(shù)據(jù)均為口語訓練集.
1) 主要實驗結果
表2展示了不同系統(tǒng)在驗證集上的BLEU分數(shù),及使用微調(diào)技術后相對各基線模型的提升,所有分數(shù)均使用sacrebleu(https:∥github.com/mjpost/sacrebleu)計算基于字的BLEU4[18]值.由于mRASP生成譯文的標點符號為全角,與驗證集參考答案一致,而基線1~3及其微調(diào)模型生成譯文的標點符號為全角,因標點符號的全半角不統(tǒng)一會造成BLEU略低,為了公平比較,將各模型譯文與參考答案全半角統(tǒng)一后計算BLEU.表2報告的數(shù)值均為各模型在合適的學習率下,經(jīng)過全半角處理的單個模型最高結果.
表2展示了不同規(guī)模和領域的訓練數(shù)據(jù)下,各基
表2 不同系統(tǒng)在驗證集的測試結果
線模型及其微調(diào)的結果.#1、#2、#3為雙語模型,訓練數(shù)據(jù)分別為旅游口語訓練集、通用領域訓練集、旅游口語和通用領域訓練集,數(shù)據(jù)規(guī)模逐漸增大.可以看到,隨著訓練數(shù)據(jù)和模型容量的增加,#1、#2、#3雙語基線模型的BLEU分數(shù)明顯提升,尤其是#3混合模型,混合了目標領域數(shù)據(jù)從頭訓練,相較#2通用模型的BLEU值提升了1.30個百分點.#4為mRASP語言預訓練模型,訓練數(shù)據(jù)為32個語言對上的1.97億平行句對,對于未見的俄漢驗證集BLEU值只有0.32%,mRASP 預訓練模型通常需要在特定下游任務上微調(diào).
在各個雙語和多語言預訓練模型上分別使用傳統(tǒng)的整體微調(diào)、插入Adapter適應模塊兩種微調(diào)方法.兩種微調(diào)過程的BLEU變化曲線如圖2所示.整體微調(diào)會改變模型整體參數(shù)狀態(tài),收斂速度快、無需增加額外模型容量,但是對學習率十分敏感,容易過擬合.Adapter微調(diào)方法會額外增加模型容量,并且只對增加部分的參數(shù)進行更新,但是微調(diào)過程更具魯棒性,不易過擬合.另外,Adapter微調(diào)在通用雙語模型和mRASP模型的表現(xiàn)有較大差異,這是由于雙語模型的訓練數(shù)據(jù)和微調(diào)數(shù)據(jù)較相似,而多語言模型需要較長訓練時間去擬合單個語言方向的微調(diào)數(shù)據(jù).
圖2 雙語模型和多語言模型的微調(diào)變化趨勢Fig.2 Fine-tuning trends of bilingual model and multilingual model
如表2所示,在通用雙語模型和混合雙語模型上,整體微調(diào)方法的BLEU值分別提升了2.45和1.57個百分點,Adapter微調(diào)方法的BLEU值分別提升了2.76和1.99個百分點;而在mRASP多語言模型上,由于額外加入的模塊收斂較慢,擬合難度較大,Adapter微調(diào)不如整體微調(diào)方法.mRASP模型直接微調(diào)獲得了最好的效果,相比其它模型結果,微調(diào)效果提升明顯.
2) 模型平均和后處理
以#3混合雙語模型為例,選擇微調(diào)階段BLEU值最高的4個模型進行參數(shù)平均,實驗結果如表3所示.由于微調(diào)階段模型檢查點設置得較為緊密(200步),因此單個模型的BLEU分數(shù)較為突出,模型平均在BLEU分數(shù)上的影響并不明顯.對譯文進行標點符號的后處理能進一步提高BLEU分數(shù).
表3 模型平均和后處理的BLEU分數(shù)
3) 長度懲罰因子
以#2通用雙語模型為例,當模型基本收斂時,將束搜索大小固定為5,用驗證集BLEU值進行評估,選擇最合適的長度懲罰因子.實驗結果如表4所示.將長度懲罰因子α調(diào)整到合適范圍會對BLEU值產(chǎn)生正面影響,對于句子長度偏短的口語領域驗證集,過大的長度懲罰因子可能會導致束搜索無法選擇正確的翻譯結果.
表4 長度懲罰因子對BLEU分數(shù)的影響
表5展示了測試集源句及本系統(tǒng)生成譯文的例子,其中參考譯文來自谷歌翻譯.相比于僅使用域內(nèi)數(shù)據(jù)訓練的#1口語雙語模型的譯文,#3+adapter微調(diào)模型和mRASP+直接微調(diào)模型在BLEU值提高的同時,譯文質(zhì)量均有所改善.
低資源神經(jīng)機器翻譯往往具有集外詞影響翻譯性能的問題,使用BPE算法進行較小粒度的翻譯在一定程度上能緩解集外詞影響.然而對于俄漢機器翻譯,僅使用子詞切分并不能有效解決具有組合詞義的集外詞現(xiàn)象,如表5源句中的“урок”單獨出現(xiàn)時翻譯為“教訓”,是訓練集中的高頻詞,“на урок”組合出現(xiàn)時翻譯為“上課”,該組合在訓練集中并未出現(xiàn)過,#3+adapter微調(diào)模型模型產(chǎn)生了錯譯.mRASP直接微調(diào)模型也未能很好地翻譯這個組合,但由于mRASP多語言預訓練模型所使用的訓練數(shù)據(jù)規(guī)模龐大,包含豐富的語義知識,經(jīng)過人工檢查,相比雙語微調(diào)模型,mRASP微調(diào)模型在測試集上的譯文更流暢,此類詞組錯譯情況更少.
表5 源句及系統(tǒng)生成譯文示例
本文面向CCMT2021低資源語言評測項目俄漢語言對,介紹了通用語言模型對特定領域數(shù)據(jù)的領域適應方法.主要借助通用領域的大規(guī)模俄漢平行語料來提升旅游口語領域俄漢機器翻譯性能.融合了詞占比、Fast-align、語言模型等數(shù)據(jù)篩選方法,篩選出與域內(nèi)數(shù)據(jù)相似的域外數(shù)據(jù)進行預訓練,采用直接微調(diào)、加入領域適應模塊微調(diào)以及在mRASP預訓練模型微調(diào),譯碼階段使用合適的長度懲罰因子,模型平均和后處理,實驗結果顯示,這些方法能夠明顯提高低資源情況下旅游口語俄漢翻譯的質(zhì)量.