朱相榮,王 磊*,楊雅婷,董 瑞,張 俊
(1.中國科學(xué)院新疆理化技術(shù)研究所,烏魯木齊 830011;2.中國科學(xué)院大學(xué),北京 100049;3.中國科學(xué)院新疆理化技術(shù)研究所新疆民族語音語言信息處理實驗室,烏魯木齊 830011)
(*通信作者電子郵箱wanglei@ms.xjb.ac.cn)
編碼器-解碼器架構(gòu)是神經(jīng)機器翻譯(Neural Machine Translation,NMT)的核心思想[1]?;谏窠?jīng)網(wǎng)絡(luò)的編碼器-解碼器架構(gòu)在機器翻譯中取得了很好的性能,并提出了不同的網(wǎng)絡(luò)結(jié)構(gòu),例 如:Sutskever 等[2]提出的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,RNN),Gehring 等[3]提出的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)以及Vaswani等[4]提出的基于注意力機制的Transformer。雖然它們都取得了不錯的翻譯性能,但由于解碼器均采用自回歸解碼影響了翻譯速度的提升。如圖1 所示,在自回歸解碼過程中目標(biāo)句子根據(jù)源句子表示和目標(biāo)翻譯歷史從左到右逐字翻譯生成,即第t標(biāo)記yt遵循條件分布p(yt|x,y<t),其中y<t表示yt之前生成的所有標(biāo)記。由于每次只執(zhí)行一個步驟,根據(jù)之前生成的序列生成下一個序列,使得解碼不容易并行化。尤其對于支持并行的現(xiàn)代硬件來說很不友好,產(chǎn)生的解碼延遲嚴(yán)重阻礙了NMT 系統(tǒng)的翻譯速度,限制了現(xiàn)實場景中的應(yīng)用。相反,非自回歸模型并行生成目標(biāo)標(biāo)記,沒有可用的目標(biāo)翻譯信息使得翻譯效果不是很好,但它能顯著減少解碼時間,使得圖形處理器(Graphics Processing Unit,GPU)的計算能力得到充分發(fā)揮。因此,有效地提升模型解碼速度變得尤為重要。
近年來為了減少自回歸解碼帶來的解碼延遲,研究人員們嘗試了各種方法。Schwenk[5]提出一個連續(xù)空間翻譯模型來估計給定源短語在目標(biāo)短語上的條件分布,同時丟棄目標(biāo)標(biāo)記之間的條件依賴性,然而僅限于不超過7 個單詞的短語對。Kaiser 等[6]研究了應(yīng)用GPU 的神經(jīng)機器翻譯,評估自回歸和非自回歸方法,發(fā)現(xiàn)非自回歸方法明顯落后于自回歸翻譯方法。Gu 等[7]提出一種非自回歸翻譯(Non-Autoregressive Translation,NAT)模型。如圖1 所示,該模型拋棄了自回歸機制,并行生成目標(biāo)端所有單詞,顯著地減少了解碼延遲,但與自回歸翻譯(Autoregressive Translation,AT)模型相比,它的準(zhǔn)確性嚴(yán)重下降。NAT模型與AT模型具有相同的編碼器-解碼器架構(gòu),只是NAT 模型的解碼器刪除了目標(biāo)側(cè)句子間的順序依賴性,丟棄了自然語言句子中的內(nèi)在依賴性,在很大程度上犧牲了翻譯質(zhì)量。由于先后生成單詞之間的依賴關(guān)系,對于一個長為n的目標(biāo)句子,自回歸模型需要O(n)次循環(huán)生成它。而非自回歸模型通過減少生成句子的循環(huán)次數(shù)來提高翻譯速度。根據(jù)循環(huán)復(fù)雜度,可將非自回歸模型分為三類:O(1)即只要一次循環(huán),如Gu等[7]、Wang等[8]和Guo等[9]提出的非自回歸模型,在去除生成目標(biāo)語句時單詞之間的依賴關(guān)系之后,通過解碼器的輸入和預(yù)測目標(biāo)句子的長度來緩解重復(fù)翻譯和不完整翻譯;O(k)即需要常數(shù)次循環(huán),如Lee 等[10]提出的基于迭代優(yōu)化,Ghazvininejad 等[11]提出的基于條件遮掩語言模型的非自回歸模型;O(<n)即O(logn)和O(n/k)等循環(huán)復(fù)雜度的情況,如Stern 等[12]提出的通過插入操作靈活生成目標(biāo)序列非自回歸模型和Wang 等[13]提出的半自回歸神經(jīng)機器翻譯模型。因此,一方面要保證模型的翻譯質(zhì)量,另一方面要提升模型的解碼速度,成為一個新的嚴(yán)峻挑戰(zhàn)。
本研究借鑒Lee 等[10]提出基于迭代優(yōu)化的非自回歸序列模型,將解碼器輸出作為下一次迭代的輸入反饋,對翻譯結(jié)果進行迭代優(yōu)化來提升翻譯效果。該模型由一個潛在變量模型和一個條件去噪自動編碼器組成,除了在解碼器中刪除目標(biāo)側(cè)句子的依賴性之外,與自回歸模型Transformer 具有相同的編碼器-解碼器架構(gòu),均采用相同的Adam 方法和warm up 學(xué)習(xí)率調(diào)節(jié)策略。本文通過優(yōu)化該模型的學(xué)習(xí)率策略,改變學(xué)習(xí)率調(diào)節(jié)方法,將訓(xùn)練中學(xué)習(xí)率調(diào)節(jié)方法warm up 換成linear annealing;然后將模型在全國機器翻譯研討會(China Workshop on Machine Translation,CWMT)2017 維漢平行語料上采用不同的學(xué)習(xí)率調(diào)節(jié)方法進行實驗驗證;最終得到在linear annealing 上效果優(yōu)于warm up,與自回歸模型Transformer 的實驗結(jié)果對比之后得到當(dāng)解碼速度提升1.74倍時,翻譯性能達(dá)到自回歸翻譯模型Transformer 的95.34%。因此,本文發(fā)現(xiàn)使用liner annealing 學(xué)習(xí)率調(diào)節(jié)方法可以有效提升維漢機器翻譯的質(zhì)量和速度。
本文提出的學(xué)習(xí)率調(diào)節(jié)方法是基于Lee 等[10]提出的基于迭代優(yōu)化的非自回歸序列模型,因此下面將簡要介紹該模型。該模型采用編碼器-解碼器架構(gòu),可以看作由一個潛在變量模型和一個條件降噪自動編碼器組成。
Lee 等[10]在提出的序列模型中通過引入潛在變量(latent variable)來隱式地捕獲目標(biāo)變量之間的依賴關(guān)系??梢园褲撛谧兞靠闯山獯a器的輸入,通過引入L個中間隨機潛在變量,然后將其邊緣化。
該求和公式內(nèi)的每一個乘積項由一個神經(jīng)網(wǎng)絡(luò)建模,該神經(jīng)網(wǎng)絡(luò)以一個源語句為輸入,輸出每個t在目標(biāo)詞匯V上的條件分布。T是指目標(biāo)語句的長度,Y0,Y1,…,YL分別代表輸出序列每次迭代后的結(jié)果。如圖2所示,L個潛在變量代表輸出序列的L+1次迭代優(yōu)化,則第一次迭代僅依賴源語句X生成初始翻譯結(jié)果,接著每一次迭代都根據(jù)源語句X和上一輪迭代的結(jié)果生成本輪的翻譯結(jié)果,分別為Y1,Y2,…,YL。
如圖2 所示,潛在變量L的個數(shù),就代表輸出序列在Decoder2上的L次迭代優(yōu)化和在Decoder1上的1次迭代優(yōu)化,總共L+1次。
圖2 潛在變量模型Fig.2 Latent variable model
對于給定的訓(xùn)練對(X,Y*),即最小化損失函數(shù):
和自編碼器不同的是,降噪自編碼器在訓(xùn)練過程中,輸入的數(shù)據(jù)中部分帶有“噪聲”。降噪自編碼器(Denoising AutoEncoder,DAE)的核心思想是,一個能夠從中恢復(fù)出原始信號的神經(jīng)網(wǎng)絡(luò)表達(dá)未必是最好的,但能夠?qū)А霸肼暋钡脑紨?shù)據(jù)編碼、解碼,然后還能恢復(fù)真正的原始數(shù)據(jù),這樣的特征才是最好的。Lee 等[10]提出的序列模型中,通過C(Y|Y*)引入正確輸出Y*的損壞數(shù)據(jù)。Hill 等[14]提出的加入噪聲的方法,最近在Artetxe 等[15]和Lample 等[16]中廣泛地使用,即在目標(biāo)語句中加入噪聲之后再作為解碼器輸入,文中提出加入噪聲的方法比較傳統(tǒng),如前后兩次調(diào)換順序、替換原詞為詞表中任意一詞等。如圖3 所示,使用加入噪聲的數(shù)據(jù)隨機地替代圖2 所示的Decoder2 的輸出結(jié)果。為了找到在給定加入噪聲數(shù)據(jù)的前提下,找到原始準(zhǔn)確翻譯Y*的最大對數(shù)概率。即最小損失函數(shù):
圖3 自動降噪編碼器Fig.3 Denoising autoencoder
總體上訓(xùn)練模式是:除了第一次迭代,每次迭代的解碼器輸入要么是對目標(biāo)語句加入潛在變量后的結(jié)果,要么是對目標(biāo)語句加入噪聲后的結(jié)果,兩者之間用超參數(shù)αl控制。在模型上,如圖2 或3 所示,其中解碼器Decoder1 只負(fù)責(zé)第一輪的迭代,解碼器Decoder2 負(fù)責(zé)之后的迭代。因此提出隨機混合潛在變量模型和降噪自動編碼器的損失函數(shù)見式(4),用一個超參數(shù)αl控制。用式(3)中的隨機取代式(2)中的。
Lee 等[10]提出的基于迭代優(yōu)化的非自回歸序列模型,如圖2 或者圖3 所示,該模型是通過使用基于Transform 模型改進的。模型訓(xùn)練采用Adam 方法,使用warm up 的學(xué)習(xí)率調(diào)節(jié)方法,公式如下:
該學(xué)習(xí)率調(diào)節(jié)方法是指,需要預(yù)先設(shè)置一個warm_steps超參。當(dāng)訓(xùn)練步數(shù)step_num小于該值時,step_num*warmup_step-0.5決定學(xué)習(xí)率,這時學(xué)習(xí)率是step_num變量斜率為正的線性函數(shù);反之,訓(xùn)練步數(shù)step_num大于warm_steps時,step_num-0.5決定學(xué)習(xí)率,這時就成了一個指數(shù)為負(fù)數(shù)的冪函數(shù)。這樣在規(guī)模大的平行語料下,學(xué)習(xí)率呈現(xiàn)“上升-平穩(wěn)-下降”的規(guī)律,這尤其在深層模型和具有多層感知機(MultipLayer Perception,MLP)層的模型中比較顯著。如果從模型角度來看,學(xué)習(xí)率的這種變化對應(yīng)了模型“平穩(wěn)-探索-平穩(wěn)”的學(xué)習(xí)階段。因此warm up 有助于減緩模型在初始階段對小批量數(shù)據(jù)的過擬合現(xiàn)象,保持分布的平穩(wěn),更有助于保持深層模型的穩(wěn)定性。但是當(dāng)網(wǎng)絡(luò)不夠大、不夠深和數(shù)據(jù)規(guī)模batch size 普遍較小的情況下,網(wǎng)絡(luò)不夠大不夠深就意味著模型能夠比較容易地把分布從過擬合中拉回來,數(shù)據(jù)集比較小意味著batch size 之間的方差沒有那么大。所以,學(xué)習(xí)率不使用warm up 不會出現(xiàn)很嚴(yán)重的學(xué)習(xí)問題,同時warn up 學(xué)習(xí)率策略非常耗時間。
但是由于Lee 等[10]提出的該非自回歸的序列模型,是在機器翻譯研討會(Workshop on Machine Translation,WMT)英德平行語料上進行的。該平行語料由于規(guī)模比較大,warm up的效果比較好。而本文中所采用的語料是維漢平行語料,該語料比較少,僅有350 000,訓(xùn)練過程中使用warm up 的學(xué)習(xí)率方法效果不是很好,而且對時間消耗很大,因此,本文在平行語料國際口語機器翻譯評測比賽(International Workshop on Spoken Language Translation,IWSLT)2016 英-德(196 000),WMT2015 英-德(4 500 000)和CWMT2017 維-漢(350 000)上分別采用學(xué)習(xí)率調(diào)節(jié)方法warm up 和linear annealing 進行了實驗(語料信息如表1 所示,實驗結(jié)果如表2)。從表2 的實驗結(jié)果來看,在平行語料規(guī)模比較大的WMT2015上,warm up的效果比較好;而在平行語料規(guī)模比較小的IWSLT2016 上,linear annealing 的效果比較好。同時,本文在維漢平行語料上證實了該觀點,由表2 可知,使用linear annealing 的學(xué)習(xí)率調(diào)節(jié)方法比warm up 在翻譯質(zhì)量方面提升接近4 個雙語評估替換(BiLingual Evaluation Understudy,BLEU),在解碼速度方面提升接近200 Tokens/s。因此在CWMT2017 維漢語料上采用linear annealing 學(xué)習(xí)率調(diào)節(jié)方法比較好,公式如下:
訓(xùn)練中設(shè)置lr_end=1E-5,anneal_steps=250 000,iters實際訓(xùn)練步數(shù)(200 000)。linear annealing 是一種隨機算法,能夠快速找到問題的最優(yōu)近似解,用來在一個大的搜尋空間內(nèi)找尋命題最優(yōu)解。這種方法區(qū)別于簡單的貪心搜索算法。簡單的貪心搜索算法每次從當(dāng)前解的鄰近解空間中選擇一個最優(yōu)解作為當(dāng)前解,直到達(dá)到一個局部最優(yōu)解;但這種方法容易陷入局部最優(yōu)解,而局部最優(yōu)解不一定是全局最優(yōu)解。而linear annealing 算法在搜索過程中加入了隨機因素,以一定概率來接受一個比當(dāng)前解要差的解,因此很有可能跳出這個局部最優(yōu)解,達(dá)到全局最優(yōu)解。同時linear annealing 適用于數(shù)據(jù)集規(guī)模比較少、模型不是很深的環(huán)境中,能夠快速地達(dá)到收斂,相較于warm up,消耗時間更少。由表2 可知,基線系統(tǒng)采用Lee 等[10]提出的基于迭代優(yōu)化的非自回歸序列模型,在相同的訓(xùn)練步驟200 000條件下,在維漢平行語料上采用學(xué)習(xí)率調(diào)節(jié)方法linear annealing 比warm up 得到的翻譯質(zhì)量和解碼速度都高,使本研究的觀點得到驗證。因此,本文在該模型中采用學(xué)習(xí)率調(diào)節(jié)方法linear annealing 替換原模型中的warm up,實驗結(jié)果見表3。最終該非自回歸模型得出的結(jié)論與自回歸模型Transformer對比,實驗結(jié)果見表4。
數(shù)據(jù)集采用CWMT2017 發(fā)布的維吾爾語-漢語新聞?wù)?wù)評測語料,英-德平行語料訓(xùn)練集采用WMT2015(4 500 000)和IWSLT201616(190 000)。對于WMT2015采用newstest2014和newstest2013 作為測試集和開發(fā)集;對于IWSLT2016 采用newstest2013 作為測試集和開發(fā)集。對所有平行語料的所有句子都使用字節(jié)對編碼(Byte Pair Encoding,BPE)算法[17]進行標(biāo)記并分割成子單詞單元。將學(xué)習(xí)到的規(guī)則應(yīng)用于所有的訓(xùn)練集、開發(fā)集和測試集[18]。維漢語料和IWSLT2016 英-德語料共享大小為40 000 的詞匯表,WMT2015 英-德語料共享大小為60 000的詞匯表。數(shù)據(jù)集見表1所示。
表1 平行語料Tab.1 Parallel corpus
對于神經(jīng)機器翻譯結(jié)果,本研究采用機器翻譯常用的評價指標(biāo)機器雙語評估替換(BLEU)[19]值來對模型的翻譯質(zhì)量進行評價,解碼效率采用Tokens/s和Sentences/s來判定。
基線系統(tǒng)(baseline) 采用Lee等[10]提出的基于迭代優(yōu)化的非自回歸序列模型中的自回歸模型Transformer,使用小的訓(xùn)練模型,設(shè) 置d_moder=278,d_hidden=507,p_droput=0.1,n_layer=5和n_head=2,t_warmup=746,訓(xùn)練步數(shù)為200 000。分別采用warm up 和linear annealing 的學(xué)習(xí)率調(diào)節(jié)方法。訓(xùn)練結(jié)果見表2,在CWMT2017 維漢平行語料上采用策略warm up時,翻譯質(zhì)量的BLEU 值為43.33 和解碼速度為873.99 Tokens/s作為基線系統(tǒng)(自回歸模型)。
知識蒸餾(Knowledge Distillation) 知識蒸餾被廣泛應(yīng)用于神經(jīng)機器翻譯[20]。Hinton 等[21]和Kim 等[22]提出的知識蒸餾被證明是成功訓(xùn)練非自回歸模型的關(guān)鍵。對于翻譯任務(wù),本文使用序列級知識蒸餾來構(gòu)造蒸餾語料庫,其中訓(xùn)練語料庫的目標(biāo)側(cè)被自回歸模型的輸出所替代。本研究使用原始語料庫訓(xùn)練自回歸基線系統(tǒng),用蒸餾語料庫訓(xùn)練非自回歸模型。
表2 不同平行語料訓(xùn)練結(jié)果Tab.2 Training results of different parallel corpuses
訓(xùn)練和解碼 訓(xùn)練的模型使用Kingma 等[23]提出的Adam[23]優(yōu)化器。本文的訓(xùn)練和解碼過程在單個Nvidia Tesla K80 GPU上。根據(jù)Lee等[10]的設(shè)置,超參數(shù)PDAE=0.5。在實驗中采用Oracle 距離作為距離函數(shù),即采用迭代次數(shù)自適應(yīng)時,采用Oracle 作為距離函數(shù),用來求得翻譯質(zhì)量和解碼速度平衡的最優(yōu)值。
從表2 的實驗結(jié)果顯示,本文在基線系統(tǒng)上通過采用不同的學(xué)習(xí)率調(diào)節(jié)方法,很明顯學(xué)習(xí)率調(diào)節(jié)方法采用liner annealing時在維漢平行語料上無論是翻譯質(zhì)量還是解碼速度都優(yōu)于warm up。尤其在翻譯質(zhì)量方面,使用liner annealing學(xué)習(xí)率調(diào)節(jié)方法比warm up提升4.28個BLEU值。因此,本研究在Lee 等[10]提出的非自回歸序列模型中采用liner annealing學(xué)習(xí)率調(diào)節(jié)方法替換warm up,實驗結(jié)果見表3。
表3 非自回歸模型訓(xùn)練結(jié)果Tab.3 Training results of non-autoregressive model
從表3 的實驗結(jié)果顯示,翻譯質(zhì)量隨著迭代次數(shù)的增加而增加,而解碼效率隨著迭代次數(shù)的增加而下降。當(dāng)iter=1時,非自回歸的解碼器比自回歸模型提升8.37 倍,而翻譯質(zhì)量僅達(dá)到自回歸模型的57.63%;當(dāng)iter=4時,非自回歸的解碼器比自回歸模型提升1.78 倍,翻譯質(zhì)量卻達(dá)到自回歸模型的92.85%;當(dāng)iter=10時,使用liner annealing 的解碼速度略高于warm up的解碼速度時,它們的翻譯質(zhì)量相近。為了在翻譯質(zhì)量和解碼速度方面達(dá)到更好的平衡,本文采取自適應(yīng)迭代次數(shù),即解碼速度為2 109.36 Tokens/s,翻譯質(zhì)量的BLEU 值為
41.31 。
從表4 的實驗結(jié)果顯示,本文將所采用的非自回歸模型與現(xiàn)有自回歸模型Transformer 的結(jié)果進行比較,最終得到非自回歸模型的解碼速度比自回歸模型提升1.74 倍時,翻譯質(zhì)量可達(dá)到自回歸翻譯模型的95.34%,可以實現(xiàn)翻譯質(zhì)量和解碼速度之間很好的平衡。
表4 自回歸和自非回歸模型結(jié)果對比Tab.4 Comparison of results of autoregressive and non-autoregressive models
圖4 展示了從CWMT 2017 維漢數(shù)據(jù)集中抽取的一個翻譯示例??梢钥吹椒亲曰貧w模型傾向于重復(fù)翻譯相同的單詞或短語,有時候會漏掉有意義的單詞。同時,隨著迭代次數(shù)的增加,會整體調(diào)整句子中單詞順序,使其更接近參考翻譯,翻譯質(zhì)量也在逐步地提高。
圖4 非自回歸模型翻譯的例子Fig.4 Translation example of non-autoregressive model
本文通過在Lee 等[10]提出的基于迭代優(yōu)化的非自回歸序列模型上采用不同的學(xué)習(xí)率調(diào)節(jié)方法,來驗證學(xué)習(xí)率調(diào)節(jié)方法對該模型翻譯質(zhì)量和解碼速度的影響。最終得到在迭代次數(shù)自適應(yīng)條件下,CWMT2017 維漢語料采用liner annealing 學(xué)習(xí)率策略可得到翻譯質(zhì)量為41.31的BLEU 值,翻譯質(zhì)量可達(dá)到自回歸翻譯模型Transformer 的95.34%,解碼速度提升1.74 倍,使其解碼速度和翻譯質(zhì)量達(dá)到一個平衡。在下一步的工作中將研究如何改進該模型,使其在翻譯質(zhì)量能夠達(dá)到甚至超過基線系統(tǒng)的基礎(chǔ)上,解碼速度能夠顯著地提升,讓翻譯質(zhì)量和解碼速度達(dá)到一個更好的平衡。