賈 浩,王 煦,季佰軍,段湘煜,張 民
(蘇州大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)
機(jī)器翻譯[1-2]的主要研究目的是通過計(jì)算機(jī)實(shí)現(xiàn)一種語言到另一種語言的自動(dòng)翻譯,傳統(tǒng)的統(tǒng)計(jì)機(jī)器翻譯(statistic machine translation,SMT)[3]系統(tǒng)性能提升緩慢,但是近年來,隨著神經(jīng)機(jī)器翻譯(neural machine translation,NMT)[4]的提出,機(jī)器翻譯性能大幅度提升,再次得到了廣泛的關(guān)注.
NMT模型一般采用編碼器-解碼器[5]結(jié)構(gòu),使用編碼器學(xué)習(xí)源端單詞的上下文表征,之后再通過解碼器來預(yù)測目標(biāo)端的單詞.2014年,Bahdanau等[6]第一次將注意力機(jī)制引入自然語言處理領(lǐng)域,進(jìn)一步提升了NMT的性能.之后Luong等[7]拓展了注意力機(jī)制在機(jī)器翻譯領(lǐng)域的運(yùn)用,提出了全局注意力與局部注意力的概念.2017年,Vaswani等[8]通過自注意力機(jī)制(self-attention)將輸入序列中不同位置的信息相互聯(lián)系起來,提出了完全基于注意力機(jī)制的翻譯模型Transformer,與遞歸結(jié)構(gòu)、卷積結(jié)構(gòu)相比,取得了更好的翻譯效果.
雖然在翻譯效果上取得了較大進(jìn)步,但相關(guān)模型也越來越復(fù)雜,并且編碼器與解碼器分開設(shè)計(jì),進(jìn)一步增加了模型的復(fù)雜度.目前已經(jīng)有一些工作嘗試縮小編碼器與解碼器之間的差異,將它們簡化為一個(gè)模塊.Bapna等[9]嘗試將編碼器所有層的信息傳給解碼器.He等[10]將編碼器與解碼器參數(shù)共享,取得了不錯(cuò)的效果.Fonollosa等[11]則在He等[10]的基礎(chǔ)上對(duì)注意力層添加了局部約束.這些方法都嘗試將編碼器與解碼器在注意力層面上統(tǒng)一,但是在編碼過程中這些模型只能依靠源端句子.
非自回歸NMT近幾年在NMT領(lǐng)域逐漸受到關(guān)注.傳統(tǒng)的自回歸NMT在解碼過程中逐次以已知單詞為條件預(yù)測下一個(gè)單詞,而非自回歸NMT則通過并行計(jì)算一次性生成所有預(yù)測單詞.雖然在配置相同的情況下非自回歸NMT效果往往沒有自回歸NMT好,但是相對(duì)而言,其翻譯速度有大幅提高.2018年,Gu等[12]首次提出了非自回歸NMT,與傳統(tǒng)Transformer模型相比,多了一個(gè)繁殖預(yù)測(fertility predictor)模塊,使用外部的快速對(duì)齊工具(fast align)來生成繁殖信息以決定輸出句子長度,之后并行地生成目標(biāo)語句的各個(gè)單詞.Lee等[13]則通過編碼器隱狀態(tài)直接生成句子長度,并且采用多次迭代的方法,直接取上一輪翻譯的結(jié)果作為下一輪的解碼器輸入,從而提升翻譯效果.Ghazvininejad等[14]則在Lee等[13]的基礎(chǔ)上采用掩碼機(jī)制,隨機(jī)對(duì)解碼器的輸入進(jìn)行掩碼處理,輸出這些被掩碼的單詞.為了得到更合適的翻譯結(jié)果,Wei 等[15]將自回歸模型作為教師模型,指導(dǎo)模型的訓(xùn)練.Shao等[16]則引入了強(qiáng)化學(xué)習(xí)的訓(xùn)練方法.但是,這些方法仍然需要使用編碼器-解碼器結(jié)構(gòu).
為了簡化傳統(tǒng)的NMT模型框架,本研究提出了基于掩碼機(jī)制的非自回歸NMT模型.該模型只使用一個(gè)帶有自注意力機(jī)制的編碼器,并且運(yùn)用了類似于Devlin等[17]在其掩碼語言模型(masked language model,MLM)中使用的掩碼機(jī)制.這個(gè)方法最先被用于單語言預(yù)訓(xùn)練中,之后Lample等[18]將其運(yùn)用到跨語言預(yù)訓(xùn)練中,他們將源端語句和目標(biāo)端語句拼接作為輸入,并且在源端語句和目標(biāo)端語句中都隨機(jī)掩蓋一部分詞進(jìn)行訓(xùn)練,最終的訓(xùn)練目標(biāo)是預(yù)測出被隨機(jī)掩蓋的單詞.本研究在訓(xùn)練過程中,使用類似于Lample等[18]的方法,將平行源端句子與目標(biāo)端句子拼接輸入,但是只對(duì)目標(biāo)端的單詞進(jìn)行掩碼處理.在訓(xùn)練時(shí),模型依靠自注意力層學(xué)習(xí)源端句子和目標(biāo)端未被掩碼處理的句子信息,來預(yù)測目標(biāo)端被掩碼處理的單詞.并且通過這個(gè)模型,可以同時(shí)實(shí)現(xiàn)非自回歸NMT,與傳統(tǒng)的自回歸NMT相比,可以大大提高翻譯的速度.
受MLM[17]的啟發(fā),將帶有雙向自注意力機(jī)制的Transformer的編碼器作為實(shí)驗(yàn)的基本模型結(jié)構(gòu),如圖1所示.該模型結(jié)構(gòu)融合了掩碼機(jī)制、非自回歸NMT、遮掩-預(yù)測解碼機(jī)制等思想.模型由一個(gè)Transformer編碼器和一個(gè)單層循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)組成,RNN模塊用來預(yù)測目標(biāo)語言的句子長度l,Transformer編碼器用來預(yù)測目標(biāo)語言的句子內(nèi)容.相比于傳統(tǒng)的自回歸NMT,該模型能減少近一半的參數(shù),大大減少了模型的參數(shù)規(guī)模.其中,Transformer編碼器由6個(gè)編碼器層堆疊而成,每個(gè)編碼器層包含2個(gè)子層(多頭自注意力子層和前饋神經(jīng)網(wǎng)絡(luò)子層),每個(gè)子層都有1個(gè)殘差連接和1個(gè)層標(biāo)準(zhǔn)化.
圖1 本模型結(jié)構(gòu)Fig.1 Structure of our model
MLM實(shí)質(zhì)上是一個(gè)帶有雙向自注意力機(jī)制和掩碼機(jī)制的Transformer編碼器,在此結(jié)構(gòu)基礎(chǔ)上,模型能夠在每一層中學(xué)習(xí)到上下文的雙向表示.因此,本研究采用類似于MLM的方法來優(yōu)化輸入文本的上下文表示.具體地,將輸入文本中的詞隨機(jī)替換為特殊標(biāo)記[mask],實(shí)現(xiàn)對(duì)輸入文本的部分遮掩,然后模型通過學(xué)習(xí)文本的上下文信息來預(yù)測被遮掩的詞.
在模型訓(xùn)練時(shí),對(duì)目標(biāo)語句進(jìn)行隨機(jī)遮掩之后,將雙語平行句對(duì)用隔開,作為一個(gè)序列,進(jìn)入Transformer編碼器進(jìn)行自注意力的計(jì)算.如圖2所示:其中,對(duì)于源語句部分,在進(jìn)行自注意力運(yùn)算時(shí),將目標(biāo)語句的權(quán)重設(shè)置為-∞,即讓模型在進(jìn)行源語句注意力計(jì)算時(shí),感知不到目標(biāo)語句;而在進(jìn)行目標(biāo)語句的自注意力運(yùn)算時(shí),不對(duì)源語句的權(quán)重進(jìn)行任何的操作,即讓模型在目標(biāo)語句注意力計(jì)算時(shí),能夠感知到整個(gè)句對(duì).
非自回歸NMT對(duì)目標(biāo)語言的每個(gè)詞獨(dú)立地進(jìn)行預(yù)測,不依賴于預(yù)測詞前面位置的單詞,因此能一次性地預(yù)測出整個(gè)目標(biāo)語言句子.給定一個(gè)源語言句子SI=[s1,…,si,…,sI],生成正確的目標(biāo)語言句子TJ=[t1,…,tj,…,tJ]的概率
箭頭表示注意力的傳遞.圖2 每個(gè)編碼器層之間的注意力計(jì)算參與方式Fig.2 Participating method of attention calculation between each encoder layer
(1)
本研究隨機(jī)對(duì)目標(biāo)端句子中的N個(gè)詞進(jìn)行遮掩,N服從于均勻分布U(1,l),其中l(wèi)為目標(biāo)端句子長度.模型的遮掩和生成部分的損失函數(shù)可表示為
(2)
在傳統(tǒng)的自回歸NMT中,從左往右逐詞解碼,直到預(yù)測出代表句子結(jié)束的特殊標(biāo)識(shí)符,作為句子解碼結(jié)束的標(biāo)志.而在非自回歸NMT中,由于同時(shí)預(yù)測出整個(gè)句子的內(nèi)容,所以在預(yù)測句子內(nèi)容之前,需要提前知道句子長度.因此,本研究采用了一個(gè)單層的RNN來提前預(yù)測句子的長度.
假設(shè)目標(biāo)語言句子的最大長度為lmax,對(duì)于源語言句子的第t個(gè)詞st,可以通過如下公式得到隱狀態(tài)Ht:
Ht=tanh(WHt-1+Ust),t=1,2,…,I,
(3)
(4)
因此,在模型訓(xùn)練階段,將目標(biāo)端句子的真實(shí)長度編碼成一個(gè)lmax維的獨(dú)熱向量(one-hot vector)Y,長度預(yù)測模塊的訓(xùn)練目標(biāo)為最小化交叉熵(cross entropy,ec)損失:
(5)
結(jié)合長度預(yù)測模塊和目標(biāo)端句子預(yù)測模型,本研究在模型訓(xùn)練過程中,最小化損失函數(shù)為
L=L1+L2.
(6)
非自回歸NMT雖然能夠提高解碼的速度,但是如何提高解碼的效果至關(guān)重要.因此,在模型解碼階段,本研究采用“遮掩-預(yù)測”解碼機(jī)制[16]進(jìn)行逐步優(yōu)化,提高模型解碼出的句子效果.
解碼的算法思路如下:首先根據(jù)源語言的句子,通過長度預(yù)測模塊得到目標(biāo)語言句子的長度l;然后將目標(biāo)語言句子置為l個(gè)特殊標(biāo)記[mask],與源語言句子拼接在一起進(jìn)入模型,預(yù)測出目標(biāo)語言句子中的所有詞;最后進(jìn)入T輪的迭代優(yōu)化,每一輪的優(yōu)化迭代包含遮掩和預(yù)測兩部分.
(7)
其中[]表示取整.
(8)
(9)
其中,Vj為模型詞表中的各個(gè)詞.而對(duì)于那些沒有被遮掩的詞,其預(yù)測概率保持不變.
選擇非自回歸NMT任務(wù)中常用的WMT 2016英語-羅馬尼亞語(http:∥www.statmt.org/wmt16/translation-task.html)語料進(jìn)行實(shí)驗(yàn),訓(xùn)練集含有61.3 萬對(duì)平行句對(duì),驗(yàn)證集newsdev2016和測試集newstest2016各含有2 000對(duì)平行句對(duì).使用工具M(jìn)OSES[19]對(duì)數(shù)據(jù)進(jìn)行分詞,對(duì)英語語料和羅馬尼亞語語料進(jìn)行聯(lián)合字節(jié)對(duì)編碼[20](byte pair encoding,BPE),共享約6萬的詞匯表,其余低頻詞用
在實(shí)驗(yàn)中,對(duì)于長度預(yù)測模塊,使用一個(gè)單層RNN對(duì)源端信息進(jìn)行編碼,目標(biāo)端句子最大長度設(shè)為256,并用一個(gè)Softmax層對(duì)目標(biāo)端句子長度進(jìn)行預(yù)測.對(duì)于目標(biāo)端句子內(nèi)容預(yù)測部分,使用一個(gè)Transformer編碼器,含有6個(gè)編碼器層,每一層多頭注意力機(jī)制均使用了8個(gè)頭,詞嵌入(word embedding)維度為1 024.
訓(xùn)練時(shí),使用Adam優(yōu)化器[21],初始學(xué)習(xí)率設(shè)為0.000 5,批大小(batch size)為5 200個(gè)詞,對(duì)于所有的隱藏層,都有0.1的隨機(jī)失活率(dropout),標(biāo)簽平滑(label smoothing)參數(shù)=0.1.隨機(jī)將目標(biāo)端句子的N個(gè)詞用[mask]代替,其中N服從均勻分布U(1,l).解碼時(shí),將迭代優(yōu)化的輪數(shù)設(shè)為10.
以雙語互譯評(píng)估(BLEU)分?jǐn)?shù)來作為本研究模型性能的評(píng)測指標(biāo),使用WMT數(shù)據(jù)集評(píng)測常用的SacreBLEU[22]工具(SacreBLEU的設(shè)置為: BLEU+case.mixed+numrefs.1+smooth.exp+tok.13a+version.1.2.17).
基準(zhǔn)系統(tǒng)選取了近年來非自回歸NMT領(lǐng)域比較有影響力的幾個(gè)工作.分為兩類,第一類解碼階段不需要進(jìn)行迭代優(yōu)化,解碼的時(shí)間復(fù)雜度為O(1);另一類解碼階段需要進(jìn)行迭代優(yōu)化,解碼的時(shí)間復(fù)雜度為O(T),其中,T為迭代優(yōu)化的輪數(shù).這些方法都是基于編碼器-解碼器結(jié)構(gòu),具有更多的參數(shù)、更復(fù)雜的模型結(jié)構(gòu),會(huì)消耗更多的訓(xùn)練時(shí)間.
表1展示了各系統(tǒng)在WMT 2016英語-羅馬尼亞語任務(wù)的測試集newstest2016上的性能,可以看出本研究的模型盡管結(jié)構(gòu)很簡單,但是取得了最好的實(shí)驗(yàn)性能(英語→羅馬尼亞語的BLEU值為30.2%,羅馬尼亞語→英語的BLEU值為31.2%).與解碼階段不需要迭代優(yōu)化的方法相比,雖然本研究的方法在解碼時(shí)具有更高的時(shí)間復(fù)雜度,但是其參數(shù)更少,翻譯性能更好.而和解碼階段需要迭代優(yōu)化的方法相比,雖然解碼復(fù)雜度相同,但是本研究的方法翻譯性能有了大幅的提升,而且完全是端到端的訓(xùn)練方式.
表1 各系統(tǒng)在WMT 2016英語-羅馬尼亞語任務(wù)的測試集newstest2016上的性能Tab.1 Performances of systems on the test set ofWMT 2016 English-Romanian task(newstest2016)
根據(jù)1.6節(jié)介紹的遮掩-預(yù)測解碼機(jī)制可知,迭代優(yōu)化的輪數(shù)T可能會(huì)對(duì)解碼結(jié)果產(chǎn)生一定的影響.而在本研究的實(shí)驗(yàn)中,迭代優(yōu)化的輪數(shù)T已經(jīng)預(yù)先設(shè)定,因此,本節(jié)將分析不同迭代優(yōu)化輪數(shù)對(duì)解碼結(jié)果的影響.
從圖3可以看出,在迭代優(yōu)化輪數(shù)T小于12時(shí),迭代的輪數(shù)越多,模型解碼的效果越好,而在T大于12時(shí),模型解碼的效果趨于平穩(wěn),不會(huì)因?yàn)榈啍?shù)的增多而產(chǎn)生較大的影響.
圖3 不同迭代優(yōu)化輪數(shù)對(duì)解碼結(jié)果的影響Fig.3 Effect of different iteration optimization rounds on the decoding result
由于本研究使用基于掩碼機(jī)制的Transformer編碼器,和MLM類似,本研究用預(yù)訓(xùn)練的英語-羅馬尼亞語MLM(https:∥dl.fbaipublicfiles.com/XLM/mlm_enro_1024.pth)參數(shù)初始化本模型中的Transformer編碼器,分析不同初始化參數(shù)對(duì)模型性能的影響.
由表2可知,將本模型中的Transformer編碼器用預(yù)訓(xùn)練的MLM參數(shù)初始化之后,英語→羅馬尼亞語和羅馬尼亞語→英語兩個(gè)語向上的BLEU都取得了很大的提升,與Lample等[18]使用預(yù)訓(xùn)練的MLM參數(shù)初始化Transformer編碼器和解碼器得到的自回歸NMT模型性能相當(dāng),同時(shí)參數(shù)約減少了一半,模型更輕量.
表2 不同的參數(shù)初始化方式下模型的性能以及參數(shù)量Tab.2 Performance and parameter quantity of the modelwith different parameter initialization methods
本研究使用一個(gè)單層RNN作為長度預(yù)測模塊,在解碼時(shí)首先通過長度預(yù)測模塊預(yù)測出目標(biāo)語言句子的長度,再進(jìn)行目標(biāo)語言句子內(nèi)容的預(yù)測.為了分析RNN這個(gè)長度預(yù)測模塊的效果,本研究改變解碼的方式,即給定目標(biāo)語言句子的真實(shí)長度,然后再用本研究模型預(yù)測目標(biāo)語言句子的內(nèi)容.
表3給出了相關(guān)實(shí)驗(yàn)性能的數(shù)據(jù),在解碼階段給定目標(biāo)語言句子的真實(shí)長度,即不再使用長度預(yù)測模塊后,解碼效果并沒有很大的提升(英語→羅馬尼亞語方向的BLEU值提升0.2個(gè)百分點(diǎn),羅馬尼亞語→英語方向的BLEU值提升0.3個(gè)百分點(diǎn)),說明長度預(yù)測模塊在整個(gè)模型中起到了不錯(cuò)的效果.
表3 模型在給定目標(biāo)端長度情況下的解碼效果Tab.3 Decoding performance of the modelwith the given target-side length
如圖2所示,在本研究模型的Transformer編碼器中,在對(duì)源語言端進(jìn)行注意力計(jì)算時(shí),將目標(biāo)端的信息全部進(jìn)行了遮掩,此時(shí),源語言端每一層的隱狀態(tài)都只跟源語言端的信息相關(guān).為了研究不同源端信息的影響,本研究直接用Transformer編碼器對(duì)源語言句子進(jìn)行獨(dú)立編碼,然后將編碼器最終輸出的隱狀態(tài)作為源端信息,參與每一層目標(biāo)端注意力的計(jì)算.
從表4可以看出,獨(dú)立編碼源端注意力信息并參與每一層目標(biāo)端注意力計(jì)算的效果不及本研究將每一層的源端注意力信息僅用來參與該層目標(biāo)端注意力計(jì)算.這是因?yàn)槊恳粚拥脑炊穗[狀態(tài)都關(guān)注到了不同的信息,參與該層目標(biāo)端注意力計(jì)算能讓目標(biāo)端注意到該層的信息;而獨(dú)立編碼源端注意力信息,將最終輸出的隱狀態(tài)作為源端信息參與每一層目標(biāo)端注意力的計(jì)算,會(huì)使目標(biāo)端失去這部分信息,導(dǎo)致效果不佳.
表4 目標(biāo)端的不同源端注意力輸入方式的結(jié)果對(duì)比Tab.4 Result comparison of different sourceattention input methods on target side
本研究采用了基于迭代的解碼方式,解碼速度會(huì)隨著迭代輪數(shù)增加而變慢,其解碼時(shí)間復(fù)雜度為O(T),T為迭代優(yōu)化輪數(shù).而基于自回歸的從左往右的解碼方式復(fù)雜度為O(N),N為目標(biāo)端句子長度.通常來說,T?N,因此本研究模型在性能上是優(yōu)于自回歸解碼的.
在一臺(tái)TITANXP上分別使用兩種解碼方式對(duì)10萬句輸入進(jìn)行解碼測試.如圖4所示,隨著迭代輪數(shù)增加,本研究模型解碼速度確實(shí)會(huì)有降低,但還是優(yōu)于基于自回歸的解碼,解碼速度是自回歸的1.3~3.6倍.
圖4 不同解碼方式之間的速度對(duì)比Fig.4 Speed comparison between different decoding methods
本研究針對(duì)傳統(tǒng)自回歸NMT結(jié)構(gòu)復(fù)雜、參數(shù)過多的問題,提出了基于掩碼的非自回歸NMT.本研究采用類似MLM中的掩碼機(jī)制,對(duì)Transformer編碼器部分修改并使其同時(shí)實(shí)現(xiàn)編碼器與解碼器功能.最終實(shí)驗(yàn)結(jié)果表明本研究基于掩碼的非自回歸NMT模型相比于其他非自回歸翻譯模型,取得了更好的翻譯性能;相比于傳統(tǒng)自回歸NMT模型,結(jié)構(gòu)更簡單、參數(shù)更少,并且使用跨語言預(yù)訓(xùn)練語言模型初始化之后,本研究取得了和自回歸NMT模型相當(dāng)?shù)慕Y(jié)果.
在未來的工作中,將進(jìn)一步探索非自回歸NMT方法,同時(shí)對(duì)本研究模型在其他語言對(duì)和其他生成任務(wù)中的作用進(jìn)行探索.