鄺少輝,熊德意
(蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006)
隨著互聯(lián)網(wǎng)和社交網(wǎng)絡的發(fā)展,機器翻譯在社會發(fā)展和信息傳播中的作用越來越突出。為了滿足人們對機器翻譯的強烈需求,國內(nèi)外許多研究機構和公司,對機器翻譯進行了深入的研究,如百度翻譯、有道翻譯等。機器翻譯方法包括基于規(guī)則的機器翻譯、基于實例的機器翻譯、統(tǒng)計機器翻譯,以及當前的神經(jīng)網(wǎng)絡機器翻譯等。
隨著計算能力的提高,可用訓練數(shù)據(jù)量的增加,基于深度學習的神經(jīng)網(wǎng)絡已在多個領域取得較好的結果,如圖像識別、語音識別等。神經(jīng)機器翻譯(neural machine translation)[1-3]作為目前一種主流的機器翻譯建模方法,也是利用神經(jīng)網(wǎng)絡來構建翻譯模型,在多個語言對上[4]的翻譯效果已經(jīng)趕超傳統(tǒng)統(tǒng)計機器翻譯(statistical machine translation,SMT)模型。神經(jīng)機器翻譯系統(tǒng)采用“端到端”(end-to-end)的思想,分別使用兩個不同的神經(jīng)網(wǎng)絡作為編碼器(encoder)和解碼器(decoder)來搭建翻譯模型。和統(tǒng)計機器翻譯相比,神經(jīng)機器翻譯實現(xiàn)了源語言到目標語言的直接翻譯,并在性能上取得進一步的提升。
在本文中,我們會詳細介紹神經(jīng)機器翻譯系統(tǒng)的原理構成,并實現(xiàn)一套基本的神經(jīng)機器翻譯系統(tǒng)作為實驗的基準系統(tǒng)。同時,由于神經(jīng)機器翻譯訓練過程中,會設置很多的超參,這些參數(shù)會影響系統(tǒng)的整體性能和訓練時間。我們在文中對這些參數(shù)的設置進行實驗對比,分析這些參數(shù)的影響。對比試驗主要集中在批、打亂、dropout這三個參數(shù)設置上。
目前很多的相關工作在訓練神經(jīng)機器翻譯系統(tǒng)時,均會提到對數(shù)據(jù)進行隨機打亂。因此,我們針對打亂這一因素進行實驗驗證,來深入分析打亂是如何影響神經(jīng)機器翻譯系統(tǒng)的翻譯質(zhì)量的,并給出具體的統(tǒng)計實驗結果。
批的大小是神經(jīng)機器翻譯系統(tǒng)訓練過程中必不可少的一個參數(shù),在訓練時對神經(jīng)機器翻譯系統(tǒng)的收斂速度影響較大。本文通過設計一系列對比實驗來驗證批的大小對神經(jīng)機器翻譯系統(tǒng)訓練時間的影響。
參數(shù)dropout[5]可以有效防止系統(tǒng)訓練過程中的過擬合現(xiàn)象,并在一定程度上影響模型的性能。在本文中,我們進一步地利用對比實驗來驗證不同dropout設置時,系統(tǒng)性能的變化。
通過一系列的對比實驗驗證,我們得出以下結果: 通過打亂訓練數(shù)據(jù)??梢砸欢ǔ潭壬咸岣呱窠?jīng)機器翻譯的性能;改變批的大小對神經(jīng)機器翻譯系統(tǒng)的訓練時間有較大影響,批設置越大,神經(jīng)機器翻譯系統(tǒng)訓練時間越短,反之,訓練時間越長。參數(shù)dropout可以顯著提升神經(jīng)機器翻譯系統(tǒng)的性能,不同的值對神經(jīng)機器翻譯系統(tǒng)有著不同程度的影響。
在神經(jīng)機器翻譯中,一般采用編碼器-解碼器(encoder-decoder)框架[1,6]來實現(xiàn)翻譯的過程,具體流程如圖1所示。
圖1 神經(jīng)機器翻譯框架圖
對訓練語料中的每一個詞,我們都為其初始化一個詞向量[7-8],語料中所有詞的詞向量構成了詞向量詞典。詞向量,一般是一個多維的向量,向量中每一維都是一個實數(shù)。例如,對于單詞“咱們”,它的詞向量可能是{0.12,-0.23,…,0.99}。
編碼器由循環(huán)神經(jīng)網(wǎng)絡(recurent neural network)[3,9-10]構成。在編碼階段,編碼器讀入一個句子,并將句子編碼成一系列的向量。具體過程如下,首先將一個句子表示為詞向量的序列,即x={x1,x2,…,xTx},其中x為輸入的句子,xi為句子中第i個詞的詞向量,即一個m維的向量。根據(jù)式(1)我們可以獲得一個由隱藏向量組成的向量序列{h1,h2,…,hTx}。 由這個隱藏向量序列,我們可以獲得上下文向量c=qh1,h2,…,hTx。其中hj∈n,是時序t時刻的編碼器隱藏狀態(tài),f和q是非線性的激活函數(shù),其中f一般采用GRU[11]或者LSTM[12],q一般采用注意力[13-14]網(wǎng)絡。
神經(jīng)機器翻譯系統(tǒng)中,編碼器一般采用雙向的循環(huán)神經(jīng)網(wǎng)絡(BI-RNN)網(wǎng)絡來實現(xiàn),分別為正向循環(huán)神經(jīng)網(wǎng)絡(forward recurrent neural network)和反向循環(huán)神經(jīng)網(wǎng)絡(backward recurrent neural network)。單向循環(huán)神經(jīng)網(wǎng)絡僅能夠捕捉一個順序方向的序列信息,而雙向循環(huán)神經(jīng)網(wǎng)絡可以從兩個不同的方向來捕捉序列信息,使生成的語義向量含有的語義信息更為豐富。
基于注意力機制(attention-based)的神經(jīng)機器翻譯系統(tǒng)中,上下文向量c一般利用注意力網(wǎng)絡來獲得,注意力網(wǎng)絡可以通過式(2)~式(4)表示,其中a是一個一層的前向網(wǎng)絡,αtj是編碼器的每一個隱藏狀態(tài)hj的權重。注意力機制如圖2所示。
圖2 注意力網(wǎng)絡結構
神經(jīng)機器翻譯系統(tǒng)中,解碼器通常也由循環(huán)神經(jīng)網(wǎng)絡構成。在解碼器階段,給定上下文向量c,以及所有已經(jīng)預測生成的詞y1,y2,…,yt-1,解碼器可以根據(jù)式(5)預測生成下一個單詞yt的概率。
其中,g是非線性激活函數(shù),一般采用softmax函數(shù)。st為循環(huán)神經(jīng)網(wǎng)絡中的隱藏狀態(tài),可以通過式(6)獲得。
編碼器和解碼器都采用循環(huán)神經(jīng)網(wǎng)絡網(wǎng)絡,主要是因為循環(huán)神經(jīng)網(wǎng)絡網(wǎng)絡的特點在于隱藏狀態(tài)由當前的輸入和上一個隱藏狀態(tài)共同決定。如在神經(jīng)機器翻譯過程中,編碼器階段隱藏狀態(tài)由源端語句當前詞的詞向量和上一個隱藏狀態(tài)共同決定。解碼器階段的隱藏狀態(tài)由前一步驟中計算得到的目標端語句的詞向量和上一個隱藏狀態(tài)共同決定。圖1中h為隱藏狀態(tài),x為源語端詞向量序列,y為目標語端詞向量序列。
模型的訓練一般采用最大化對數(shù)似然作為損失函數(shù),利用隨機梯度下降方法來進行迭代訓練。其目標函數(shù),如式(7)所示。
其中,θ是模型的參數(shù),(yn,xn)表示雙語訓練語料句對。
受到開源機器翻譯系統(tǒng)DL4MT[15]的啟發(fā),我們在工作中實現(xiàn)了一個帶有反饋機制(feedback attention)[16]的神經(jīng)機器翻譯系統(tǒng)。在反饋機制中,etj可以通過式(8) 計算得到。
我們針對中英翻譯任務開展實驗,使用中英雙語平行語料作為模型的訓練語料,雙語平行語料包含有125萬句對,其中中文單詞8 090萬,英文單詞 8 640萬。語料主要來自于賓夕法尼亞大學的語言數(shù)據(jù)聯(lián)盟發(fā)布的LDC雙語語料的部分子集: LDC2002E18,LDC2003E07,LDC2003E14,LDC2004T07,LDC2004T08,LDC2005T06。實驗中采用NIST06作為開發(fā)集,NIST02,NIST03,NIST04,NIST05,NIST08作為測試集,并且選擇BLEU-4[17]作為翻譯模型的質(zhì)量評估標準。
系統(tǒng)實現(xiàn)中,我們采用TensorFlow[18], 一個開源的深度學習框架,來實現(xiàn)1.2中介紹的帶有反饋注意力機制的神經(jīng)機器翻譯模型,稱之為TF-NMT。在TF-NMT模型中,編碼器采用雙向循環(huán)神經(jīng)網(wǎng)絡,隱層單元(hidden unit)個數(shù)設置為1 000。同樣,解碼器的隱層單元(hidden unit)個數(shù)也設置為1 000。詞向量(Wordembedding)的維度設置為620。
訓練TF-NMT模型的語料的中文和英文句子長度均限制在50個單詞以內(nèi),長度大于50個單詞的句子將被過濾掉。中文端和英文端詞典大小均設定為16 000,經(jīng)統(tǒng)計,源端詞典在中文端訓練語料中的覆蓋率達到95.8%,目標端詞典在英文端訓練語料中的覆蓋率達到98.2%,用單詞“UNK”取代其他不在詞表中的低頻詞。實驗中的其他參數(shù)設定,均與開源神經(jīng)機器翻譯系統(tǒng)GroundHog[1]保持一致。我們使用隨機梯度下降算法和Adadelta[19]算法來訓練我們的模型。Adadelta算法的參數(shù)ρ和分別設定為0.95和10-6。
我們的實驗主要集中在以下三方面:
(1) 批大小對神經(jīng)機器翻譯系統(tǒng)訓練過程的影響。
(2) 數(shù)據(jù)打亂對神經(jīng)機器翻譯系統(tǒng)質(zhì)量的影響。
(3) Dropout技術對神經(jīng)機器翻譯系統(tǒng)質(zhì)量的影響。
為了驗證批大小對神經(jīng)機器翻譯系統(tǒng)訓練過程的影響,我們將批設定為不同的大小,分別為40,80,120,180。批的值設定過大時,會造成GPU顯存不足,從而無法進行訓練。為了使TF-NMT在不同的批設定下都能夠正常工作,我們利用TensorFlow框架,實現(xiàn)了基于數(shù)據(jù)并行的多GPU(multi-GPU)的TF-NMT系統(tǒng),我們統(tǒng)稱為TF-NMT系統(tǒng)。
為了驗證數(shù)據(jù)打亂對神經(jīng)機器翻譯系統(tǒng)翻譯質(zhì)量的影響,我們設定了兩種不同的數(shù)據(jù)迭代方式:
(1) 首先對訓練語料進行一次打亂。訓練語料讀取后,不再進行打亂,按照固有順序進行循環(huán)迭代。
(2) 整個訓練語料每迭代完成一次,進行一次打亂,然后再次迭代。
另外,我們訓練GroundHog系統(tǒng)作為對比系統(tǒng),用以驗證TF-NMT系統(tǒng)的翻譯效果。GroundHog系統(tǒng)中編碼器和解碼器的隱層單元數(shù)量配置和TF-NMT系統(tǒng)相同,詞向量的維度也和TF-NMT系統(tǒng)保持一致, 其他參數(shù)采用其默認配置(未
采用dropout技術)。
在TF-NMT中的基準系統(tǒng)訓練,批和數(shù)據(jù)打亂的對比實驗中,我們將dropout概率統(tǒng)一設置為0.5。
為了驗證dropout對神經(jīng)機器翻譯系統(tǒng)的影響,我們將dropout大小分別設置為1,0.2,0.5,0.8進行了四組實驗。其中dropout設置為1時,即代表不使用dropout。
我們依據(jù)現(xiàn)有已發(fā)表論文[1]中常用的設定,設置批為80,來驗證我們實現(xiàn)的TF-NMT系統(tǒng)。表1給出了統(tǒng)計結果。當詞典大小設定為16 000,從表1中可以看出,當數(shù)據(jù)不進行打亂,我們實現(xiàn)的帶有反饋注意力的TF-NMT系統(tǒng),在BLEU值上面超過GroundHog系統(tǒng)平均3.5個點。當數(shù)據(jù)進行打亂時,BLEU值超過GroundHog系統(tǒng)平均3.78個點。
表1 GroundHog和TF-NMT實驗結果
注: 我們采用BLEU作為評測標準。Voc表示源端詞典和目標端詞典大小,Mean代表在6個測試集上面的平均BLEU值。
為了進一步驗證系統(tǒng)效果,我們在詞典大小設置為30 000時也進行了實驗。從表1可以看出,詞典設置為30 000時,TF-NMT系統(tǒng)在NIST各個測試集上,平均BLEU值為36.53。實驗結果證明,我們實現(xiàn)的基準系統(tǒng)TF-NMT可以達到并超過目前已公布和開源的神經(jīng)機器翻譯系統(tǒng)的效果。
為了驗證批這一變量對神經(jīng)機器翻譯系統(tǒng)的影響,我們將批設置為不同的大小,來訓練多個TF-NMT系統(tǒng),并統(tǒng)計各個TF-NMT系統(tǒng)的BLEU值變化。為了驗證的準確性,我們分別在訓練數(shù)據(jù)進行打亂和不進行打亂的情況下,各進行了一系列實驗。表2和表3分別給出了詳細的實驗結果。
表2 當數(shù)據(jù)進行打亂時,批設置為40,80,120,180時,TF-NMT在各個測試集上的BLEU值
注: Mean代表在6個測試集上的平均BLEU值。Iters表示TF-NMT在開發(fā)集NIST06上達到最大BLEU值時候,訓練的批數(shù)量。
表3 當數(shù)據(jù)不進行打亂時,批設置為40,80,120,180時,TF-NMT在各個測試集上的BLEU值
注: Mean代表在6個測試集上的平均BLEU值。Iters表示TF-NMT在開發(fā)集NIST06上達到最大BLEU值時候,訓練的批數(shù)量。
由表2和表3的實驗結果可知,在保持打亂條件一致的前提下,批變化的大小對BLEU值的影響并不明顯。從表2中可以發(fā)現(xiàn),在訓練數(shù)據(jù)進行打亂的條件下,平均BLEU值波動范圍在0.45個點之內(nèi)。從表3也可以發(fā)現(xiàn),平均BLEU值的波動范圍在0.48個點之內(nèi)。
另外,從表2和表3中我們可以發(fā)現(xiàn),在不同的批條件下,模型收斂速度不同。比如,在表2中,隨著批的大小從40增加到180,模型在開發(fā)集上達到最好效果需要迭代的批數(shù)量(iters)依次降低,模型訓練時間依次減少。
為了進一步直觀地比較不同批條件下,模型的收斂速度。在打亂一致的前提下,我們每訓練完成500個批,就進行一次BLEU驗證。在數(shù)據(jù)進行打亂這一條件下,圖3給出了模型在開發(fā)集NIST06上隨著訓練的進行,BLEU值變化的情況。從圖3中可以看出,批 -180的曲線最先收斂,BLEU值增長迅速。批 -120和批 -180相比,批 -120收斂較慢,但比批 -80和批 -40較快。批 -40收斂最慢,在訓練了150 000個批之后,仍未達到BLEU最好的收斂點。結合表2可以看出,批 -80和批 -40要達到最好BLEU值收斂點,要分別訓練181 000和250 000個批。而批 -180只需要訓練90 000個批左右,就可以達到最好收斂點,圖3中批 -180曲線很好的體現(xiàn)了這一點。
圖3 不同批大小設定下BLEU值隨著訓練批個數(shù)增加的變化
為了驗證數(shù)據(jù)打亂對神經(jīng)機器翻譯系統(tǒng)的影響,我們對不同打亂條件下,模型在六個NIST測試集上的平均結果進行統(tǒng)計,結果如表4所示。
表4不同批大小設置下TF-NMT在六個NIST測試集上面的平均值。
ShuffleBatch-40Batch-80Batch-120Batch-180MeanYes34.9334.6734.8935.1034.90No34.4634.3934.1133.9834.23
注: Mean表示在打亂條件相同的前提下,模型的平均值。
從表4中我們可以看出,無論批大小設置為多少,訓練數(shù)據(jù)進行打亂之后訓練的神經(jīng)機器翻譯系統(tǒng)BLEU值上,總是比不進行打亂的情況要好。打亂之后,平均BLEU值提高0.67個點。在訓練神經(jīng)機器翻譯系統(tǒng)過程中,隨機梯度下降方法的一個特點就是每次只需要一個批的數(shù)據(jù)就可以進行梯度更新,十分簡單有效。但是這種方法也有一定的缺陷,舉例來說: 假設訓練語料由三種不同領域(例如新聞、教育、軍事)的數(shù)據(jù)按照順序組成,神經(jīng)機器翻譯模型開始進行訓練之后,會先利用新聞語料進行模型參數(shù)更新,接著利用教育領域語料更新參數(shù),當神經(jīng)機器翻譯模型訓練將要結束時,使用軍事領域的語料來更新參數(shù)。而神經(jīng)機器翻譯模型在一定程度上就是利用最近輸入的語料來進行模型優(yōu)化,這樣會促使神經(jīng)機器翻譯模型朝著更為有利于軍事領域的參數(shù)空間進行優(yōu)化,導致神經(jīng)機器翻譯模型在語料中其他領域的適應性降低。這種情況,可以看作是模型參數(shù)的一種偏愛(bias)[20]。為了解決利用隨機梯度下降方法訓練神經(jīng)機器翻譯模型潛在的這一問題,訓練語料迭代一次,就對訓練語料進行打亂,再進行模型訓練,這是一種值得推薦而且有效的方式。
從表4結果可以發(fā)現(xiàn),當不進行數(shù)據(jù)打亂時,批越大,數(shù)據(jù)之間的規(guī)律更容易影響神經(jīng)機器翻譯系統(tǒng)的性能。而數(shù)據(jù)進行打亂時,系統(tǒng)性能趨于穩(wěn)定。這也從另一個方面說明了數(shù)據(jù)打亂對NMT系統(tǒng)的影響。
我們進一步統(tǒng)計了不同批條件和不同GPU(型號: GPU GeForce GTX 1080)個數(shù)配置下,神經(jīng)機器翻譯系統(tǒng)的訓練時間。表5給出了詳細的數(shù)據(jù)。從表5可以看出,在利用單GPU訓練時,批 -40和批 -80訓練時間在40至45個小時左右。利用數(shù)據(jù)并行,GPU個數(shù)配置為3時,批 -120和批 -180只需要20個小時左右就可以達到最佳性能,訓練時間縮短兩倍。
表5不同批大小設置下TF-NMT達到最佳性能所用的訓練時間
ParamsBatch-40Batch-80Batch-120Batch-180GPU1133Iters25000018100012600093500Batch_Time/s0.620.790.640.71Parallel_Time/h43.0639.7222.418.44
注: GPU代表訓練時使用的GPU數(shù)量;Iters代表達到最佳性能時訓練的批數(shù)量;Batch_Time代表每訓練一個批所用時間,單位為秒;Parallel_Time代表在當前GPU個數(shù)設置下系統(tǒng)訓練的時間,單位為小時。
同時,系統(tǒng)達到最佳性能的訓練時間,隨著批的增大而逐漸縮小,也再次證明了批對系統(tǒng)收斂速度的影響。
為了驗證dropout對神經(jīng)機器翻譯系統(tǒng)性能的影響,我們分別對不同dropout設置下,模型在六個NIST測試集上的結果進行統(tǒng)計,模型結果如表6所示。
表6 不同dropout設置下,TF-NMT模型的效果。
注: 我們采用BLEU作為評測標準。Mean代表在六個測試集上面的平均BLEU值。
從表6中可以看出,在dropout設置為1時(即dropout不被使用),模型在六個NIST測試集上的平均BLEU值為33.02。dropout設置為0.5時(baseline系統(tǒng)),模型的平均BLEU值為34.67。我們可以得出結論: 不使用dropout,模型的平均BLEU值降低了1.64。
在本文中,dropout設置為0.5時,我們在所有的批和打亂實驗上面,都取得了較好的模型性能,這可以進一步地證明dropout對神經(jīng)機器翻譯系統(tǒng)性能的提升。另外,當dropout分別設置為0.8,0.5,0.2時,BLEU值依次提升。當dropout設置為0.8和0.2時,BLEU值相差1.31個點。根據(jù)這四組實驗可以看出: dropout值設置越小,神經(jīng)機器翻譯系統(tǒng)傾向于表現(xiàn)出更好的性能。
本文詳細論述了神經(jīng)機器翻譯的基本原理,并基于TensorFlow深度學習框架,實現(xiàn)了帶有反饋注意力網(wǎng)絡的神經(jīng)機器翻譯系統(tǒng)TF-NMT。為了測試不同批大小對神經(jīng)機器翻譯系統(tǒng)的影響,進一步實現(xiàn)了基于數(shù)據(jù)并行的multi-GPU 神經(jīng)機器翻譯模型。通過對比開源神經(jīng)機器翻譯系統(tǒng)GroundHog,發(fā)現(xiàn)我們的TF-NMT系統(tǒng)效果能夠到達目前神經(jīng)機器翻譯研究領域已公布的基于注意力網(wǎng)絡的神經(jīng)機器翻譯系統(tǒng)的效果。
在TF-NMT模型上面,我們驗證了batch、dropout和打亂這三個因素對神經(jīng)機器翻譯系統(tǒng)的影響。實驗證明,批大小會影響模型訓練時的收斂速度。在一定程度上,批的值越大,模型收斂速度越快。從實驗結果中我們也發(fā)現(xiàn),對訓練數(shù)據(jù)進行打亂,在一定程度上能夠提高神經(jīng)機器翻譯系統(tǒng)的翻譯性能。另外,在訓練神經(jīng)機器翻譯系統(tǒng)過程中,dropout可以有效地提升神經(jīng)機器翻譯系統(tǒng)的性能。
本次研究主要集中在神經(jīng)機器翻譯模型保持不變的情況下,超參批、打亂和dropout對神經(jīng)機器翻譯系統(tǒng)的影響。未來我們將會進行更多實驗,來驗證神經(jīng)機器翻譯系統(tǒng)訓練中其他參數(shù)的影響。