宋純花
(上海建橋學院,上海 201306)
機器翻譯[1]是自然語言處理中早期和最迷人的領域之一,旨在開發(fā)能夠將一種人類語言翻譯成另一種語言的系統(tǒng),消除語言障礙。文獻[2]提出了一種使用統(tǒng)計機器翻譯方法的雙向機器翻譯系統(tǒng),該系統(tǒng)在調整后的BLEU 分數(shù)為37.10。文獻[3]提出了序列到序列的卷積英語機器翻譯模型,該模型的BLEU 分數(shù)為29.94。可見,研究人員大多將統(tǒng)計學、基于規(guī)則和基于知識的方法用于機器翻譯,而BLEU 得分被認為是訪問高質量的機器翻譯系統(tǒng)的唯一指標。本文使用基于神經網絡的深度學習[4-5]技術用于英語機器翻譯模型。與現(xiàn)有的方法相比,這種方法提供了一個良好的BLEU 分數(shù),同時還使用了其他幾個指標來評估系統(tǒng)的質量。
神經機器翻譯[6]基本上由兩個神經網絡[5]組成:一個是編碼器[4],另一個是解碼器。
編碼器將源句子S作為一系列向量S=(x1,x2,…)進行編碼,也被稱為“思想”。在數(shù)學上可以表示為:
式中:W和U是權重;xt是當前輸入;ht-1是前一個隱藏狀態(tài)。
循環(huán)神經網絡[7-8]學習將變長的輸入序列編碼為固定向量,然后將向量解碼為變長序列。模型學習根據給定的序列p(y1,y2,…,|yT x1,x2,…,xT)進行預測。數(shù)學建模如下:
從編碼器的角度來看:
式中:ht是時間t的隱藏狀態(tài)和向量;c是隱藏狀態(tài)的綜合。
解碼器根據上下文詞預測下一個詞。從方程(2)中可以得到解碼器端的P(yi,yi-1,…,y1,x,c)表示為:
式中:yi-1是之前預測的目標;si-1是解碼器的前一個隱藏狀態(tài);ci是詞的上下文,并且可以用以下數(shù)學式表示:
標準英語文本翻譯包括以下不同階段:源語言[9]和目標語言的預處理、詞嵌入[9]、編碼、解碼,然后生成目標文本。工作流程如圖1 所示。
圖1 工作流程
1)預處理。語料預處理是開發(fā)任何神經機器翻譯系統(tǒng)中最重要的任務,并行語料的預處理對于神經或統(tǒng)計模型的開發(fā)至關重要。其具體步驟包括大小寫轉換、分詞和清理。
2)填充句子。預處理之后,在將文本作為輸入傳遞給循環(huán)神經網絡[10]或LSTM[11]時,某些句子自然會更長或更短,它們的長度不一致,故需要填充句子保證長度一致。
3)詞嵌入。本文使用GloVe(用于單詞表示的全局向量)有效地學習單詞向量,并結合LSA[12]等矩陣分解技術和基于局部上下文的學習,類似于word2vec[13]。
4)編碼器。編碼器負責生成代表源語言意義的思考向量或上下文向量。編碼過程中使用了一些符號表示:xt是時間步t的輸入;ht和ct是時間步t的LSTM 內部狀態(tài);yt是時間步t產生的輸出。
以一個簡單句子“How are you,sir?”為例。這個序列可以被視為由4 個單詞組成的句子。在這里:x1是“How”,x2是“are”,x3是“you”,x4是“sir”。
該序列將在4 個時間步中被讀取,如圖2 所示。
圖2 由LSTM 編碼器讀取的句子
在t=1時,它記住了LSTM 單元讀取了“How”;在t=2時,它回憶起LSTM 讀取了“How are”;在t=4時,最終的狀態(tài)h4和c4記住了完整的序列“How are you,sir?”。
初始狀態(tài)h0和c0被初始化為零向量。編碼器接收上述形式的單詞序列xs=作為輸入,并計算出思考向量v={hc,vc},其中hc表示最終的外部隱藏狀態(tài),在處理完最后一個輸入序列后獲得,vc是最終的細胞狀態(tài)??梢杂脭?shù)學表示為vc=cL和vh=hL。
5)上下文向量。上下文向量成為解碼器的起始狀態(tài),LSTM 解碼器不以零作為初始狀態(tài),而是將上下文向量作為初始狀態(tài)。
6)解碼器。編碼器-解碼器的架構如圖3 所示。
圖3 編碼器-解碼器的架構
解碼器狀態(tài)使用上下文向量v={vh,vc}作為初始化,其中h0=vh和c0=vc,h0和c0∈LSTMdec。上下文向量是連接編碼器和解碼器的重要紐帶,形成端到端學習的端到端計算鏈。
編碼器和解碼器之間唯一共享的是上下文向量v,因為它是解碼器關于源語言句子的唯一可用信息。通過以下方程計算出翻譯句子的第m個預測:
所提出的系統(tǒng)訓練算法如下:
1)對源語言和目標語言的句子對進行預處理,xs=x1,x2,…,xL和yt=y1,y2,…,yL,如預處理部分所述。
2)使用GloVe 嵌入矩陣進行詞嵌入。創(chuàng)建一個嵌入層對象,embedding_layer=Embedding(num_words,EMBEDDING_SIZE,weights=embedding_matrix)。
3)將源語句xs=x1,x2,…,xLs輸入編碼器,并通過注意力層在xs的條件下獲取上下文向量v。
4)將解碼器的初始狀態(tài)(h0,c0)設置為上下文向量v。
5)使用解碼器預測與輸入句子xs相對應的目標句子使用softmax 函數(shù)計算第m個預測:
式中是詞匯表中第m個位置的argmax 詞匯。
6)使用分類交叉熵計算預測詞和實際詞在第m個位置的損失。損失函數(shù)在時間t上對整個詞匯表進行計算:
式中:j表示詞匯表V中的單詞索引;(yt,j)表示時間t上單詞j的預測概率。
7)通過更新權重矩陣(W,U,V)和softmax[14]層來優(yōu)化編碼器和解碼器,使其損失最小化,可以使用梯度下降或適當?shù)膬?yōu)化算法進行優(yōu)化。
從概念上講,注意力被視為一個單獨的層,它的責任是為解碼過程的第i個時間步產生ci。ci的計算過程如下所示:
式中eij是計算si時編碼器的第j個隱藏狀態(tài)和解碼器的上一個狀態(tài)的重要性或貢獻因子,其表達式如下:
1)batch_size:批處理大小應該選擇得非常謹慎,因為神經機器翻譯在運行時需要相當大的內存。
2)num_nodes:表示LSTM 中隱藏節(jié)點的數(shù)量。
3)embedding_size:向量的維度。
1)BLEU 得分
BLEU 得分是通過計算機翻譯輸出與參考翻譯相對應的單詞數(shù)來計算的。BLEU 得分在0~1 或0~100 之間,0 表示沒有匹配,1 表示完全匹配,這對于所有測試句子來說是不可能的。BLEU 得分的計算公式如下:
精度通常偏好較短的句子。這在評估中引發(fā)了一個問題,即機器翻譯可能會為較長的參考句子生成較短的句子,但仍具有較高的精度。為了避免這種情況,引入了簡潔度懲罰,其中,Wn是修改后的n-gram 精度pn的權重。簡潔度懲罰(bp)的計算公式如下:
式中:c是候選句子的長度;r是參考句子的長度。
2)NIST
NIST 的計算公式如下:
式中:β是短句懲罰因子的權重表示所有參考翻譯中的平均詞數(shù);Lsys表示候選句子中的平均詞數(shù)。
3)詞錯誤率
詞錯誤率是基于Levenshtein 距離的計算方法[15]。
4)Meteor
首先計算單字精確率(Unigram Precision),然后計算單字召回率(Unigram Recall),最后使用調和平均值將這兩個值結合起來。
對于較長的匹配部分,使用懲罰值(penalty):
最終得分計算如下:
模型經過多次模擬以獲取多個評估指標的值,如表1 所示,平均BLEU 分數(shù)為45.83。
表1 多個評估指標的數(shù)值
表1 值的圖形表示如圖4 所示。從圖中可以明顯看出,當詞錯誤率增加時,BLEU 分數(shù)下降;而當詞錯誤率減少時,BLEU 分數(shù)增加。這是因為錯誤越多,詞錯誤率越高,BLEU 分數(shù)越低;當詞錯誤率較低時,表示翻譯質量較好,所以BLEU 分數(shù)較高。
圖4 圖表化各種指標
神經機器翻譯是機器翻譯研究中的一種新范式。本文提出了一種基于LSTM 的深度學習編碼-解碼模型。研究中使用了Bahdanau 注意機制[16]。為了評估所提出系統(tǒng)的效率,本文使用了多個自動評估指標,如BLEU、F-measure、NIST、WER 等。經過大量模擬得出,所提出的系統(tǒng)平均BLEU 分數(shù)為45.83。