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