史小靜,寧秋怡,季佰軍,段湘煜
(蘇州大學自然語言處理實驗室,江蘇 蘇州 215006)
神經(jīng)機器翻譯NMT(Neural Machine Translation)[1 - 3]是完全采用神經(jīng)網(wǎng)絡(luò)完成源語言到目標語言的端到端的翻譯系統(tǒng),吸引了眾多學者的關(guān)注。最初,神經(jīng)機器翻譯模型是基于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Network)[4]實現(xiàn)端到端的翻譯。注意力機制[5]是對神經(jīng)機器翻譯編碼器-解碼器(Encoder-Decoder)框架的完善,使得模型能夠在解碼時只關(guān)注源語言句子中的一部分區(qū)域,動態(tài)地生成源語言信息,極大地提高了翻譯譯文的質(zhì)量。為了提高神經(jīng)機器翻譯的表達能力,研究人員采納多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),實現(xiàn)了基于卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)[6]和自注意力機制(Self-Attention)[7]的多層神經(jīng)網(wǎng)絡(luò),使得神經(jīng)機器翻譯在多項翻譯任務(wù)中達到了最先進的水平。
編碼器-解碼器[8,9]框架是神經(jīng)機器翻譯模型的經(jīng)典框架,可以由不同的神經(jīng)網(wǎng)絡(luò)實現(xiàn),如循環(huán)神經(jīng)網(wǎng)絡(luò)RNN[4]、門限循環(huán)單元GRU(Gated Recurrent Unit)[5,9]、長短期記憶神經(jīng)網(wǎng)絡(luò)LSTM(Long Short-Term Memory)[10]、卷積神經(jīng)網(wǎng)絡(luò)CNN[6]和Transformer[7]等。一般地,編碼端對源端的輸入句子由低層到高層逐層生成語義向量,解碼端根據(jù)編碼端最后一層的輸出和已經(jīng)解碼生成的詞的隱藏層表示作為輸入,通過一系列計算得到對應(yīng)的目標端的譯文。多層神經(jīng)網(wǎng)絡(luò)中逐層傳遞的過程往往存在梯度消失或者梯度爆炸的問題,殘差網(wǎng)絡(luò)(Residual Network)[11]的引入有效地緩解了梯度消失和梯度爆炸的問題,但多層神經(jīng)網(wǎng)絡(luò)的逐層信息傳遞過程中的信息退化問題仍然不能得到妥善解決。
本文提出各層間信息融合傳遞增強和子層間信息融合傳遞增強的方法,在殘差網(wǎng)絡(luò)的基礎(chǔ)上能夠進一步補充多層神經(jīng)網(wǎng)絡(luò)逐層傳遞過程中的退化信息,保留之前所有層或子層的輸出信息,再經(jīng)過一個“保留門”機制來控制之前所有層的輸出融合后的信息保留的權(quán)重比例。該“保留門”是通過網(wǎng)絡(luò)自主學習得到的,與當前層的輸出進行連接,共同作為下一層網(wǎng)絡(luò)的輸入,使得多層網(wǎng)絡(luò)中層與層之間的信息傳遞更加充分,優(yōu)化和增強了層與層之間信息傳遞的能力。本文提出的子層間信息融合傳遞增強方法在中英和德英翻譯任務(wù)上BLEU得分[12]分別提升了0.66 和0.42,實驗結(jié)果表明,本文方法有效地提升了神經(jīng)機器翻譯的性能。
近年來,在大規(guī)模平行語料上訓練的神經(jīng)機器翻譯模型獲得了較好的翻譯性能,超越了傳統(tǒng)的統(tǒng)計機器翻譯SMT(Statistical Machine Translation)[13 - 15]。神經(jīng)機器翻譯采用神經(jīng)網(wǎng)絡(luò)來實現(xiàn)翻譯過程[2,3,16],僅需要句子級的平行語料,便于訓練大規(guī)模的翻譯模型,具有很高的實用價值,吸引了眾多研究者的關(guān)注。
注意力機制[5]是對神經(jīng)機器翻譯編碼器-解碼器框架的完善,它允許在不考慮輸入和輸出序列中詞之間距離的情況下對依賴關(guān)系進行建模,使得模型能夠利用平行語料學習到詞與詞之間的對齊信息。Vaswani等[7]首次將自注意力機制引入神經(jīng)機器翻譯模型,該模型僅依賴于注意力機制就能完成源語言到目標語言的翻譯,不僅在機器翻譯方面達到了最先進的效果,而且在多個自然語言處理任務(wù)[16 - 18]上也達到了最好的效果。自Transformer被提出以來,為了充分利用該模型各層之間的信息,眾多研究者進一步提出了許多不同的方法。Wang等[19]提出通過添加另外一層網(wǎng)絡(luò)來將其他層的層間信息進行融合,以此來捕獲丟失的信息,He等[20]提出了逐層協(xié)調(diào)的概念,顯式地協(xié)調(diào)編碼器和解碼器隱藏層向量的學習,在生成目標端句子的時候可以參考編碼端不同層的輸出信息,更充分地利用編碼端每一層的輸出信息,Wang等[21]改進了層正則化,并提出對不同層的輸出信息通過線性變換進行動態(tài)連接,以訓練更深層次的Transformer模型,從而得到更好的效果。
基于編碼器-解碼器框架的神經(jīng)機器翻譯模型多是依賴于多層神經(jīng)網(wǎng)絡(luò),然而多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在層與層之間信息傳遞的過程中往往存在信息退化的問題,殘差網(wǎng)絡(luò)[11]的引入有效地緩解了此問題。但是,殘差網(wǎng)絡(luò)只是添加了最鄰近的前面一層的輸出信息,未能利用其他層的輸出信息,多層網(wǎng)絡(luò)中固有的信息捕獲不充分的問題并沒有得到很好的解決。
與本文工作較相似的工作是Yang等[22]的工作。為了使得自注意力機制獲得更好的詞間的關(guān)聯(lián)性,作者利用不同的策略來捕獲多層神經(jīng)網(wǎng)絡(luò)的上下文信息,經(jīng)過一個門控權(quán)重將上下文信息引入到注意力模型的輸入中,以使得自注意力機制能夠捕獲到更好的詞間關(guān)聯(lián)信息。
Transformer模型架構(gòu)首先是由Vaswani等[7]提出的,屬于編碼器-解碼器結(jié)構(gòu),編碼器與解碼器之間通過注意力機制實現(xiàn)連接。Transformer的編碼器端和解碼器端分別是由N層相同的網(wǎng)絡(luò)層組成,編碼器端的每一層都包含2個子層、多頭自注意力機制和全連接的前饋網(wǎng)絡(luò)層,對每一個子層的輸出都進行了殘差連接和層歸一化處理。與編碼器端相似,解碼器端的每一層中除了包含自注意力機制層和全連接的網(wǎng)絡(luò)層之外,還包含了一個編碼器-解碼器注意力子層,同樣地,對解碼器端的每一個子層的輸出進行了殘差連接和層歸一化處理。
Transformer中使用了多頭注意力機制,多頭注意力機制使得模型可以在不同位置聯(lián)合處理來自不同表示空間的信息,將矩陣Q,K,V中每個向量的維度切分成更小的向量,希望通過不同視角獲取多樣的注意力信息。通常是將矩陣Q,K,V中每個向量的維度設(shè)置為512維,分為8個頭,即每個向量被分為8份,每一份維度為64維。然后計算每個頭的注意力信息,最終將各個頭的注意力信息進行拼接再次映射成512維。多頭注意力機制的核心是縮放點乘注意力,如式(1)~式(3)所示:
MultiHead=Concat(head1,…,headh)Wo
(1)
(2)
(3)
Transformer模型完全基于注意力機制,為了充分利用位置信息,添加了位置編碼操作。位置編碼采用正余弦位置編碼方式,如式(4)和式(5)所示:
(4)
(5)
其中,pos表示當前詞在該序列中的位置編號,i指向量的某一維度。
Transformer中使用交叉熵作為損失函數(shù),具體地,給定一對平行語料,其中源端X={x1,x2,…,xn},xi表示源端第i個詞對應(yīng)源端詞表的索引,目標端為Y={y1,y2,…,ym},yi表示目標端第i個詞對應(yīng)目標端詞表的索引。在訓練過程中通過最大化似然估計來生成目標端候選詞的最大化概率P(yi|y[1:(i-1)],X)。訓練過程中的損失函數(shù)如式(6)所示:
(6)
其中,m表示目標端句子的長度,P(yi|y4 層間信息傳遞增強的方法
Transformer是多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),在信息傳遞過程中存在信息退化問題。本文利用Transformer中每一層的層間輸出信息和每一個子層的輸出信息融合來增強不同層和子層之間的信息傳遞,使得模型能夠捕獲更豐富的語義信息,彌補逐層之間信息傳遞過程中丟失的信息,進一步減緩多層神經(jīng)網(wǎng)絡(luò)中的信息退化問題。
基準系統(tǒng)Transformer中編碼器和解碼器通常都是6個相同層的堆疊,當前層的輸入僅基于最鄰近的上一層的輸出信息,而忽略了更低層的輸出信息,這樣很容易導致信息傳遞過程中的信息退化問題。針對這一問題,本文提出各層間信息融合傳遞增強的方法。
各層間信息融合傳遞增強的模型結(jié)構(gòu)如圖1所示。圖1中每一個完整層計算之后都有一個流動箭頭表示對當前第i層的輸出信息layeri進行保留并流入未來每一層的輸入中。在進行下一層的計算之前,將保留的低層輸出語義信息[layer1,layer2,…,layeri-1]進行融合,與當前層的輸出通過保留門機制進行連接,共同作為下一層的輸入信息。利用補充的低層信息,能夠增強神經(jīng)網(wǎng)絡(luò)表示特征的捕獲能力,使得神經(jīng)網(wǎng)絡(luò)能夠捕獲更豐富的語義信息。其中保留門控制低層融合后的信息流入下一層計算的保留權(quán)重。本文使用的信息融合的方法包括線性變換融合和算術(shù)平均融合。具體如式(7)~式(9)所示:
fusioni-1=f(layer1,layer2,…,layeri-1)
(7)
g=σ(W[fusioni-1;layeri]+b)
(8)
layeri+1=LN((1-g)*layeri+g*fusioni-1)
(9)
其中,layeri表示第i層的輸出;式(7)表示對保留的信息進行融合;f()表示信息融合函數(shù),比如算術(shù)平均或線性變換等;fusioni-1表示網(wǎng)絡(luò)前i-1層輸出融合后的信息。式(8)表示將融合后的信息與當前層的輸出信息進行連接,為了更好地控制融合信息的保留權(quán)重,通過Sigmoid函數(shù)使其值為0~1;W∈Rdmodel*2為執(zhí)行線性變換的參數(shù)矩陣;b表示偏差。式(9)表示當前層信息和融合后的信息以不同的概率連接;LN()表示層正則化函數(shù);*表示對應(yīng)元素乘積。保留門通過網(wǎng)絡(luò)自主學習之前每一層的保留信息權(quán)重,模型在訓練過程中會自動學習所需比例的之前每一層的輸出信息,控制每一層的信息保留程度。
Figure 1 Structure of layers information transfer enhancement圖1 層間信息傳遞增強結(jié)構(gòu)
本文提出的子層間信息傳遞增強方法如圖2所示。圖2中的虛線部分表示基準系統(tǒng)Transformer原有的殘差網(wǎng)絡(luò),實線部分表示增加的子層信息傳遞增強方法流程。圖2中每一個子層的輸出均有一個實線流動箭頭表示對第i層的第j個子層信息sublayeri,j進行保留并流入未來每一子層的輸入中,在進行下一個子層的計算之前,將前面保留的所有子層的輸出信息[sublayer1,1,sublayer1,2,…,sublayeri,j-1]進行融合;然后通過門機制與當前子層的輸出sublayeri,j進行連接,共同作為下一子層的輸入信息,具體如式(10)~式(12)所示:
fusioni,j-1=
f(sublayer1,1,sublayer1,2,…,sublayeri,j-1)
(10)
g=σ(W[fusioni,j-1,sublayeri,j]+b)
(11)
sublayeri,j+1=LN((1-g)*
sublayeri,j+g*sublayeri,j-1)
(12)
Figure 2 Structure of sublayers information fusion transfer enhancement圖2 子層間信息融合傳遞增強
其中,sublayeri,j表示第i層的第j個子層的輸出;式(10)表示對保留的信息進行融合,f()表示融合函數(shù),fusioni,j-1表示第i層第j-1個子層之前所有子層的輸出融合后的信息。式(11)表示將融合后的信息與當前子層的輸出信息進行連接,為了控制融合后的信息保留權(quán)重,使用Sigmoid函數(shù)將其數(shù)值限制于0~1;W∈Rdmodel*2是可訓練權(quán)重矩陣,通過網(wǎng)絡(luò)自動學習融合信息的保留權(quán)重。式(12)表示將融合后的信息和當前的輸出信息以一定的概率進行連接。
此外,為了驗證模型低層的輸出在層與層之間信息流動中的重要性,基于基準系統(tǒng),對所有保留的子層信息 [sublayer1,1,…,sublayeri,j-1]進行下一層運算時沒有及時添加,而是僅在最后一層的輸出上進行權(quán)重連接的實驗,本文稱之為子層信息連接,以驗證逐層信息增強的重要性,其計算方法如式(13)~式(16)所示:
sublayers=
[sublayer1,1,sublayer1,2,…,sublayeri,j-1]
(13)
fusion=f(sublayers)
(14)
g=σ(W[fusion,sublayert-1,3]+b)
(15)
layert=LN((1-g)*layert-1,3+g*fusion)
(16)
其中,t為解碼器的堆疊層數(shù),sublayers為保留的解碼器端所有子層的輸出信息,f()為融合函數(shù),layert為解碼器端最后一層的輸出。
本文用中英和德英翻譯任務(wù)實驗來驗證所提方法的有效性。
中英翻譯任務(wù)中使用的訓練數(shù)據(jù)集是從LDC(Linguistic Data Consortium)里抽取的125萬句中英平行語句對,測試集采用的是美國國家標準與技術(shù)研究院2002年的數(shù)據(jù)集NIST02、NIST03、 NIST04、 NIST05 和 NIST08,驗證集采用的是NIST06,分別對中英語料進行字節(jié)對BPE(Byte Pair Encoder)編碼處理[23],中文和英文分別使用BPE表,表的大小均為32 000,中文設(shè)置詞表大小為4萬,英文設(shè)置詞表大小為3萬,不在詞表中的低頻詞使用特殊符號“〈UNK〉”替換。
德英翻譯任務(wù)中使用的數(shù)據(jù)是IWSLT2016平行語料,訓練集包含18.5萬個口語語料平行句對,驗證集包含8 415個平行語句對,測試集包括7 883個平行語句對,分別對德英進行BPE編碼處理[23],表的大小均為32 000,德文和英文詞表大小均設(shè)置為3萬,不在詞表中的低頻詞使用特殊符號“〈UNK〉”替換。
本文所有實驗的實現(xiàn)都是基于開源代碼fairseq[24],將訓練模型設(shè)置為Transformer。所有模型的訓練和測試均是基于NVIDIA GeForce GTX 1080 GPU,設(shè)置一個批次中最多包含5 000個詞,在所有的實驗中均使用相同的超參數(shù),采用Adam[25]優(yōu)化器和逆平方根學習率計劃,初始化學習率為0.000 5,β1=0.9,β2=0.99,ε=10-9,在訓練期間,本文中所有相關(guān)實驗均設(shè)置丟棄概率為0.3,并且設(shè)置標簽平滑[26]的值為0.1。在解碼的時候,采用束搜索(Beam Search)的解碼方式,搜索寬度設(shè)置為5,其他實驗設(shè)置與文獻[7]的相同。
5.3.1 中英翻譯實驗結(jié)果分析
中英翻譯任務(wù)的實驗結(jié)果如表1所示。從表1中可以看出,基準系統(tǒng)在5個測試集上的平均BLEU得分為44.47。
僅在解碼器端添加層間信息和子層間信息增強的平均得分分別為44.81和44.98,相比于基準系統(tǒng)分別提升了0.34和0.51,這說明子層信息增強方法優(yōu)于層間信息增強方法。此外,對比層間信息增強和子層間信息增強的不同的信息融合方法,可以看出,算術(shù)平均融合的效果更優(yōu)。
僅在編碼器端添加層間信息和子層間信息增強的平均得分分別為44.65和44.73,該實驗結(jié)果相比于基準系統(tǒng)略微有所提升。但是,對比實驗結(jié)果仍可說明,子層信息增強方法更優(yōu)于層間信息增強方法,并且,算術(shù)平均融合的效果更優(yōu),這與僅在解碼器端添加信息增強得到的結(jié)果一致。
在編碼器和解碼器端分別添加層間信息和子層間信息增強的平均得分分別為45.10和45.13,相比于基準系統(tǒng)分別提升了0.63和0.66,再次表明子層信息增強方法優(yōu)于層間信息增強方法,算術(shù)平均融合的效果更好。
為了對比信息傳遞增強和殘差網(wǎng)絡(luò)在多層神經(jīng)網(wǎng)絡(luò)中的影響,本文實驗移除了殘差網(wǎng)絡(luò)僅使用子層間信息傳遞增強方法,實驗結(jié)果如表1中第2行所示。從表1中可以看出,子層間信息傳遞增強和殘差網(wǎng)絡(luò)的平均分相差0.02,結(jié)果幾乎持平,這說明了子層信息傳遞增強方法的有效性。
Table 1 BLEU scores of Chinese-English translation tasks表1 中英翻譯任務(wù)的BLEU得分
5.3.2 德英翻譯實驗結(jié)果分析
德英翻譯任務(wù)的實驗結(jié)果如表2所示。從表2中可以看出,基準系統(tǒng)在測試集上的BLEU得分為34.50。僅在解碼器端添加層間信息和子層間信息增強的得分為34.61和34.73,相比于基準系統(tǒng)分別提升了0.11和0.23。僅在編碼器端添加層間信息和子層間信息增強的得分為34.56和34.68,實驗結(jié)果略微高于基準系統(tǒng)的。在編碼器端和解碼器端分別添加層間信息和子層間信息增強平均得分分別為34.75和34.92,較基準系統(tǒng)分別提升了0.25和0.42。
Table 2 BLEU socres of German-English translation tasks表2 德英翻譯任務(wù)的BLEU得分
通過對中英翻譯和德英翻譯的實驗結(jié)果的對比和分析,發(fā)現(xiàn)子層間的輸出信息對模型的語義信息補充得更加充分,這與本文的直觀猜想一致,同樣也說明了殘差網(wǎng)絡(luò)的重要性。此外,通過實驗觀察不同的信息融合方法可以得出,利用算術(shù)平均方法進行信息融合的效果更好。
為了進一步分析不同的方法對于不同句長輸入的翻譯質(zhì)量,本文將所有的測試集根據(jù)句子長度分為6個不同的部分,分別測試了不同系統(tǒng)對不同長度句子的翻譯效果。實驗結(jié)果如表3所示,其中句長為21~30的句子共有1 683句,句長為10~20和30~40的分別有1 635句和1 222句。從表3中可以看出,子層間信息融合傳遞增強在所有句長上的測試水平均高于基準系統(tǒng)的,其中句長大于50的句子中BLEU得分提升了0.74,可見子層間信息融合傳遞增強處理較長的句子更具優(yōu)勢。
表4所示為從測試集中隨機抽取的句子和不同的方法得到的相應(yīng)的譯文,對句子進行分析,基準系統(tǒng)中丟失了原文中“從中受益”的翻譯,與之相比,加入了本文提出的各層間信息融合傳遞增強和各子層間信息融合傳遞增強的系統(tǒng)分別翻譯為“benefited from it”和“benefited”,翻譯準確無誤并和參考譯文相符。對于較長的句子,基準系統(tǒng)漏翻了“凌晨”一詞,而加入本文方法的系統(tǒng),分別將其翻譯為”daybreak”和”early in the morning”,與參考譯文相符,并且翻譯無誤。
本文提出層間信息融合傳遞增強和子層間信息融合傳遞增強的方法,在殘差網(wǎng)絡(luò)的基礎(chǔ)上能夠進一步補充多層神經(jīng)網(wǎng)絡(luò)逐層傳遞過程中的退化信息。通過保留之前所有層或子層的輸出信息并將保留的信息使用不同的方法進行融合,再經(jīng)過一個“保留門”機制來控制之前所有層或子層的輸出融合后的信息保留的權(quán)重比例,將融合后的信息與當前層或子層的輸出連接,共同作為下一層或下一子層網(wǎng)絡(luò)的輸入,使得多層網(wǎng)絡(luò)中層與層之間的信息傳遞更加充分,優(yōu)化了神經(jīng)網(wǎng)絡(luò)的信息捕獲能力,增強了逐層信息的傳遞。
未來的工作中,將探索更加復雜的連接方式,使得本文方法的效果能夠得到進一步提升。最后,感謝“江蘇高校優(yōu)勢學科建設(shè)工程資助項目”對本文的支持。
Table 3 BLEU scores of different sentence lengths in Chinese-English translation systems表3 中英翻譯系統(tǒng)不同句子長度的BLEU得分
Table 4 Translation comparison of different systems表4 不同系統(tǒng)的譯文對比