Google 發佈新的機器翻譯系統,但它真的能搶筆譯人員的飯碗嗎?

今年的9月27日是Google翻譯推出10週年的日子,這一天Google發佈了人工神經網絡機器翻譯系統(GNMT),以此來為 Google 翻譯慶生,並表示 GNMT 的平均出錯率比之前的系統降低了 60%。Google稱,與之前採用基於短語的機器翻譯算法(PBMT)相比,GNMT的複雜性提高了一步,翻譯質量更高,在多個主要語言對的翻譯中實現了翻譯誤差降低55%-85% 以上。GNMT算是目前最新也是最有效地將機器學習用於翻譯的系統。那PBMT和GNMT都是怎麼回事呢?機器翻譯是怎麼走到目前這一步的呢?

最簡單的翻譯是將一個句子逐字從源語言轉換成目標語言。顯然,只要手上有對照字典就能夠完成這項任務。這能夠把個別關鍵詞翻譯過來,但這種做法的效果基本上都是慘不忍睹,比如對於口頭語言的語氣語調等的把握就非常差了,更不用説不同的語言本身還有很多微妙玄機。

於是為了提高翻譯質量,人們自然想到了要對文字進行解構。文章由段落組成,段落由句子組成,句子由短語和字組成。尤其是短語用法基本固定,靈活性並沒有單字或詞那麼強,無論在怎樣的上下文當中語義都相對固定,如果能針對短語進行翻譯,可以提升翻譯的品質,這就是所謂的基於短語的機器翻譯(PBMT),10年前推出的Google翻譯正是以這種算法為核心的。PBMT系統翻譯的基本單位是短語,不過在翻譯過程中它並不是孤立地逐詞翻譯, 而是考慮了連續的多個詞,通過對照龐大的雙語語料庫來提取翻譯。這種基於短語的方案可以比較容易地對局部上下文關係進行處理,相對於逐字翻譯在質量上有了較大提高。

但是,正因為PBMT是基於局部的上下文依賴關係,所以在遇到較長的句子或短語時它的處理就容易出現問題了。此外,由於PBMT完全是依靠連續短語的統計信息,忽略了語言的句法特徵,因此不能夠充分利用語料庫所包含的知識,這就限制了翻譯質量的更上一層樓。

從這裏我們可以看出,了解深層次的上下文關係是關鍵。順着這種思路,我們很容易就能想到如何進一步獲得更好的上下文關係——從短語擴大到句子,也就是直接從一個句子映射到目標語言句子,因為這種映射需要深度學習的幫助,所以又被稱為基於人工神經網絡的機器翻譯(NMT,Neural Machine Translation)。幾年前,Google利用長短時記憶(LSTM,Long Short-Term Memory)循環神經網絡(RNN,Recurrent Neural Network)支持下的NMT改進了自己的翻譯效果。它可以將任意長度的句子轉化成向量,在網絡中層層傳遞,轉化為計算機可以“理解”的表示形式,再經過多層複雜的傳導運算,生成另一種語言的譯文,也就是説翻譯深化到了語義理解的層面。

但是NMT系統也有問題。那就是這種神經網絡的訓練和翻譯推理的計算成本非常高,當然這也難怪,因為翻譯的複雜性提高後勢必對處理也提出了更高的要求。不過NMT還有一個劣勢,那就是對於罕見詞大多數 NMT 系統都難以應對。這兩個問題一個會影響到翻譯速度,另一個則影響到準確度。所以導致了NMT比較難以進行大規模的實際應用,因為這兩個特性都非常關鍵。想象看,如果Google翻譯5、6秒都出不來的話,還有什麼用户使用呢。

為此Google的Brain團隊開始着手考慮解決NMT的實用性問題。他們推出的Google Neural Machine Translation(GNMT,Google基於人工神經網絡的機器翻譯)是一個應用於生產環境的機器翻譯系統,它使用了一個深度的長短時記憶神經網絡,該網絡含有8層的編碼器和解碼器,解碼器網絡和編碼器網絡之間同時利用了殘差(residual)連接和注意力(attention)連接。為了縮短訓練時間,Google團隊對神經網絡的並行機制進行了改進,讓attention機制將解碼器的底層與編碼器頂層進行連接來加速訓練,並且通過降低推理計算精度來加速最終的翻譯速度。對於罕見詞的處理問題,團隊將罕見詞分割成常見詞子集,這種做好較好地在字符限定模型的靈活性以及單詞限定模型的效率之間進行了平衡,最終改善了整套系統的精確度。為了讓譯文考慮到儘可能多的源文詞彙,其用於搜索目標語言句子空間的定向搜索算法採用了長度規格化過程,並且利用了覆蓋懲罰來鼓勵生成儘可能多覆蓋源文詞彙的輸出句子。通過上述努力,與Google在用的PBMT翻譯系統相比,其翻譯的平均錯誤率已經下降了60%。

下圖是Google提供的,由人類評估者對不同語對之間人類翻譯、GNMT翻譯以及PBMT翻譯的質量對比情況。其中0為最低,即完全的牛頭不對馬嘴,而6則是完美翻譯(從圖中可以看出目前並不存在,哪怕是最高水平的人類翻譯)。綜合來看,GNMT已經拉開了與PBMT的距離,跟人類翻譯的水平比較接近了。尤其是英法互譯方面,幾乎已經跟人類水平無異。而中英、英中互譯在不同語對之間的翻譯水平是最低的,我想這與中文的語系跟英文不同以及漢語的複雜性太高有着很大的關係。


但是在短句的翻譯方面,由於Attention機制的引入,使得解碼器端可以更多地關注源語言端的部分詞,從而避免了原來編碼器—解碼器模型固定維度的上下文向量帶來的精確度不高的問題。比如,下面這幅動圖就形象展示了GNMT將漢語的一句話翻譯成英語的過程。首先,網絡將漢語的詞編碼為向量表,每一個向量都代表着迄今為止讀到的所有詞的意思。一旦整個句子讀完,解碼器就開始工作,逐字來開始生成英文句子。但是這種解碼(翻譯)並不是簡單的逐字翻譯,而是會注意看目標英文詞與源中文詞的匹配程度,從中選取匹配程度最高的英文單詞輸出(所謂匹配程度也就是對編碼中文的上下文向量賦予一個關注度權重,圖中編解碼器之間的藍色鏈接透明度代表了解碼器對某個中文詞的關注程度,透明度越高代表關注度越高)。從這個翻譯結果來看,效果還是很令人滿意的。


Google官方博客表示,公司已經將這套GNMT應用於難度“臭名卓著”的語言翻譯對:中譯英上面。目前Web版和移動版的Google翻譯中譯英已經100%採用GNMT,每天大概要處理1800萬次翻譯。他們使用的機器學習框架是Google自家研發目前已經開源的TensorFlow,並且硬件上採用了自己研發的專用人工智能處理器TPU(Tensor Processing Units)。Google表示,未來幾個月將會把GNMT推向更多的語言翻譯對上。

作為試驗,我試着把官方博客的一段話譯成了中文(表中的2),然後再用Google翻譯把這段中文譯成英文(表中的3)。從對比來看,除了個別語法方面的問題以外,英文的還原度還是挺高的,起碼意思並沒有太大的偏差。但是再把3這段英文機器翻譯為中文(表中的4)後,效果就差很多了,尤其是基本的意思並沒有表達出來。


就像Google所説那樣,機器翻譯的道路還任重道遠。關鍵是這種翻譯在考慮上下文語境方面還非常不足,目前也僅考慮到一個句子中的關係而已,更不用説段落、章節甚至外部引用這些複雜關係了。而目前的機器翻譯純粹是走算法和統計的路線,跟真正的語言學並沒有什麼關係,這種路線在改善翻譯質量方面究竟能走多遠呢?此外,Google在硬件上使用了專門定製的TPU來加速機器學習方面的運算。不過一旦AI模型改變,TPU就要重新定製生產,這對於他們的實用化可能也會產生不小的影響(相比之下,微軟採用FPGA的辦法靈活性似乎更強一些)。所有這些問題都説明,儘管機器翻譯已經取得了不小進展,但未來的挑戰更大。AI和自然語言處理界能否取得更大突破呢?我們拭目以待吧。

資料來源:36Kr

如果喜歡我們的文章,請即分享到︰