孫曉騫 蘇依拉 趙亞平 王宇飛 仁慶道爾吉
(內蒙古工業(yè)大學信息工程學院 內蒙古 呼和浩特 010080)
自從2013年Cho等[1]提出基于編碼器-解碼器架構的神經機器翻譯開始,該框架在機器翻譯領域獲得了迅速發(fā)展,相對于統(tǒng)計機器翻譯而言在翻譯質量上獲得了顯著提升。其中編碼器和解碼器均為循環(huán)神經網絡(Recurrent neural network,RNN),編碼器RNN將輸入的源語言句子編碼為維數固定的向量表示,解碼器RNN將該表示解碼為目標語言句子,通過聯(lián)合訓練編碼器和解碼器最大化了輸入句子的條件概率[2-3]。在此基礎上,Bahdanau等[4]提出了在端到端機器翻譯模型基礎上添加注意力機制的方法,該方法有效地提高了神經機器翻譯的質量。然而研究人員并沒有因此停止對機器翻譯研究的步伐,2015年Luong等[5]研究了兩種簡單有效的注意力機制,一種始終關注所有源詞的方法,另一種只關注源詞子集的局部方法。分別證明了全局注意力和局部注意力在英德互譯中的有效性。為了緩解機器翻譯過程中的梯度消失以及長距離依賴等問題,研究人員提出了一種基于句子級別的長短時記憶模型(Long Short Time Memory,LSTM)的機器翻譯系統(tǒng)[6]。
盡管傳統(tǒng)的端到端神經機器翻譯框架已經取得了顯著的效果,但依然存在著一個主要的缺點,該框架傾向于反復翻譯某些源詞,而錯誤地忽略掉部分詞。這就導致了嚴重的過譯和漏譯現(xiàn)象。這是由于傳統(tǒng)的編碼器-解碼器架構沒有一種機制來確保源端的信息完全轉化到目標端。
針對上述問題,2016年Tu等[7]提出了神經機器翻譯的覆蓋模型,有效地緩解了帶有注意力機制的神經機器翻譯中的過譯和漏譯現(xiàn)象。該方法的實現(xiàn)原理是:在基于注意力機制的神經機器翻譯模型上,讓覆蓋向量和注意力向量做一些結合,即在解碼器解碼的過程中,對那些已經被翻譯過的源語言的單詞降低“注意力”,也就是降低其被再次翻譯的可能性。直接的解決辦法就是:把覆蓋向量和注意力結合在一起,這樣用覆蓋向量去調節(jié)注意力,從而起到“糾正”注意力的作用。然而該方法只能在帶有注意力機制的神經機器翻譯模型上實現(xiàn),并不適用于所有的基于端到端的神經機器翻譯模型。
因此,Tu等[8]提出了一種在傳統(tǒng)的編碼器-解碼器框架的基礎上添加重構器的方法,目的是通過為傳統(tǒng)的編碼器-解碼器框架添加一種機制來確保源端的信息完全轉換到目標端,該方法適用于所有的編碼器-解碼器框架。實驗結果表明,譯文的充分性確實和重構器具有緊密的聯(lián)系。
本文在Tu等研究的基礎上,提出基于編碼器-解碼器重構框架的蒙漢神經機器翻譯方法,同時使用詞向量的分布式表示將實驗使用所有數據集轉化為向量的形式,將傳統(tǒng)的帶注意力機制的編碼器-解碼器框架作為基線系統(tǒng)。實驗結果顯示,該方法能夠有效地緩解蒙漢神經機器翻譯中的過譯和漏譯現(xiàn)象。
為何機器可以理解人類的語言并完成對于人類來說非常耗時的任務?如:機器翻譯、人機對話、文本分類等任務。是因為在自然語言處理中,首先對自然語言的符號進行了數學化,該過程被稱為詞的向量化表示[9-10]。
在自然語言處理任務中,詞的向量化表示方法主要有兩種:詞的獨熱表示和詞的分布式表示[11-12]。
(1) 詞的獨熱表示 詞的獨熱表示是指:將每個詞表示為一個很長的向量,該向量的維度是詞典的大小,其中絕大多數元素為0,只有一個維度的值為1,這個維度就代表了當前的詞,因此,該方法也被稱為1-of-K。到目前為止,在自然語言處理中,因其簡單易用性成為最常用的詞表示方法。
但這種表示方法也具有一定的缺陷,隨著詞典規(guī)模的增大,會引起維數災難問題以及任意兩個詞之間都是孤立的,根本無法表示出語義層面上詞與詞之間的相關信息等問題[13]。
(2) 詞的分布式表示 如何將語義信息融入到詞典中呢?1954年Harris[14]提出的分布式假設為這一設想提供了理論基礎。詞的分布式表示方法有:基于矩陣的分布式表示、基于聚類的分布式表示以及基于神經網絡的分布式表示,基于神經網絡的一般稱為詞嵌入。
詞嵌入是隨著深度學習和神經網路的興起而開始流行的詞表示方法[15]。該方法由Hinton提出,主要思想是:在詞向量中抓取一個詞的上下文信息,用來刻畫該詞與其上下文之間的聯(lián)系,緩解了獨熱表示中無法表示語義層面詞與詞之間關聯(lián)的缺陷,同時將向量中每個元素由整型改為浮點型,變?yōu)檎麄€實數范圍的表示,將原來稀疏的巨大維度壓縮嵌入到一個更小維度的空間,緩解了獨熱表示中的維數災難問題。
因此,本文采用詞向量的分布式表示方法。2013年谷歌公開了一款用于訓練詞向量的軟件工具Word2vec[16]。Word2vec采用skip-grams[17]或連續(xù)詞袋模型(CBOW)[18]獲取與上下文相關聯(lián)的詞向量,skip-grams的結構如圖1所示。
圖1 skip-gram模型結構
由圖1可知,skip-grams模型與去除隱含層的前饋神經網絡模型正好相反,其原理是根據上下文分類當前詞。采用當前詞wi訓練上下文詞向量來估計周圍詞的詞向量用以表示上下文信息。該方法的優(yōu)點是可以從大規(guī)模數據集中得到較高質量的詞向量,并緩解維數災難問題。
自編碼器-解碼器架構被提出以來,受到了研究人員的廣泛關注,現(xiàn)已成為神經機器翻譯的基本模型[19]。其結構如圖2所示。
圖2 編碼器-解碼器框架
(1)
c=q({h1,h2,…,hn})
(2)
式中:f和q均為非線性函數。
得到上下文向量c和前i-1個已經生成詞{y1,y2,…,yi-1}的條件下,通過訓練解碼器來預測下一個詞yi。生成詞yi的概率計算式表示為:
(3)
p(yi|{y1,y2,…,yi-1},c)=g(yi-1,Si,c)
(4)
式中:si表示解碼器i時刻的隱藏層狀態(tài),表示為:
si=f(si-1,yi-1,c)
(5)
相比于統(tǒng)計機器翻譯,基于編碼器-解碼器架構的神經機器翻譯方法顯著提高了機器翻譯譯文的質量。但是,單純的編碼器-解碼器框架在計算產生某個詞的概率時,使用了固定的上下文向量c,意味著無論生成目標語言中的哪一個詞,參與生成這個詞的上下文向量都是相同的,這顯然是個很粗糙的做法。注意力機制在神經機器翻譯中的應用有效地解決了這個問題,其結構如圖3所示。
圖3 基于注意力機制的編碼器-解碼器框架
在基于注意力機制的編碼器-解碼器架構中,生成第i個詞的概率,表示為:
p(yi|y1,y2,…,yi-1,x)=g(yi-1,si,ci)
(6)
值得注意的是,此時的上下文向量由原來固定的c變?yōu)榱薱i,即在生成目標語言中的每一個詞時,源語言中的詞對待生成的詞的影響是不同的,比如:“Tom chase Jerry”,在生成“湯姆”這個詞時,注意力會主要集中在“Tom”這個詞上,顯然這能夠提高將“Tom”譯成“湯姆”的概率,可以有效地提高譯文的質量。式(6)中ci計算式表示為:
(7)
(8)
eij=a(si-1,hj)
(9)
重構器通常由神經網絡實現(xiàn),如RNN、LSTM等,是由Bourlard等于1988年提出。重構是用來測量重構輸入與原始輸入是否相似,用在機器翻譯中,就是考慮機器譯文與人類譯文的差距,從而判別機器的譯文是否充分。編碼器-解碼器重構框架是Tu等2016年提出的一種緩解機器翻譯過程中過譯和漏譯現(xiàn)象的神經機器翻譯新框架。該模型是在基于注意力機制的編碼器-解碼器架構基礎上提出的,此重構器可以在任何端到端的神經機器翻譯框架上使用。編碼器-解碼器重構框架如圖4所示。
圖4 編碼器-解碼器重構框架
(1) 實現(xiàn)原理 首先,模型中的編碼器讀取輸入語言句子,在本文中就是蒙古語句子,然后解碼器生成相對應的漢語句子,最后重構器讀取解碼器的隱藏層序列并輸出重構的輸入語言句子,也就是蒙古語。
(2) 實現(xiàn)步驟 首先編碼器-解碼器架構讀取源語言蒙古語句子,產生目標語言漢語句子,該過程與基于注意力機制的編碼器-解碼器架構實現(xiàn)步驟完全相同。然后,重構器逐字重構出源語言句子。其中重構的概率計算式表示為:
(10)
(11)
(12)
通過觀察發(fā)現(xiàn),重構器的重構過程和解碼器的解碼過程非常相似,只不過解碼器是將源語言句子的向量表示解碼為目標語言句子,而重構器是將目標語言句子的向量表示重構為源語言句子。
在模型訓練時,使用所有的蒙漢平行數據集(用M表示),同時訓練編碼器-解碼器的參數P(y|x;θ)和重構器的參數R(x|s;γ),其目標函數表示為:
λlogR(xm|sm;γ)}
(13)
式中:目標函數由兩部分組成,似然函數用來衡量翻譯的流利度,而重構器用來測量翻譯的充分性。λ是平衡似然和重構的超參數,本文中選λ為1。使用BLEU值作為本文譯文質量的評測標準。
實驗數據為67 288句對蒙漢平行語料,由內蒙古大學開發(fā)。首先對蒙漢平行語料進行了預處理同時分別生成了大小為3萬的蒙漢對齊詞典,然后通過使用自動法進行語料的劃分,劃分結果如表1所示。
表1 數據集劃分表
本文的整體框架如圖5所示。
圖5 整體框架圖
圖5中,第一部分是對數據集的劃分及預處理,將67 288句對蒙漢對齊語料劃分為訓練集、驗證集及測試集,將蒙漢對齊語料中的漢語進行中文分詞。第二部分為模型的預訓練即對基于注意力機制的蒙漢神經機器翻譯模型的訓練。第三部分為基于編碼器-解碼器重構框架的訓練,使用了AdaGrad算法及Dropout技術,緩解了蒙漢翻譯模型的過擬合現(xiàn)象。第四部分通過測試BLEU對基于編碼器-解碼器重構框架的蒙漢神經機器翻譯進行評價。實驗中采用Skip-gram模型在訓練集上訓練與上下文相關的詞向量,詞向量的維度設定為512。
(1) 模型預訓練 基于編碼器-解碼器重構框架的蒙漢神經機器翻譯模型的訓練需要首先對基于注意力機制的編碼器-解碼器框架進行預訓練,本文使用了東京都立大學開源的神經機器翻譯模型nmt-chainer。將經過預處理的67 288句對蒙漢平行語料通過該框架進行預訓練,測試得前30輪所得模型的BLEU值如表2所示。
表2 預訓練模型的BLEU值
續(xù)表2
(2) 編碼器-解碼器重構模型訓練 編碼器-解碼器重構框架同樣使用了由東京都立大學開源的模型Reconstructor-NMT[20]。首先從預訓練模型中挑選出BLEU值最高的一輪作為重構模型訓練的初始模型。在訓練的過程中,使用AdaGrad算法,學習率為0.01,batch_size為32,dropout為0.2,epoch設為30,最終測得前30輪所得模型的BLEU值如表3所示。
表3 重構模型的BLEU值
將基于注意力機制的神經機器翻譯模型(Baseline-NMT)作為基線系統(tǒng),訓練了沒有經過預訓練的編碼器-解碼器重構框架(Reconstructor),另外,從基于注意力機制的神經機器翻譯模型中挑選出BLEU值最高的模型作為初始模型來訓練編碼器-解碼器重構模型(Reconstructor(Jointly))。分別對三個模型的BLEU值進行了跟蹤,得到3種模型的BLEU值對比結果如表4所示。
表4 對比實驗的BLEU值
由表4可得,如果在訓練編碼器-解碼器重構框架之前不做模型的預訓練,加了重構器之后的模型翻譯效果反而會比基線降低;而首先通過預訓練,然后再進行編碼器-解碼器重構框架的訓練,得到的模型翻譯效果會比基線增長0.89個BLEU。加了重構器的模型訓練時間明顯加長了。
對基線模型即基于注意力機制的翻譯模型和(Reconstructor(Jointly))模型的BLEU值進行跟蹤,得到這兩種模型的BLEU值隨著訓練周期的增加而變化的情況如圖6所示。
圖6 三種模型BLEU值對比圖
使用測試集對基線模型、Reconstructor及Reconstructor (Jointly)模型進行測試,隨機抽取部分測試結果的對比如表5所示。
表5 機器翻譯譯文示例對比
由表5可知,基線系統(tǒng)的譯文基本可以表達語義信息,但是存在過譯和漏譯的現(xiàn)象,Reconstructor (Jointly)模型有效地緩解了基線系統(tǒng)中的過譯和漏譯現(xiàn)象,而沒有經過預訓練的重構模型在句意表達上比基線模型更差了。
為了驗證加入重構器的優(yōu)勢,從測試集中隨機選擇了300個句子,表6顯示了從測試集里隨機選擇的300個句子譯文中過譯和漏譯現(xiàn)象的統(tǒng)計結果。
表6 過譯和漏譯的統(tǒng)計結果
基于注意力機制的蒙漢翻譯模型的譯文中出現(xiàn)過譯現(xiàn)象的句子有48個,出現(xiàn)漏譯現(xiàn)象的句子有23個,分別占總數的16.00%和7.67%,而本文所使用的框架得到的譯文中,出現(xiàn)過譯現(xiàn)象的句子有32個,出現(xiàn)漏譯現(xiàn)象的句子有15個,分別占總數的10.67%和5.00%。顯然,基于編碼器-解碼器重構框架的蒙漢機器翻譯模型有效地緩解了譯文中的過譯和漏譯現(xiàn)象。
基于端到端的神經機器翻譯模型已經相當成熟,但該模型存在過譯和漏譯問題,因此本文提出了基于編碼器-解碼器重構框架的蒙漢神經機器翻譯方法。為了緩解獨熱的維數災難問題,本文首先使用了Word2vec技術處理了蒙漢平行語料庫,然后預訓練了端到端的蒙漢神經機器翻譯模型,最終對基于編碼器-解碼器重構框架的蒙漢神經機器翻譯模型進行了訓練,有效地緩解了蒙漢機器翻譯過程中的過譯和漏譯現(xiàn)象。但由于蒙漢平行語料庫相對比較匱乏,因此,得到的翻譯模型質量不是特別理想,所以獲取廣覆蓋面高質量的蒙漢平行語料庫成了未來提高機器翻譯效果的研究重點之一。