李夢(mèng)潔,董 巒
(新疆農(nóng)業(yè)大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,新疆 烏魯木齊 830000)
在機(jī)器翻譯中,如何選擇更有效率更適合翻譯的模型一直都是深度學(xué)習(xí)中研究的熱點(diǎn)之一。近年來(lái),很多深度學(xué)習(xí)、人工智能領(lǐng)域的研究者不斷探索改進(jìn)實(shí)現(xiàn)機(jī)器翻譯的相關(guān)模型,反復(fù)進(jìn)行了大量的實(shí)驗(yàn)。隨著人工智能的發(fā)展,機(jī)器翻譯相關(guān)技術(shù)得到了不斷的改進(jìn)創(chuàng)新,使得機(jī)器翻譯走向了更前沿的水平。
Treisman和Gelade提出了注意力機(jī)制方法[1],它是可以模擬人腦注意力的模型,并可通過(guò)計(jì)算注意力的概率分布來(lái)突顯輸入中某一個(gè)輸入對(duì)于輸出的影響作用。簡(jiǎn)單來(lái)說(shuō),就是當(dāng)人們觀察一幅圖片時(shí),首先注意到的是圖片中的某一部分,而不是瀏覽全部?jī)?nèi)容,之后在觀察的過(guò)程中依次調(diào)整注意的聚焦點(diǎn)。這種注意力機(jī)制的方法對(duì)于傳統(tǒng)模型具有良好的優(yōu)化作用。因此,文中在序列對(duì)序列網(wǎng)絡(luò)模型上運(yùn)用注意力機(jī)制,以提高序列對(duì)序列的自然方式下的系統(tǒng)表現(xiàn)。
機(jī)器翻譯(machine translation)即自動(dòng)翻譯,是在自然語(yǔ)言方面實(shí)現(xiàn)兩種語(yǔ)言之間相互轉(zhuǎn)換功能的過(guò)程[2]。即研究怎樣通過(guò)計(jì)算機(jī)來(lái)實(shí)現(xiàn)多個(gè)自然語(yǔ)言之間的轉(zhuǎn)換,是人工智能的終極目標(biāo)之一,也是自然語(yǔ)言處理領(lǐng)域尤為重要的研究方向之一[3]。機(jī)器翻譯技術(shù)的持續(xù)發(fā)展,特別是近年來(lái)涌現(xiàn)的神經(jīng)機(jī)器翻譯,使機(jī)器譯文質(zhì)量明顯提高,也迎來(lái)了機(jī)器翻譯應(yīng)用的發(fā)展高潮?;ヂ?lián)網(wǎng)社交、跨境電商和旅游以及更多細(xì)分垂直領(lǐng)域中,機(jī)器翻譯正在幫助人們跨越語(yǔ)言障礙,應(yīng)對(duì)大數(shù)據(jù)翻譯需求?,F(xiàn)如今,機(jī)器翻譯技術(shù)在不斷完善,并在政治、經(jīng)濟(jì)、文化方面的交流中起到了至關(guān)重要的作用。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一部分,是機(jī)器學(xué)習(xí)中一種基于對(duì)數(shù)據(jù)進(jìn)行表征學(xué)習(xí)的方法。它可以模仿人的大腦結(jié)構(gòu),高效處理特別復(fù)雜的輸入數(shù)據(jù),提取數(shù)據(jù)中的抽象特征,達(dá)到智能學(xué)習(xí)的效果[4]。深度學(xué)習(xí)的好處是用非監(jiān)督式或半監(jiān)督式的特征學(xué)習(xí)和分層特征提取高效算法來(lái)替代手工獲取特征。
目前研究人員正在使用的深度學(xué)習(xí)框架有TensorFlow、PyTorch、Caffe、Theano、Deeplearning4j、ConvNetJS、MXNet、Chainer等,深度學(xué)習(xí)框架在很多領(lǐng)域應(yīng)用廣泛,如語(yǔ)音識(shí)別、自然語(yǔ)言處理等,并獲取了極好的效果。
文中實(shí)驗(yàn)使用的深度學(xué)習(xí)框架是PyTorch。PyTorch是Facebook推出的人工智能學(xué)習(xí)系統(tǒng),雖然底層優(yōu)化是在C的基礎(chǔ)上實(shí)現(xiàn),但基本所有框架都是用Python編寫(xiě),因此源碼看起來(lái)較簡(jiǎn)潔明了。相對(duì)于其他框架,它有可以支持GPU、創(chuàng)建動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)、Python優(yōu)先等特點(diǎn)。相對(duì)于Tensorflow,PyTorch更加簡(jiǎn)潔直觀,因此在訓(xùn)練機(jī)器翻譯模型的實(shí)驗(yàn)上選用該框架。
統(tǒng)計(jì)機(jī)器翻譯(statistical machine translation,SMT)的核心思想如下:在建立一定數(shù)據(jù)的平行語(yǔ)料庫(kù)后,對(duì)其進(jìn)行統(tǒng)計(jì)分析,從而構(gòu)建相關(guān)模型來(lái)進(jìn)行機(jī)器翻譯。統(tǒng)計(jì)機(jī)器翻譯步驟如下:首先為語(yǔ)言的產(chǎn)生構(gòu)造合理的統(tǒng)計(jì)模型,其次定義要估計(jì)的模型參數(shù),最后設(shè)計(jì)參數(shù)估計(jì)算法。
假設(shè)用字母y代表源語(yǔ)句,那么機(jī)器翻譯的模型會(huì)在目標(biāo)語(yǔ)句中找尋一個(gè)概率相對(duì)最大的句子m,m表示為:
m=argmaxep(m|y)
(1)
神經(jīng)機(jī)器翻譯(neural machine translation)是一種新興的機(jī)器翻譯方法[5-7]。與傳統(tǒng)的包含許多單獨(dú)調(diào)整的小組件的基于短語(yǔ)的翻譯系統(tǒng)[8]不同的是,神經(jīng)機(jī)器翻譯試圖建立和訓(xùn)練一個(gè)單獨(dú)的大的神經(jīng)網(wǎng)絡(luò),這樣就可以讀取一個(gè)句子并且能輸出一個(gè)正確的翻譯[9]。
目前最受研究者歡迎的是基于人工神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯:一個(gè)通過(guò)訓(xùn)練可以從語(yǔ)料庫(kù)中學(xué)習(xí)并由很多神經(jīng)元組成的深度神經(jīng)網(wǎng)絡(luò)。實(shí)現(xiàn)兩個(gè)語(yǔ)言之間的翻譯即為先輸入源語(yǔ)言,在神經(jīng)網(wǎng)絡(luò)中訓(xùn)練后得出目標(biāo)語(yǔ)言的過(guò)程。通過(guò)模擬人腦能達(dá)到先理解后翻譯的功能。這種翻譯方法最大的優(yōu)勢(shì)是翻譯出來(lái)的語(yǔ)句較為通順,比較符合語(yǔ)法規(guī)范,便于大眾理解。相比其他的翻譯技術(shù)來(lái)說(shuō)質(zhì)量上有了顯著提高。
最常用的神經(jīng)網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)。該網(wǎng)絡(luò)通過(guò)學(xué)習(xí)能夠?qū)?dāng)前詞的歷史信息存儲(chǔ)起來(lái),以詞的整個(gè)上下文作為依據(jù),來(lái)預(yù)測(cè)下一個(gè)詞出現(xiàn)的概率,克服n-gram語(yǔ)言模型無(wú)法利用語(yǔ)句中長(zhǎng)距離上下文信息的缺點(diǎn)[10]。循環(huán)神經(jīng)網(wǎng)絡(luò)由Socher在句法解析時(shí)采用[11],Irsoy和Cardie將循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行深層組合,成為一個(gè)典型的三層結(jié)構(gòu)的深度學(xué)習(xí)模型[12]。循環(huán)神經(jīng)網(wǎng)絡(luò)被證明在解決序列化的問(wèn)題上效果突出,能夠用到上下文的信息,在機(jī)器翻譯等領(lǐng)域取得了不錯(cuò)的效果。但是循環(huán)神經(jīng)網(wǎng)絡(luò)在求解過(guò)程中存在梯度爆炸和消失問(wèn)題[13],并且對(duì)長(zhǎng)文本的效果不佳。后期提出的長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(long short-term memory,LSTM)有效地解決了長(zhǎng)序列問(wèn)題。
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是由輸入層、隱藏層和輸出層組成的。層與層之間有密切的聯(lián)系,但每層之間的節(jié)點(diǎn)沒(méi)有連接。RNN即一個(gè)序列當(dāng)前的輸出與前面的輸出有關(guān),具體的表現(xiàn)形式如圖1所示。
圖1 RNN語(yǔ)言模型結(jié)構(gòu)
注意力(attention)是指人的心理活動(dòng)指向和集中于某種事物的能力。注意力機(jī)制(attention mechanism)是基于人類的視覺(jué)注意力機(jī)制。簡(jiǎn)單來(lái)說(shuō),視覺(jué)注意力機(jī)制就是:當(dāng)人們觀察一幅圖片時(shí),首先注意到的是圖片中的某一部分,而不是瀏覽全部?jī)?nèi)容,之后在觀察的過(guò)程中調(diào)整注意的聚焦點(diǎn)。因此,神經(jīng)網(wǎng)絡(luò)領(lǐng)域中的注意力機(jī)制就是通過(guò)這個(gè)原理得來(lái)的。
在普通的編碼解碼(encoder-decoder)網(wǎng)絡(luò)結(jié)構(gòu)中把輸入序列的所有重點(diǎn)信息壓縮到一個(gè)固定長(zhǎng)度的向量,但操作過(guò)程中有信息損失,在處理較長(zhǎng)句子特別是超過(guò)固定長(zhǎng)度的句子時(shí)效果會(huì)越來(lái)越差,模型能力會(huì)逐漸降低。隨著句子長(zhǎng)度的増加,encoder-decoder神經(jīng)網(wǎng)絡(luò)的性能也跟著不斷變差[7]。為了解決這個(gè)問(wèn)題,Yoshua Bengio等在神經(jīng)網(wǎng)絡(luò)中通過(guò)模擬注意力機(jī)制實(shí)現(xiàn)英語(yǔ)到法語(yǔ)的翻譯,輸出序列中每輸出一個(gè)元素,都通過(guò)權(quán)重參考輸入序列信息,這樣就可實(shí)現(xiàn)輸入序列與輸出序列之間的對(duì)齊。注意力機(jī)制的核心思想是:將輸入的源語(yǔ)句傳入編碼器后由編碼器生成一個(gè)輸出,此時(shí)給輸出加入權(quán)重向量后作為解碼器的輸入。注意力機(jī)制分為隨機(jī)注意(stochastic attention)機(jī)制和軟注意(soft attention)機(jī)制[14]。深度學(xué)習(xí)中的注意力機(jī)制更像是存儲(chǔ)器訪問(wèn),在決定權(quán)重大小前,需要訪問(wèn)輸入序列隱藏狀態(tài)的所有細(xì)節(jié)。
該實(shí)驗(yàn)使用的是由兩層循環(huán)神經(jīng)網(wǎng)絡(luò)組成的序列對(duì)序列網(wǎng)絡(luò)(sequence to sequence network)模型,同時(shí)在模型中加入了注意力機(jī)制(attention mechanism)。
實(shí)驗(yàn)使用英法數(shù)據(jù)集進(jìn)行模型的訓(xùn)練和測(cè)試,數(shù)據(jù)形式為英法的對(duì)照語(yǔ)句對(duì)。將處理好的數(shù)據(jù)導(dǎo)入到語(yǔ)言模型包中后開(kāi)始訓(xùn)練該模型。
該實(shí)驗(yàn)的技術(shù)路線圖如圖2所示。
圖2 技術(shù)路線圖
實(shí)驗(yàn)將輸入的數(shù)據(jù)序列定義為X,其中每一個(gè)單詞為x。那么一個(gè)輸入序列語(yǔ)句就表示為(x1,x2,…,xT)。通過(guò)RNN模型翻譯后得出的輸出語(yǔ)句序列定義為Y,那么一個(gè)輸出序列語(yǔ)句就表示為(y1,y2,…,yT)。該實(shí)驗(yàn)使用的序列對(duì)序列網(wǎng)絡(luò)是由2個(gè)隱藏層、256個(gè)隱藏節(jié)點(diǎn)、2個(gè)RNNs組成的神經(jīng)網(wǎng)絡(luò)模型,用來(lái)訓(xùn)練處理好的數(shù)據(jù)文本,以達(dá)到英語(yǔ)和法語(yǔ)相互翻譯的效果。
從處理數(shù)據(jù)開(kāi)始,實(shí)驗(yàn)的步驟依次為:
第一步:將輸入語(yǔ)句和目標(biāo)語(yǔ)句在網(wǎng)絡(luò)層中加入索引,并將生僻字單獨(dú)存儲(chǔ)在一個(gè)字典里;
第二步:將以Unicode字符形式存儲(chǔ)的數(shù)據(jù)文件轉(zhuǎn)換成以ASCII形式存儲(chǔ)的文件,并且使所有內(nèi)容小寫(xiě),同時(shí)修剪大部分標(biāo)點(diǎn)符號(hào);
第三步:將存儲(chǔ)數(shù)據(jù)的文件分成行,然后拆分成對(duì),分別為英語(yǔ)對(duì)照法語(yǔ)的形式,并根據(jù)數(shù)據(jù)的長(zhǎng)度和內(nèi)容標(biāo)準(zhǔn)化文本;
第四步:將數(shù)據(jù)導(dǎo)入模型中進(jìn)行訓(xùn)練。
此次實(shí)驗(yàn)使用序列到序列模型(The seq2seq model)。該模型是由兩個(gè)RNN網(wǎng)絡(luò)即encoder和decoder組成,編碼器讀取輸入序列X并且輸出單個(gè)向量,解碼器讀取該向量以產(chǎn)生輸出序列Y。其中,將編碼器encoder作為一個(gè)網(wǎng)絡(luò),將解碼器decoder作為另一個(gè)網(wǎng)絡(luò),并將注意力機(jī)制加入decoder中。其模型結(jié)構(gòu)如圖3所示。
圖3 序列到序列模型結(jié)構(gòu)
在訓(xùn)練數(shù)據(jù)時(shí),首先通過(guò)編碼器輸入源語(yǔ)句序列(x1,x2,…,xT),然后解碼器會(huì)給第一個(gè)輸入語(yǔ)句一個(gè)開(kāi)始符號(hào)
ht=sigm(Whxxt+Whhht-1)
(2)
經(jīng)過(guò)RNN模型產(chǎn)生的輸出序列為(y1,y2,…,yT)。其過(guò)程通過(guò)迭代式2和式3完成:
yt=Wytht
(3)
通過(guò)訓(xùn)練模型得到了訓(xùn)練結(jié)果和翻譯結(jié)果。數(shù)據(jù)經(jīng)過(guò)處理后,最終篩選出75 000個(gè)詞進(jìn)行實(shí)驗(yàn),通過(guò)對(duì)比輸出的目標(biāo)語(yǔ)句和準(zhǔn)確語(yǔ)句可以看出,翻譯效果還是不錯(cuò)的。
訓(xùn)練語(yǔ)句的進(jìn)度和平均損失如圖4所示。
以圖5到圖6兩個(gè)簡(jiǎn)單的句子為例,x和y軸分別表示源語(yǔ)句和目標(biāo)語(yǔ)句的單詞,其中每一個(gè)像素代表的是源語(yǔ)句對(duì)于目標(biāo)語(yǔ)句的權(quán)重,即為注意力機(jī)制的表現(xiàn)。右側(cè)條狀圖從0.0到1.0為權(quán)重大小(0.0表現(xiàn)為黑色,1.0表現(xiàn)為白色)。
圖4 訓(xùn)練狀態(tài)表
圖5 訓(xùn)練語(yǔ)句(a)
圖6 訓(xùn)練語(yǔ)句(b)
機(jī)器翻譯的評(píng)價(jià)標(biāo)準(zhǔn)有BLEU[15]、NIST[16]、METEOR[17]和TER[18],以上用來(lái)評(píng)價(jià)機(jī)器翻譯的標(biāo)準(zhǔn)都是用對(duì)比機(jī)器翻譯譯文和人工譯文的方法來(lái)衡量機(jī)器翻譯的質(zhì)量,定量模型的質(zhì)量和翻譯結(jié)果。實(shí)驗(yàn)使用BLEU作為評(píng)價(jià)標(biāo)準(zhǔn),以衡量翻譯的準(zhǔn)確率和詞錯(cuò)率。
BLEU的取值范圍是0到1,數(shù)值越接近1說(shuō)明機(jī)器翻譯的效果越好、詞錯(cuò)率越低。實(shí)驗(yàn)使用的是英法數(shù)據(jù)集,將預(yù)測(cè)翻譯出的數(shù)據(jù)與參考譯文數(shù)據(jù)分別存儲(chǔ)在不同的文檔里,通過(guò)計(jì)算Bleu1、Bleu2、Bleu3、Bleu4的值來(lái)分析翻譯質(zhì)量。取其中300個(gè)語(yǔ)句進(jìn)行計(jì)算,得出的結(jié)果如表1所示。
表中g(shù)ram代表詞的個(gè)數(shù),當(dāng)gram為4時(shí)BLEU值相對(duì)較低,但詞數(shù)多的情況下準(zhǔn)確率高,因此選擇BLEU4作為最終評(píng)價(jià)值。由BLEU4的值可以看出,評(píng)價(jià)值相對(duì)較低,說(shuō)明預(yù)測(cè)翻譯效果不理想。通過(guò)分析實(shí)驗(yàn)結(jié)果,主要存在的問(wèn)題有:
表1 300個(gè)語(yǔ)句得出的BLEU值
(1)模型架構(gòu)相對(duì)較簡(jiǎn)單,RNN中隱藏層數(shù)較少,訓(xùn)練不到位。
(2)數(shù)據(jù)集數(shù)量較少,方向單一,使模型不能很好地學(xué)習(xí),導(dǎo)致翻譯效果不佳。
在英法兩種語(yǔ)言之間的翻譯上使用了基于神經(jīng)網(wǎng)絡(luò)的RNN模型,用到的數(shù)據(jù)相對(duì)較少,因此模型的層數(shù)和規(guī)模也相對(duì)較少。通過(guò)對(duì)數(shù)據(jù)的訓(xùn)練和測(cè)試達(dá)到測(cè)試RNN模型的效果。同時(shí),通過(guò)訓(xùn)練RNN模型并觀察它的準(zhǔn)確率,來(lái)不斷改進(jìn)模型,從而達(dá)到更好的預(yù)期效果。此次實(shí)驗(yàn)用到的數(shù)據(jù)具有一定的局限性,因此在準(zhǔn)確率方面還有一定的欠缺。但是對(duì)于模型的研究和探討有一定的作用。