機器翻譯引擎的基本原理 摘自:infoq
Zero-shot:零次
Training:訓練
Google Neural Machine Translation:谷歌神經機器翻譯
我們每天都在使用不同的技術,但卻不知道它們的工作原理。事實上,了解機器學習引擎並不容易。Statsbot團隊希望通過本博客中的數據故事使機器學習更加清晰易懂。今天,我們來探討一下機器翻譯並解釋谷歌翻譯算法如何工作。
幾年前,翻譯未知語言文本是非常耗時的。使用簡單的詞匯逐詞逐字翻譯之所以困難,是由於以下兩個原因:1)讀者必須知道語法規則,2)在翻譯整個句子時,需要記住所有語言版本。
現在,我們不需要太多的努力就可以將短語、句子、甚至是大段文本放在谷歌翻譯中來翻譯。但大多數人並不在意機器學習翻譯的引擎如何工作。這篇文章專為那些在意的人而寫。
深度學習翻譯的問題
如果谷歌翻譯引擎將短句的譯文保留,則它將會由於可能出現的各種變數而無法工作。最好的方法是教會計算機語法規則,並讓它根據這些規則來翻譯句子。這聽起來很簡單。
如果你曾經學過外語,你就知道規則總是有很多例外的。當嘗試捕獲程序中的所有這些規則、例外和例外中的例外時,翻譯的質量就會下降。
現代機器翻譯系統采用了不同的方法:它們通過分析大量的文檔來分配文本中的規則。
創建一個屬於你自己的簡單的機器翻譯器可以作為任何數據科學家應聘簡歷中的一個重大項目。
讓我們來研究一下被稱之為“黑盒”的機器翻譯器中隱藏的東西。深層神經網絡可以在非常復雜的任務(語音或視覺對象識別)中取得優異的效果,但盡管十分靈活,它們只能用於輸入維數和目標維數固定的任務。
循環神經網絡
而這正是長短期記憶網絡(LSTM)派上用場的地方,LSTM能幫助我們處理不能被先驗知道的序列。
LSTM是一種特殊的循環神經網絡(RNN),它能夠學習長期性的依賴關系。所有RNN看起來都像一連串的重復模塊。
因此,LSTM將數據從一個模塊傳輸到另一個模塊,另外,為了生成Ht,我們不僅使用Xt,還使用所有之前的輸入值X。要了解有關LSTM的結構和數學模型的更多信息,請閱讀這篇非常棒的文章“了解LSTM網絡”。
雙向RNN
我們的下一步是雙向RNN(BRNN)。BRNN將常規RNN的神經元分成兩個方向。一個方向是正向的時間或向前的狀態。另一個方向是負向的時間或向后的狀態。但這兩個狀態的輸出並不與相反方向狀態的輸入進行連接。
為什么BRNN比相對簡單的RNN更好?請想象有一個9個字的句子,而我們要預測第五個字。我們可以知道前4個字,或前4個字和最后4個字。當然,第二種情況預測的質量會更好。
序列到序列
現在我們可以認識序列到序列模型(也稱為seq2seq)了。一個基本的seq2seq模型由兩個RNN組成即:處理輸入的編碼器網絡和產生輸出的解碼器網絡。
最后,我們便可以制作出自己的第一個機器翻譯器了!
但是,讓我們先思考這一點。谷歌翻譯目前支持103種語言,所以我們應該為每種語言提供103x102個不同的模型。當然,這些模型質量的好壞會因為語言的普及程度和訓練這個網絡所需的文件數量而有所不同。我們可以達到的最佳情況是使一個NN(神經網絡)能將任何語言作為輸入並將其翻譯成任何其他語言。
谷歌翻譯
該想法谷歌工程師在2016年底就實現了。NN的架構基於谷歌已研究的seq2seq模型之上。
但唯一的不同是編碼器和解碼器之間有8層LSTM-RNN,且層與層之間仍有殘留的連接,並有一些精度和速度上的調整。如果你想更深入地了解它們,請參考谷歌的神經機器翻譯系統。
該方法的主要特點在於,現在谷歌翻譯算法對於每對語言只使用一個系統,而不是一個龐大的集合。
該系統在輸入句子的開頭需要一個“令牌”以指定你要將短語翻譯成的語言。
這一改變提高了翻譯質量,甚至可以在系統從未見過的兩種語言之間進行翻譯,這種方法被稱為“零次(Zero-Shot)翻譯”。
什么是更好的翻譯?
當談到谷歌翻譯算法的改進和更好的結果時,如何才能正確地評估第一個翻譯備選比第二個更好?
這不是一個無關緊要的問題,因為對於一些常用的句子,雖然我們有專業翻譯器的參考翻譯,但這些翻譯仍然有一些差異。
很多方法能部分解決這一問題,但最流行和最有效的指標是BLEU(雙語評估替補)。想象一下,有兩個來自機器翻譯器的備選:
備選1:Statsbot makes it easy for companies to closely monitor data from various analytical platforms via natural language. (Statsbot通過自然語言使企業能輕松地密切監控來自各種分析平台的數據。)
備選2:Statsbot uses natural language to accurately analyze businesses’ metrics from different analytical platforms.(Statsbot使用自然語言准確地分析企業來自不同分析平台的指標。)
雖然它們有相同的含義,但質量和結構都不同。
我們再看看來自兩個人的翻譯:
參考1:Statsbot helps companies closely monitor their data from different analytical platforms via natural language. (Statsbot通過自然語言幫助公司密切監測來自不同分析平台的數據。)
參考2:Statsbot allows companies to carefully monitor data from various analytics platforms by using natural language. (Statsbot通過使用自然語言使企業能夠密切監控來自各種分析平台的數據。)
顯然,備選1更好,與備選2相比,備選1包括更多共同的單詞和短語。這就是BLEU方法的一個關鍵思想。我們可以將備選的n-gram(N元語法)與參考翻譯的n-gram進行比較,並計算它們的匹配數(匹配數與它們的位置無關)。我們只使用n-gram精度,因為在多個參考時計算查全率很難,而且結果是n-gram分數的幾何平均值。
現在你可以開始評估復雜的機器學習翻譯引擎了。下次當你使用谷歌翻譯翻譯某些內容時,可以想像一下:在給你最好的翻譯版本之前,其實谷歌翻譯已經分析了數百萬份文檔。
查看英文原文:https://blog.statsbot.co/machine-learning-translation-96f0ed8f19e4