文/董陸森
機器翻譯是用一種自然語言讀取句子,經(jīng)過翻譯系統(tǒng)復雜的處理,輸出另一種語言具有相同含義的自然語言句子的方法。但由于源語言與目標語言之間存在的差異,翻譯的結(jié)果可能與原句產(chǎn)生很大的語義偏差。例如,漢語和日語中語法成分和語句結(jié)構(gòu)的區(qū)別可能會造成語義的分歧。傳統(tǒng)的基于短語的翻譯系統(tǒng)通過將源語句分解為多個塊并且將其翻譯成詞組來完成翻譯任務,結(jié)果導致了翻譯結(jié)果的不通順,準確度遠不如人工翻譯。因此,更好的機器翻譯方法就是理解原文的含義和語法規(guī)則后再進行翻譯。
循環(huán)神經(jīng)網(wǎng)絡(luò)主要用于處理諸如文本的序列數(shù)據(jù)。在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型中,輸入層,隱藏層和輸出層之間是全連接的,但是每層之間的節(jié)點是無連接的。與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型有著巨大不同的是,循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏層內(nèi)部的節(jié)點彼此之間是有連接的。在循環(huán)神經(jīng)網(wǎng)絡(luò)中,預測新的單詞通常需要用到文章中上文已出現(xiàn)的單詞,這與閱讀過程十分相似。在閱讀時,人是基于對熟識詞或已出現(xiàn)詞的理解來推斷新詞在句中的含義,而不會是將所有知識都丟棄,用空白的大腦重新思考。循環(huán)神經(jīng)網(wǎng)絡(luò)中一個序列當前單元的輸出與之前單元的輸出有關(guān),因此,可以說循環(huán)神經(jīng)網(wǎng)絡(luò)有記憶性。具體的表現(xiàn)是:循環(huán)神經(jīng)網(wǎng)絡(luò)會對文本序列中出現(xiàn)過的信息進行記憶,并將前序單元中學習得到的信息作為下一個單元的信息輸入。圖1是一個典型的循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),隱藏層中單元的輸入不僅來自輸入層,還來自隱藏層中的其他單元。
圖1:循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
圖2:Seq2Seq輸入輸出序列
圖3:Seq2Seq模型的編解碼器
理論上,循環(huán)神經(jīng)網(wǎng)絡(luò)適用于處理任意長度的文本序列。但是實際應用中,傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)有很大局限性。嘗試預測“我在中國長大......我會說流利的漢語”文本中的最后一個詞。文本序列中最近的信息表明,下一個單詞可能是一種語言的名稱,但如果要確定下一個單詞是哪種語言,就需要中國這一詞出現(xiàn)時的上下文。這說明在傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)預測中,相關(guān)信息和當前預測位置之間的間隔很大。而且隨著這種間隔的擴大,循環(huán)神經(jīng)網(wǎng)絡(luò)變得無法學習如何連接信息,這被稱為“長期依賴”問題。近年來,一些新的神經(jīng)網(wǎng)絡(luò)模型改進了傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)模型的缺陷。其中最常用的神經(jīng)網(wǎng)絡(luò)模型是基于長短期記憶(long shortterm memory)網(wǎng)絡(luò)。
Long Short Term Memory網(wǎng)絡(luò)是可以克服傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)局限性,學習到長期依賴信息。與傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)不同的是,長短期記憶網(wǎng)絡(luò)在傳統(tǒng)的結(jié)構(gòu)上增加了復雜的“LSTM細胞”循環(huán),這些“LSTM細胞”是LSTM網(wǎng)路的核心,并且LSTM每個細胞單元之間存在著復雜的聯(lián)系,可以彼此交互。
LSTM網(wǎng)絡(luò)的輸入和輸出只由一組維度固定的向量編碼,因而具有很大的局限性。翻譯可以看作一組表示原文的詞到一組表示譯文的詞的映射,機器翻譯模型代表了映射的規(guī)則。但是在實際的機器翻譯任務中,實際輸入不會總是固定的長度,因此很難用維度固定的向量編碼,這和傳統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)是矛盾的。
在LSTM中,Seq2Seq模型解決了向量編碼的問題。對于機器翻譯這樣的序列數(shù)據(jù)處理的任務,最合適的神經(jīng)網(wǎng)絡(luò)模型就是循環(huán)神經(jīng)網(wǎng)絡(luò)。Seq2Seq模型讀取輸入序列“ABC”,產(chǎn)生“WXYZ”作為輸出序列。該模型在遇到輸出序列結(jié)束標記(EOS)后停止預測。如圖2所示,Seq2Seq模型與展開后的循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)很相似。
具體地,神經(jīng)機器翻譯系統(tǒng)首先使用編碼器(Encoder)讀取源文本序列來構(gòu)建“思考”向量,即處理后表示句子含義的數(shù)字序列。解碼器(Decoder)對這個表示句子含義的數(shù)字序列向量進行處理,產(chǎn)生一個輸出序列,如圖3所示。神經(jīng)機器翻譯用Seq2Seq模型解決了傳統(tǒng)的基于短語的模型本土化性能差的問題。Seq2Seq模型可以獲取神經(jīng)網(wǎng)絡(luò)中的長期依賴性,就如中文-漢語例子中所闡述的那樣。此外,Seq2Seq模型還可以確保上下文中對象性別的一致,控制文本語法結(jié)構(gòu)的統(tǒng)一。