陳祖君
(西安培華學院國際教育學院 西安 710000)
由于神經(jīng)網(wǎng)絡被發(fā)現(xiàn)可以進行語義的理解和分析,其在自然語言處理領域得到了廣泛的應用。由循環(huán)神經(jīng)網(wǎng)絡演化而來的神經(jīng)網(wǎng)絡機器翻譯模型(Neural Machine Translation,NMT)可以綜合語言的語法、語義以及連貫性等方面進行機器翻譯、語義提取、文本摘要等任務[1]。神經(jīng)網(wǎng)絡機器翻譯模型是一種基于循環(huán)神經(jīng)網(wǎng)絡的機器翻譯模型。文獻[2]提出了一種新的利用循環(huán)神經(jīng)網(wǎng)絡進行序列到序列處理的模型,并把這個模型應用到英語-法語翻譯任務之上,取得了比基于短語的機器翻譯模型更高的BLEU分數(shù)。模型主要通過利用長短期記憶循環(huán)神經(jīng)網(wǎng)絡(Long Short-Term Memory Recurrent Neural Network,LSTM RNN,本文中將簡稱為LSTM)生成消化和生成序列的方式完成序列數(shù)據(jù)處理[3]。在讀入相同或相似語義的句子時LSTM網(wǎng)絡隱含層的狀態(tài)向量也相似,據(jù)此推導出神經(jīng)網(wǎng)絡可以抽象和處理語義相關的信息。Bahdanau等在論文[4]中對Sutskever等的模型進行改進,加入了注意力機制(Attention Mechanism)和雙向循環(huán)神經(jīng)網(wǎng)絡,改善了原本模型在處理長句子時性能會出現(xiàn)明顯下降的問題,并且通過注意力機制可以獲得原始語言和目標語言詞匯之間的對應情況。
現(xiàn)代英文的基本語素表達形式是詞,一個詞可以具有多個字,因此如果希望描述一個句子的語義,需要先將句子分詞分為表達單一含義的詞。分詞任務本身可能產(chǎn)生歧義,分詞就是具有動詞及形容詞二者特征的詞,尤指以-ing或-ed,-d,-t,-en或-n結尾的英語動詞性形容詞,具有形容詞功能,同時又表現(xiàn)各種動詞性特點。并且因為之后的處理結果都會以分詞結果為基礎會造成分詞錯誤傳播,所以英文分詞的效果會對NMT模型最終的結果產(chǎn)生很嚴重的影響。
本文利用和Bahdanau論文相似的模型構建NMT自動編碼器[5],通過實驗研究了不同的英文分詞方法對于NMT自動編碼器文本還原能力和語義提取能力的影響。分詞選擇包括Google在處理英文時使用的一元分詞方法以及當前英文分詞領域普遍使用的隱含馬爾科夫模型(Hidden Markov Model,HMM)。
長短期記憶循環(huán)神經(jīng)網(wǎng)絡(LSTM網(wǎng)絡)是一種循環(huán)神經(jīng)網(wǎng)絡(RNN)[6]。其出現(xiàn)是為了解決普通RNN網(wǎng)絡在迭代次數(shù)上升之后出現(xiàn)的梯度消失問題。LSTM網(wǎng)絡設計了一個在迭代過程中可對狀態(tài)進行選擇處理的“記憶”機制,其結構如圖1所示。

圖1 LSTM結構示意圖
LSTM神經(jīng)網(wǎng)絡可以分成遺忘門(Forget gate)、輸入門(Input gate)、輸出門(Output gate)和輸入輸出神經(jīng)網(wǎng)絡幾個部分,各部分的作用可以表達為下式:


其中,i(t)表示t時刻的輸入門輸出、f(t)表示t時刻的遺忘門輸出、c(t)表示t時刻的細胞狀態(tài)、o(t)代表t時刻輸出門輸出、h(t)表示t時刻隱含層的輸出數(shù)據(jù)、φ表示網(wǎng)絡神經(jīng)元激活函數(shù)、⊙表示元素乘法(Element-wisemultiply)。
由于采用mini-batch的方法進行神經(jīng)網(wǎng)絡的梯度下降,為此必須要將樣本進行batch劃分,為了避免填充機制造成短句子進行很長填充干擾編碼的問題,本實驗采用分桶(bucketing)[7]的方式先將長度相近的句子歸于一個桶中,然后每個桶分別產(chǎn)生定長的訓練batch。填充機制需要顯式使用序列結束符標記序列的結尾。并且在編碼器的輸入序列最后需要加入解碼起始符號,指導解碼器開始進行第一個解碼位置的輸出。
此外,由于英文語料出現(xiàn)相同數(shù)字的概率非常小,如果直接保留數(shù)字也幾乎無法進行準確的輸出,因此將語料中出現(xiàn)的所有數(shù)字內(nèi)容統(tǒng)一處理為同一個數(shù)字標簽,防止由于數(shù)字文本的詞向量訓練不佳導致解碼性能下降。
編碼器負責將輸入序列進行編碼在網(wǎng)絡的LSTM網(wǎng)絡的隱含層中。
圖2中xi表示輸入序列,hi表示編碼器輸出,對于某一個輸入序列,首先通過詞嵌入網(wǎng)絡將詞轉(zhuǎn)換成神經(jīng)網(wǎng)絡詞向量。然后,使用LSTM神經(jīng)網(wǎng)絡對詞和詞周圍的上下文內(nèi)容進行歸納總結,使神經(jīng)網(wǎng)絡可以利用到更多的上下文特征。由于單向LSTM對數(shù)據(jù)的讀取是順序的,其在讀取到某一位置時只接觸到單向信息,因此本文采用雙向LSTM神經(jīng)網(wǎng)絡進行上下文特征提取。并且由于神經(jīng)網(wǎng)絡深度的增加可以大大降低擬合所需要的時間并提高網(wǎng)絡的抽象程度[8],本文使用3層雙向LSTM網(wǎng)絡作為編碼器網(wǎng)絡。
編碼器網(wǎng)絡在每一個序列位置會產(chǎn)生一個對應的輸出,在解碼時用于編碼對應位置的信息參考。此外,整個序列輸入完成后產(chǎn)生的LSTM隱含層狀態(tài)可以認為含有整個序列的相對語義信息,作為解碼器網(wǎng)絡的初始狀態(tài)傳送給解碼器部分。

圖2 編碼器結構示意圖
解碼器利用RNN的序列生成模型[9]生成序列。RNN序列生成模型根據(jù)之前若干時刻的網(wǎng)絡輸出產(chǎn)生下一時刻的輸出。解碼器使用單向LSTM神經(jīng)網(wǎng)絡結構。對于單向LSTM編碼器而言,將輸入序列反向輸入會使解碼器提供更好的結果[10],因此本文將編碼器雙向LSTM神經(jīng)網(wǎng)絡中的反向部分隱含層狀態(tài)作為解碼器的初始狀態(tài),如圖3所示。
解碼器序列生成模型可用下式表示:

其中,yi代表i時刻RNN解碼器的輸出向量,x代表原始語言序列,si代表RNN解碼器在第i時刻的狀態(tài),ci代表i時刻反應在原始語言上下文向量。ci是所有編碼器提取的原始序列每一個位置的上下文信息對解碼器輸出序列位置i造成的影響之和。

圖3 解碼器結構示意圖

式中,Tx代表輸入序列的總長度,αij是輸入序列第 j位置的上下文對輸出第i位置造成影響的權重,hj是編碼器產(chǎn)生的對應輸入序列第 j位置的上下文向量。

其中,eij代表輸入序列的第 j位置對輸出序列第i位置的影響分數(shù),a是計算該分數(shù)使用的模型。本文使用一個簡單的前饋式神經(jīng)網(wǎng)絡作為模型a。αij在得到所有影響分數(shù)之后通過對全部分數(shù)計算softmax的方式歸一化得到。
在NMT模型中加入注意力機制有助于提高系統(tǒng)的性能[11],同時也可以源語言和目標語言詞匯在翻譯時的對應情況。解碼器的輸出通過和詞庫中的詞向量進行softmax運算得到,本實驗使用貪婪算法作為解碼輸出算法,即當前的解碼僅取決于詞庫中和當前解碼器輸出的softmax概率最大的詞。
本實驗中將NMT的輸入序列和輸出序列統(tǒng)一為同一序列,構成基于NMT的自動編碼器。詞向量采用300維神經(jīng)網(wǎng)絡嵌入詞向量,詞嵌入模型使用單層前饋式神經(jīng)網(wǎng)絡,在NMT模型的訓練過程中一并進行詞嵌入神經(jīng)網(wǎng)絡的訓練。編碼器采用雙向3層GRU神經(jīng)網(wǎng)絡,每一方向的神經(jīng)網(wǎng)絡擁有500個GRU單元,且獨自向上堆疊,在向上堆疊的過程中不會和反向的神經(jīng)網(wǎng)絡進行數(shù)據(jù)交換。在頂層直接將雙向神經(jīng)網(wǎng)絡的輸出粘連作為注意力機制使用的上下文向量。
解碼器采用單向3層GRU神經(jīng)網(wǎng)絡,初始狀態(tài)選擇編碼器中的反向RNN網(wǎng)絡。解碼時將上一時刻產(chǎn)生的詞的詞向量輸入解碼器,輸出時采用Sampled Softmax算法[12]進行輸出,以防止由于詞庫過大時輸出需要針對詞庫中每一個詞做softmax運算導致速度過慢的問題。
訓練的目標函數(shù)采用softmax交叉熵,梯度下降采用ADADELTA算法[13],batch大小為 128。為了防止梯度爆炸,如果網(wǎng)絡梯度的2范數(shù)超過5,則將梯度標準化到2范數(shù)為5。模型初始學習率0.1,并在每一次迭代完整個語料庫后降低學習率到原來的一半。如果使用NMT模型生成詞嵌入向量,則應盡可能避免在第一次迭代語料庫的過程中降低學習率,或者在每次訓練之前打亂語料庫的排列順序,否則可能導致語料庫靠后位置出現(xiàn)較多的詞對應的詞向量訓練不足,干擾正常的解碼過程。
此外,為了防止網(wǎng)絡出現(xiàn)過擬合現(xiàn)象,本文將編解碼器中所有的神經(jīng)元輸出連接進行了0.3概率的 dropout[14]。
4.1.1 帶有英文分詞的自動編碼器實驗
針對英文分詞的NMT自動編碼器模型采用jieba分詞用作英文分詞器。jieba分詞采用有向圖構建分詞路徑,然后通過動態(tài)規(guī)劃算法[15]尋找基于詞頻的最大切分組合。對于新詞發(fā)現(xiàn),采用了HMM模型進行詞性標注的方法解決。語料庫的預料首先經(jīng)過數(shù)字和特殊符號過濾,然后進行英文分詞并截取詞頻最高的50000個詞訓練向量,超出詞庫的詞以特殊的符號(UNK)統(tǒng)一標記。UNK符號數(shù)量占比超過10%的句子會被自動丟棄。模型以一個句子作為一個序列,分桶時分為四個桶,最大序列長度分別為10,30,50,70。這種設計可以覆蓋語料庫中98%的句子。
4.1.2 基于單字的自動編碼器實驗
基于單字的NMT自動編碼器模型中直接將語料庫英文本做完數(shù)字和符號過濾之后進行單字切分,統(tǒng)計每個符號的出現(xiàn)頻率。由于英文實際出現(xiàn)的字相比詞而言少很多,只需要保留符號庫(包括字、標點符號、英文單詞)中頻率前10000的符號便可基本覆蓋語料庫中的所有符號。和帶有英文分詞的自動編碼器一樣,超過的符號會以UNK符號代替。
由于一個句子的字數(shù)量會比詞多很多,因此將四個桶的最大序列長度更改為50,70,90,110。在這種設計下可以覆蓋語料庫97%的句子。
本文采用新浪2009年到2017年的國內(nèi)新聞作為語料庫。數(shù)據(jù)總計新聞310327篇,句子7351017句。實驗同時將標題和內(nèi)容作為訓練數(shù)據(jù),標題作為一個獨立的序列樣本。
訓練采用單張NVIDIA GeForce GTX 1080 Ti顯卡。每次語料庫的整體迭代訓練大約需要4天,平均每個batch的訓練時間大約在3s左右。

表1 基于單字的NMT自動編碼器輸出結果

5.1.1 文本還原情況
基于一元分詞的NMT自動編碼器表現(xiàn)出了潛在的分詞趨向,會將同一個詞的幾個字變成詞首字。但從注意力機制提供的數(shù)據(jù)中不能看出這個趨向的存在。原因可能是字符進行詞嵌入時,沒有足夠的樣本可以分開兩個不同的文字,而導致貪婪解碼時始終出現(xiàn)的是某個詞的第一個字。此外,這個自發(fā)產(chǎn)生的分詞很容易受到周圍字的影響,錯誤較為常見,原因推測為貪婪輸出選擇了的非最佳輸出再輸入解碼器時,影響了下一個輸出的向量。
短句(30字以下)中出現(xiàn)了句首部分混亂,以及提早出現(xiàn)句子結束符號(End of Sentence,EOS符號)的問題。這種情況只有在需要填充的長度在三分之一以上的情況出現(xiàn)。因此推測可能的原因是相對最大長度最小的桶(本實驗為50字)中,句子仍然過短導致填充字符大量存在,干擾句子原本的語義。
5.1.2 語義提取情況
由于字編碼的限制,句子含義必須從字嵌入向量提取,而英文中字在不同的詞中間可能存在不同的含義,導致編碼器提取的語義和句子真正表述的語義有所差異,造成字解碼時出現(xiàn)難以理解的錯誤。例如例句1中的“non-linear”變成了“nonlinear”。此外,針對音譯詞、外來語、一些縮寫詞等,基于單字的NMT模型不能給出很好的結果。
總體而言,在文本的還原上,基于單字的自動編碼器可以得到相對較好的結果,在處理某些實體名稱的情況下會發(fā)生錯誤,尤其是當名稱是音譯或者簡稱等不符合語義規(guī)則的詞匯所表示。

表2 基于jieba分詞的NMT自動編碼器輸出結果
5.2.1 文本還原情況
相比基于一元分詞的NMT自動編碼器,基于HMM分詞器的自動編碼器的在文本還原上結果不盡如人意,很多關鍵詞和信息的處理均出現(xiàn)了錯誤。造成這個結果的原因有兩個:
1)英文分詞器趨向于將一個實體劃分成單一的詞。如第 2 個例子中,“non-financial”、“ management of the business”這些詞均被劃分為一個詞,然而由于本身在語料庫中出現(xiàn)的次數(shù)不多,導致這些詞沒有得到充分的訓練,進而造成語義上的模糊,將這些詞變換為意義不同的其他詞匯,如例子中的“organization”和“institutions”。
2)由于傳統(tǒng)的基于HMM或者CRF的英文分詞器一般可以進行新詞識別,而這些新詞在詞庫中沒有對應的詞向量,導致輸入模型之前被替換成特殊符號(UNK)。因為UNK本身在詞庫中作為一個獨立的詞只具有單一的詞向量,這種變換會對文本還原能力產(chǎn)生比較嚴重的影響。
5.2.2 語義提取情況
相較于一元分詞NMT自動編碼器,基于jieba分詞器的NMT自動編碼器在語句結構的保留情況更好。如果去除掉錯誤的關鍵詞,大部分的句子語義和語法結構是正確的,這意味著本模型很好地掌握了原句的語義語法結構,僅僅不理解關鍵詞的含義出現(xiàn)文本還原錯誤的問題。
實驗中也可以看出,一些所有詞向量均訓練得當?shù)木渥赢a(chǎn)生了很好的結果,如原句1。這意味著只要能解決好詞匯的語義嵌入問題,NMT模型就能在英文上產(chǎn)生很好的結果。
本文通過NMT自動編碼器實驗研究了現(xiàn)有的一元分詞和HMM分詞器在NMT模型上的文本還原和語義提取情況。實驗表明,一元分詞和傳統(tǒng)的英文分詞系統(tǒng)不能滿足英文在NMT模型上的適配要求,前者由于單字模型很難準確表達句子語義,后者由于新詞構造、整體分詞趨向的問題影響模型的訓練。在兩者之中,一元分詞模型的表現(xiàn)相比而言較好一些,但相比中文在NMT模型中的適配程度仍然有較大距離。Google在自己的NMT方案GNMT(Google's Neural Machine Translation)的相關實驗中也發(fā)現(xiàn),中譯英系統(tǒng)相比于英譯中的系統(tǒng)BLEU分數(shù)表現(xiàn)更差。根據(jù)NMT模型的特點,適用于其上的語言需要滿足兩點:1)可以較為準確清晰地表達語義;2)詞匯以最基本的含義為單一詞,不應存在可再分的復合詞。