牛向華 蘇依拉 高 芬 趙亞平 張 振 仁慶道爾吉
(內蒙古工業大學信息工程學院 內蒙古 呼和浩特 010080)
隨著“一帶一路”經濟帶的發展以及國家的大力支持,蒙漢機器翻譯的市場需求日趨增大。而神經機器翻譯是一種需要數據驅動的方法,其性能很大程度上取決于平行語料庫的規模、質量和領域覆蓋面。由于神經網絡的參數數量巨大,只有當訓練數據滿足一定的條件時,神經機器翻譯的性能才會顯著超過統計機器翻譯[1]。由于平行語料在質量、數量和覆蓋面等方面非常有限,特別是對于像蒙古語這樣的低資源語言,因此利用大量單語數據來改善蒙漢神經機器翻譯的性能是很有必要的。人類在進行翻譯時,首先是理解一句話,然后在腦海里形成對這句話的語義表示,最后再把這個語義表示轉化到另一種語言。單語數據訓練的思想正是考慮如何縮小人工智能翻譯系統和人類翻譯之間的鴻溝。基于上述背景,本文提出將單語數據應用到蒙漢機器翻譯中。
一般而言,如果沒有雙語平行數據,而又要實現機器翻譯,是非常困難的,主要難點在于如何將目標語言和源語言關聯起來。為實現基于單語數據[2-8]訓練的蒙漢機器翻譯,本文首先通過預訓練生成跨語言詞嵌入[9];然后利用對抗學習算法[10]構建蒙漢雙語字典;接著在訓練過程中通過去噪自編碼器結合蒙漢單語語料庫訓練語言模型,并將學習到的雙語字典和語言模型相結合初始化蒙漢翻譯系統;最后使用回譯[11]的方法逐步迭代優化初始翻譯系統,使其性能逐漸增強。通過搭建基于單語數據的蒙漢機器翻譯系統,并將其性能與基于LSTM[12]神經網絡在平行語料庫上訓練的蒙漢機器翻譯系統的性能進行比較,使用BLEU[13]值作為評價指標,實驗結果顯示,使用123萬句對單語數據訓練20輪的蒙漢機器翻譯系統的性能和使用10萬句對蒙漢平行語料庫在開源系統OpenNMT上訓練8輪的結果相當。本文基于單語語料庫訓練的蒙漢機器翻譯的總體技術路線圖如圖1所示。

圖1 總體技術路線圖
在端到端的神經機器翻譯模型[14]中,如果存在大量的平行數據,只要將數據輸入神經網絡就能得到兩種語言之間的一種對應關系,然而,只有單語數據的情況下,因兩種語言的語料之間是毫無關聯的,那么使它們產生聯系便是實現互譯的最重要的一步。本文通過跨語言詞嵌入模型將蒙漢兩種語言的詞向量映射至同一空間,利用對抗訓練學習蒙漢兩種語言的詞向量空間的線性映射,使得蒙漢兩種語言的詞向量分布在同一空間中時很相似。據此可以假設目標函數為:
(1)
式中:d表示詞向量的維度;Md(R)表示實數矩陣空間;M表示蒙古語詞向量空間;Z表示漢語詞向量空間。通過訓練需要學習源語言M和目標語言Z之間的映射關系W,使得兩種語言在同一向量空間的分布表示很接近。將任意一個蒙語詞S的翻譯定義為t=arg maxtcos(Wms,zt)。在實踐中,有其他研究者發現如果在W上強制執行正交性約束能夠更好地學習到這種映射關系[15],因此式(1)就可以歸結為Procrustes問題,從而能夠對其做奇異值的分解,以求能更簡單地進行求解。
(2)
式中:UVT=SVD(MZT)。
在本文只擁有蒙漢單語語料的情況下,學習映射W過程為:首先通過對抗性訓練來學習W的初始值;然后使用兩個語料中共享的一些單詞作為錨點來進一步對齊向量空間,修正W的值;最后,通過改變向量空間的度量來提高錨點的數量,進一步提高W的準確性。學習映射W的過程如圖2所示。

圖2 學習映射W的過程
圖2(a)表示蒙漢兩個詞向量分布空間,M表示蒙古語詞向量空間,Z表示漢語詞向量空間,點代表每一個詞向量表示,點的大小表示詞在語料庫中出現的頻率,越大表示出現的次數越多。圖2(b)中表示使用對抗訓練學習旋轉矩陣W,它使得兩個分布空間大致對齊,星點表示隨機選擇的單詞,用來被反饋至鑒別器來確定兩個詞嵌入是否來自同一個詞向量分布中。圖2(c)中映射W通過Procrustes算法最小化所選擇的標點之間的度量系數來進一步修正W,使得兩個詞向量空間進一步對齊。圖2(d)中使用W和空間距離度量擴展錨點數量,進一步提高W的準確性。
通過預訓練跨語言詞嵌入模型,本文將蒙漢兩種語言映射到了同一詞向量分布空間,且學習得到了一個旋轉矩陣W。而學習旋轉矩陣對齊蒙漢詞向量空間的目的就是為了能得到一個蒙漢雙語字典,本節主要介紹構造蒙漢雙語字典的方法。首先使用最近鄰搜索來為一個詞找到與之對應的最近鄰詞,然后使用對抗訓練來確保找到的這個對應詞是和源詞來自不同的詞向量分布空間,而不是和它來自同一分布空間的近義詞。
1.2.1最近鄰搜索
最近鄰算法即K最近鄰(k-Nearest Neighbor,kNN)算法,是數據挖掘分類算法中最常用的算法之一[16]。本文為緩解在高維空間中尋找最近鄰時出現的hubness問題,使用跨域相似性局部縮放(cross-domain similarity local scaling,CSLS)的方法,以期提升互為最近鄰的雙語詞對。計算過程如下:
首先,對于蒙漢任意語言中的任意一個詞,都可以在與之對應的另外一個語言中通過余弦相似度和旋轉矩陣W知道K近鄰,假設其為NT(s)和NS(t),則對于蒙漢兩種語言可以定義距離rT和rS,計算公式如下:
(3)
rS的計算過程與rT類似,這個距離就是評估每個詞的hubness的標準,r值越大表示一個詞和對應語言中的很多詞都比較接近。
然后可定義評價來自蒙漢兩種語言中兩個單詞的相似度的CSLS距離如下:
CSLS(s,t)=2cos(Wms,zt)-rT(s)-rS(t)
(4)
從式(4)中可以看出,在計算出Wms和zt的距離之后還對其加入了s和t的hubness懲罰,這樣就能緩解某一個詞是其對應語言的很多個詞的最近鄰。因為kNN算法的結果很大程度上取決于K的選擇。本文將K設置為5,這樣就面臨同樣分類不精確的問題,所以為了構造一個相對準確的蒙漢雙語字典,還使用了對抗訓練來區分一個詞來自哪一個向量分布空間。
1.2.2生成式對抗網絡
生成式對抗網絡(Generative Adversarial Networks,GANs)是Goodfellow等在2014年提出的一種無監督學習的訓練方法。GANs由生成器和判別器兩部分組成,兩者都在與對方的對抗中不斷提升。生成器和判別器均可以采用深度神經網絡實現。GANs的優化過程是一個極小極大博弈問題,優化目標是達到納什均衡[17],使生成器估測到數據樣本的分布。在對抗網絡經過對抗過程訓練之后,生成網絡可以生成接近真實的數據,即接近于訓練數據,但又不完全一樣。所以,生成網絡學習了訓練數據的一個近似分布。對于判別網絡,也能將其進行訓練以達到對數據較好區分的效果。圖3展示了對抗學習的過程。

圖3 對抗學習過程
設M={m1,m2,…,mn}和Z={z1,z2,…,zn}分別是蒙古語和漢語的詞嵌入表示,通過對抗學習來得到一個模型,用來區分隨機取出的詞是來自WM={Wm1,Wm2,…,Wmn}還是Z={z1,z2,…,zn},這個模型就被稱為判別器,而W的目的是使得WM和Z盡可能的相似,所以W就是生成器。因此可將判別器的損失函數和生成器的損失函數定義為:
(5)
(6)
式中:θD為鑒別器參數;W為旋轉矩陣;PθD(source=1|z)表示源語言詞嵌入和目標語言詞嵌入是相互映射的概率。在實際訓練中,本文使用隨機梯度下降法迭代訓練判別器和映射矩陣W,使得目標函數LD和LW分別最小化。
為了將單語數據應用到蒙漢機器翻譯中,本文將給定單語語料,使用對抗學習的算法預訓練跨語言詞嵌入來對齊蒙漢兩種語言的詞向量空間,引入去噪自編碼器結合多頭自注意力機制使用蒙漢單語和雙語語料庫預訓練跨蒙漢語言模型。最后,將迭代回譯應用于基于詞典逐字翻譯的初始化系統,并結合已經訓練好的語言模型優化蒙漢翻譯模型。
在無監督機器學習[18-19]中,最常使用的一類神經網絡就是自編碼器(Autoencoder),其作用就是通過訓練輸入無標簽的數據X=(x(1),x(2),…,x(n)),得到一個降維后的特征表達H=(h(1),h(2),…,h(n)),就像主成分分析一樣。簡而言之,自編碼器就是一種盡可能復現輸入信號的神經網絡,目的是通過這種復現過程來學習輸入數據的重要特征。自編碼器的實現過程如圖4所示。其中,將原數據輸入一個編碼器中,就會得到這個輸入的一個特征表示為了判斷這個特征表示的是否為輸入的數據。本文通過添加一個解碼器來實現解碼器輸出一個信息,如果輸出的這個信息和一開始的輸入信息是很像的,那么就證明這個特征表示是可用的。所以,通過調整編碼器和解碼器的參數,使得重構誤差最小,就能得到輸入信號的一個準確的特征表示。因為是無標簽數據,所以誤差的來源就是直接重構后的數據與原輸入數據相比得到的。

圖4 自編碼器實現過程
而降噪自編碼器(Denoising AutoEncoders,DAE)是自編碼器的一個變體,它是在自編碼器的基礎上,給輸入的訓練數據加入噪聲,此時自編碼器就會學習怎么去除噪聲而重構出原來沒有噪聲的數據,從而使得編碼器能學習到更加魯棒的表達,同時也增加了泛化能力。降噪自編碼器的工作原理如圖5所示。

圖5 降噪自編碼器工作原理
本節使用DAE的工作原理來訓練得到蒙漢語言模型。定義DAE的目標函數為:
(7)

Llm=Ez~T[-logPt→t(z|C(z))]+
Em~S[-logPs→s(m|C(m))]
(8)
綜上所述,使用降噪自編碼器可訓練一個不錯的語言模型,本文首先輸入無噪聲的嵌入表示記錄位置信息,再添加噪聲通過DAE學習噪聲特征和有用信息特征,最后得到表達流暢的語言模型。以中文訓練語言模型的過程為例,具體訓練過程示例如圖6所示。

圖6 降噪自編碼器訓練過程示例
實現兩種語言之間的互譯,最簡單的方法就是當這兩種語言間存在一個字典時,對照字典,把每一個源語言的字翻譯出來,即使基于這種方法翻譯得到的結果會很差,但是至少保證了翻譯的實現。通過對抗網絡學習到一個蒙漢對照的字典,通過搭建一個端到端的神經網絡模型,得到了一個最原始的蒙漢翻譯模型,但它翻譯出來的句子不是很流暢,因為只是單詞互譯的堆疊。本文通過DAE學習到了蒙漢語言模型,可以緩解翻譯出的句子不流暢的問題。所以將語言模型加入最初的蒙漢翻譯模型,完成了初始化蒙漢機器翻譯系統。
回譯,也稱為反向翻譯,這是緩解平行數據缺乏的最有效的方法之一,其本質上是為了構造偽平行數據,將無監督學習的方法轉化為有監督學習的方法。本文假設目標語言句子z是目標語言單語語料庫Z中的任意句子,即z∈Z,用u*(z)來表示從目標語言中推斷出的源語言句子,則u*(z)=arg maxPt→s(u|z)。同樣,可以用v*(m)表示從m∈S中推斷出目標語言句子,則v*(m)=arg maxPt→s(v|m)。如此一來,(u*(z),z)和(m,v*(m))就可以構成偽平行句子,那么遵循反向翻譯原則,可定義回譯算法的損失函數為:
Lback=Ez~T[-logPs→t(z|u*(z))]+
Em~S[-logPt→s(m|v*(m))]
(9)
迭代的目標是使得式(8)和式(9)之和最小。使用隨機梯度下降算法進行多次迭代,以此來更新每個模型的參數使得初始化的翻譯模型的性能逐漸增強。
本文主要以“基于深度學習的蒙漢統計機器翻譯的研究與實現”中構建的123萬句的蒙漢對齊語料庫中的蒙古語作為源語言端單語數據,以全球AI挑戰賽(AI Changer)中給出的1 000萬句英漢對齊語料庫中的漢語作為目標語言端單語數據為實驗數據,驗證基于單語語料庫訓練的蒙漢機器翻譯方法的可行性。訓練集為123萬句對蒙漢單語數據,驗證集為3千句對,測試集為1千句對。
首先融合不同粒度的方法對語料庫進行預處理,使用詞級粒度的方法對中文語料進行切分,再使用BPE[20]進行子詞級切分,BPE操作數設為60 000,初始化共享查找表。模型使用基于LSTM和Transformer的基本架構,編碼器和解碼器都設置為4層,共享其中3層的參數。給語料添加噪聲時,隨機丟棄單詞的概率為2%,每6個詞之間調換順序,學習率設為0.000 1,epoch_size設置為500 000,batch_size設置為32,使用Adam優化算法進行優化。
實驗經過20個epoch實驗自動停止,統計到翻譯模型在測試集上的BLEU值如表1所示,相應的BLEU值的變化趨勢如圖7所示。

表1 翻譯模型BLEU值

圖7 BLEU值的變化趨勢3.2對比實驗
表1中:Mn-zh表示蒙漢翻譯模型的結果;Zh-mn表示漢蒙翻譯模型的結果;Test表示在測試集上的結果;Valid表示在驗證集上的結果。
從圖7可以看出,基于單語語料庫訓練的蒙漢機器翻譯模型的BLEU值在20個epoch上呈現增長趨勢,在測試集上蒙漢翻譯性能在epoch17時表現最好,此時BLEU值為9.18,在驗證集上蒙漢翻譯性能在epoch17時表現最好,此時BLEU值為14.28。
對比實驗直接使用了哈佛大學開源的神經機器翻譯系統OpenNMT。這是一個使用平行語料庫在基于LSTM神經網絡和注意力機制上實現機器翻譯的系統,主要包括四個步驟:語料預處理,翻譯模型訓練,使用訓練好的翻譯模型翻譯測試集以及對翻譯結果的BLEU值評測。
對比實驗同樣使用了10萬句對的蒙漢平行數據作為訓練集,3千句對作為驗證集,3千句對作為測試集。實驗環境為Ubuntu16.04 Linux系統,利用pytorch 0.4.3進行神經網絡的搭建,在OpenNMT中參數做如下設定:蒙古語詞典大小為50 002,漢語詞典大小為50 004。編碼器和解碼器中LSTM神經網絡的網絡層數設置為4層,詞向量維度設置為500,解碼器中全局注意力機制中輸入特征設置為500,輸出特征設置為500,歸一化函數選擇Tanh()。Dropout設置為0.3,迭代輪數epoch設置為20輪,學習率設置0.1,學習率衰減速率設置為1。
為了和本文的主體實驗做對比,統計出了基于LSTM神經網絡的蒙漢機器翻譯模型的20個epoch上的BLEU值以及其變化趨勢,如表2和圖8所示。

表2 基于LSTM神經網絡的蒙漢機器翻譯模型的BLEU值

圖8 LSTM機器翻譯模型BLEU值變化趨勢
實驗將基于單語語料庫訓練的蒙漢機器翻譯模型和基于LSTM神經網絡的蒙漢機器翻譯模型進行了對比。采用BLEU值作為翻譯模型的評測指標,通過一輪輪迭代訓練,模型學習到的參數越來越好,包含越來越豐富的語義信息,從而提高了翻譯模型的表達能力,最終導致測試集上譯文評測值的不斷提升。對比實驗的結果如表3和圖9所示。

表3 對比兩種蒙漢機器翻譯模型的BLEU值

圖9 兩種翻譯模型在測試集上的BLEU值對比
表3中,單語表示基于單語數據的蒙漢機器翻譯模型在測試集上的BLEU值;雙語表示使用平行數據基于LSTM神經網絡的蒙漢機器翻譯模型在測試集上的BLEU值。
實驗表明,使用123萬句對單語數據訓練20輪的蒙漢機器翻譯系統的性能和使用10萬句對蒙漢平行數據在開源系統OpenNMT上訓練8輪的結果相當。
由于單語語料庫比雙語語料庫容易得到,所以基于單語語料庫訓練的方法在提升蒙漢機器翻譯系統性能方面有一定的優勢。但因為基于單語數據訓練的方法依賴于一個好的語言模型,所以應用單語數據訓練的方法不適用單語數據較少的情況,需要大量的單語數據才能保證語言模型性能良好。
本文對如何構建基于單語語料庫訓練的蒙漢機器翻譯系統做了介紹,提出基于單語語料庫訓練實現蒙漢機器翻譯的三大步驟:語言模型,初始化翻譯系統和迭代回譯進行優化。對預訓練跨語言詞嵌入表示的方法、使用去噪自編碼器訓練語言模型以及回譯算法做了詳細的描述。最后,采用機器翻譯常用的評測標準BLEU值,對基于單語語料庫訓練的蒙漢機器翻譯模型與基于平行語料庫在LSTM神經網絡上訓練的蒙漢機器翻譯模型進行了對比實驗。實驗表明,基于單語語料庫訓練的蒙漢機器翻譯模型的BLEU值增長緩慢,而使用平行語料庫基于LSTM神經網絡的蒙漢機器翻譯模型的BLEU值增長較快。從模型的測試效果來看,兩種方法使用的語料數量相差10倍之多。前者的整體翻譯效果依賴于兩個方向上翻譯模型的性能和兩種語言的回譯能力,但是漢語的回譯效果和蒙古語的回譯效果相差較大,這應該是蒙漢兩種語言之間差異較大而同一種語言模型訓練方法不能完全匹配導致的。所以緩解此問題的方法之一就是預訓練一個跨蒙漢的語言模型,使得一個語言模型可以匹配蒙漢兩種語言。下一步擬研究如何預訓練一個跨蒙漢的語言模型。