李夢潔,董 巒
(新疆農業大學 計算機與信息工程學院,新疆 烏魯木齊 830000)
在機器翻譯中,如何選擇更有效率更適合翻譯的模型一直都是深度學習中研究的熱點之一。近年來,很多深度學習、人工智能領域的研究者不斷探索改進實現機器翻譯的相關模型,反復進行了大量的實驗。隨著人工智能的發展,機器翻譯相關技術得到了不斷的改進創新,使得機器翻譯走向了更前沿的水平。
Treisman和Gelade提出了注意力機制方法[1],它是可以模擬人腦注意力的模型,并可通過計算注意力的概率分布來突顯輸入中某一個輸入對于輸出的影響作用。簡單來說,就是當人們觀察一幅圖片時,首先注意到的是圖片中的某一部分,而不是瀏覽全部內容,之后在觀察的過程中依次調整注意的聚焦點。這種注意力機制的方法對于傳統模型具有良好的優化作用。因此,文中在序列對序列網絡模型上運用注意力機制,以提高序列對序列的自然方式下的系統表現。
機器翻譯(machine translation)即自動翻譯,是在自然語言方面實現兩種語言之間相互轉換功能的過程[2]。即研究怎樣通過計算機來實現多個自然語言之間的轉換,是人工智能的終極目標之一,也是自然語言處理領域尤為重要的研究方向之一[3]。機器翻譯技術的持續發展,特別是近年來涌現的神經機器翻譯,使機器譯文質量明顯提高,也迎來了機器翻譯應用的發展高潮。互聯網社交、跨境電商和旅游以及更多細分垂直領域中,機器翻譯正在幫助人們跨越語言障礙,應對大數據翻譯需求。現如今,機器翻譯技術在不斷完善,并在政治、經濟、文化方面的交流中起到了至關重要的作用。
深度學習是機器學習的一部分,是機器學習中一種基于對數據進行表征學習的方法。它可以模仿人的大腦結構,高效處理特別復雜的輸入數據,提取數據中的抽象特征,達到智能學習的效果[4]。深度學習的好處是用非監督式或半監督式的特征學習和分層特征提取高效算法來替代手工獲取特征。
目前研究人員正在使用的深度學習框架有TensorFlow、PyTorch、Caffe、Theano、Deeplearning4j、ConvNetJS、MXNet、Chainer等,深度學習框架在很多領域應用廣泛,如語音識別、自然語言處理等,并獲取了極好的效果。
文中實驗使用的深度學習框架是PyTorch。PyTorch是Facebook推出的人工智能學習系統,雖然底層優化是在C的基礎上實現,但基本所有框架都是用Python編寫,因此源碼看起來較簡潔明了。相對于其他框架,它有可以支持GPU、創建動態神經網絡、Python優先等特點。相對于Tensorflow,PyTorch更加簡潔直觀,因此在訓練機器翻譯模型的實驗上選用該框架。
統計機器翻譯(statistical machine translation,SMT)的核心思想如下:在建立一定數據的平行語料庫后,對其進行統計分析,從而構建相關模型來進行機器翻譯。統計機器翻譯步驟如下:首先為語言的產生構造合理的統計模型,其次定義要估計的模型參數,最后設計參數估計算法。
假設用字母y代表源語句,那么機器翻譯的模型會在目標語句中找尋一個概率相對最大的句子m,m表示為:
m=argmaxep(m|y)
(1)
神經機器翻譯(neural machine translation)是一種新興的機器翻譯方法[5-7]。與傳統的包含許多單獨調整的小組件的基于短語的翻譯系統[8]不同的是,神經機器翻譯試圖建立和訓練一個單獨的大的神經網絡,這樣就可以讀取一個句子并且能輸出一個正確的翻譯[9]。
目前最受研究者歡迎的是基于人工神經網絡的機器翻譯:一個通過訓練可以從語料庫中學習并由很多神經元組成的深度神經網絡。實現兩個語言之間的翻譯即為先輸入源語言,在神經網絡中訓練后得出目標語言的過程。通過模擬人腦能達到先理解后翻譯的功能。這種翻譯方法最大的優勢是翻譯出來的語句較為通順,比較符合語法規范,便于大眾理解。相比其他的翻譯技術來說質量上有了顯著提高。
最常用的神經網絡是循環神經網絡(recurrent neural network,RNN)。該網絡通過學習能夠將當前詞的歷史信息存儲起來,以詞的整個上下文作為依據,來預測下一個詞出現的概率,克服n-gram語言模型無法利用語句中長距離上下文信息的缺點[10]。循環神經網絡由Socher在句法解析時采用[11],Irsoy和Cardie將循環神經網絡進行深層組合,成為一個典型的三層結構的深度學習模型[12]。循環神經網絡被證明在解決序列化的問題上效果突出,能夠用到上下文的信息,在機器翻譯等領域取得了不錯的效果。但是循環神經網絡在求解過程中存在梯度爆炸和消失問題[13],并且對長文本的效果不佳。后期提出的長短時記憶神經網絡(long short-term memory,LSTM)有效地解決了長序列問題。
傳統的神經網絡結構是由輸入層、隱藏層和輸出層組成的。層與層之間有密切的聯系,但每層之間的節點沒有連接。RNN即一個序列當前的輸出與前面的輸出有關,具體的表現形式如圖1所示。

圖1 RNN語言模型結構
注意力(attention)是指人的心理活動指向和集中于某種事物的能力。注意力機制(attention mechanism)是基于人類的視覺注意力機制。簡單來說,視覺注意力機制就是:當人們觀察一幅圖片時,首先注意到的是圖片中的某一部分,而不是瀏覽全部內容,之后在觀察的過程中調整注意的聚焦點。因此,神經網絡領域中的注意力機制就是通過這個原理得來的。
在普通的編碼解碼(encoder-decoder)網絡結構中把輸入序列的所有重點信息壓縮到一個固定長度的向量,但操作過程中有信息損失,在處理較長句子特別是超過固定長度的句子時效果會越來越差,模型能力會逐漸降低。隨著句子長度的増加,encoder-decoder神經網絡的性能也跟著不斷變差[7]。為了解決這個問題,Yoshua Bengio等在神經網絡中通過模擬注意力機制實現英語到法語的翻譯,輸出序列中每輸出一個元素,都通過權重參考輸入序列信息,這樣就可實現輸入序列與輸出序列之間的對齊。注意力機制的核心思想是:將輸入的源語句傳入編碼器后由編碼器生成一個輸出,此時給輸出加入權重向量后作為解碼器的輸入。注意力機制分為隨機注意(stochastic attention)機制和軟注意(soft attention)機制[14]。深度學習中的注意力機制更像是存儲器訪問,在決定權重大小前,需要訪問輸入序列隱藏狀態的所有細節。
該實驗使用的是由兩層循環神經網絡組成的序列對序列網絡(sequence to sequence network)模型,同時在模型中加入了注意力機制(attention mechanism)。
實驗使用英法數據集進行模型的訓練和測試,數據形式為英法的對照語句對。將處理好的數據導入到語言模型包中后開始訓練該模型。
該實驗的技術路線圖如圖2所示。

圖2 技術路線圖
實驗將輸入的數據序列定義為X,其中每一個單詞為x。那么一個輸入序列語句就表示為(x1,x2,…,xT)。通過RNN模型翻譯后得出的輸出語句序列定義為Y,那么一個輸出序列語句就表示為(y1,y2,…,yT)。該實驗使用的序列對序列網絡是由2個隱藏層、256個隱藏節點、2個RNNs組成的神經網絡模型,用來訓練處理好的數據文本,以達到英語和法語相互翻譯的效果。
從處理數據開始,實驗的步驟依次為:
第一步:將輸入語句和目標語句在網絡層中加入索引,并將生僻字單獨存儲在一個字典里;
第二步:將以Unicode字符形式存儲的數據文件轉換成以ASCII形式存儲的文件,并且使所有內容小寫,同時修剪大部分標點符號;
第三步:將存儲數據的文件分成行,然后拆分成對,分別為英語對照法語的形式,并根據數據的長度和內容標準化文本;
第四步:將數據導入模型中進行訓練。
此次實驗使用序列到序列模型(The seq2seq model)。該模型是由兩個RNN網絡即encoder和decoder組成,編碼器讀取輸入序列X并且輸出單個向量,解碼器讀取該向量以產生輸出序列Y。其中,將編碼器encoder作為一個網絡,將解碼器decoder作為另一個網絡,并將注意力機制加入decoder中。其模型結構如圖3所示。

圖3 序列到序列模型結構
在訓練數據時,首先通過編碼器輸入源語句序列(x1,x2,…,xT),然后解碼器會給第一個輸入語句一個開始符號
ht=sigm(Whxxt+Whhht-1)
(2)
經過RNN模型產生的輸出序列為(y1,y2,…,yT)。其過程通過迭代式2和式3完成:
yt=Wytht
(3)
通過訓練模型得到了訓練結果和翻譯結果。數據經過處理后,最終篩選出75 000個詞進行實驗,通過對比輸出的目標語句和準確語句可以看出,翻譯效果還是不錯的。
訓練語句的進度和平均損失如圖4所示。
以圖5到圖6兩個簡單的句子為例,x和y軸分別表示源語句和目標語句的單詞,其中每一個像素代表的是源語句對于目標語句的權重,即為注意力機制的表現。右側條狀圖從0.0到1.0為權重大小(0.0表現為黑色,1.0表現為白色)。

圖4 訓練狀態表

圖5 訓練語句(a)

圖6 訓練語句(b)
機器翻譯的評價標準有BLEU[15]、NIST[16]、METEOR[17]和TER[18],以上用來評價機器翻譯的標準都是用對比機器翻譯譯文和人工譯文的方法來衡量機器翻譯的質量,定量模型的質量和翻譯結果。實驗使用BLEU作為評價標準,以衡量翻譯的準確率和詞錯率。
BLEU的取值范圍是0到1,數值越接近1說明機器翻譯的效果越好、詞錯率越低。實驗使用的是英法數據集,將預測翻譯出的數據與參考譯文數據分別存儲在不同的文檔里,通過計算Bleu1、Bleu2、Bleu3、Bleu4的值來分析翻譯質量。取其中300個語句進行計算,得出的結果如表1所示。
表中gram代表詞的個數,當gram為4時BLEU值相對較低,但詞數多的情況下準確率高,因此選擇BLEU4作為最終評價值。由BLEU4的值可以看出,評價值相對較低,說明預測翻譯效果不理想。通過分析實驗結果,主要存在的問題有:

表1 300個語句得出的BLEU值
(1)模型架構相對較簡單,RNN中隱藏層數較少,訓練不到位。
(2)數據集數量較少,方向單一,使模型不能很好地學習,導致翻譯效果不佳。
在英法兩種語言之間的翻譯上使用了基于神經網絡的RNN模型,用到的數據相對較少,因此模型的層數和規模也相對較少。通過對數據的訓練和測試達到測試RNN模型的效果。同時,通過訓練RNN模型并觀察它的準確率,來不斷改進模型,從而達到更好的預期效果。此次實驗用到的數據具有一定的局限性,因此在準確率方面還有一定的欠缺。但是對于模型的研究和探討有一定的作用。