華文網

技術|詳解:Google翻譯背後的機器學習演算法與神經網路模型

Google翻譯、百度翻譯、有道翻譯……我們使用過各種各樣的線上翻譯服務,

但你清楚機器翻譯背後的原理嗎?線上翻譯為什麼要用深度學習?不同的神經網路模型在翻譯過程中所起的作用有什麼不同?

相比通用的模型,為什麼支援103種語言的Google的翻譯演算法,可以實現任意兩種語言之間的翻譯轉換?它獨特的LSTM-RNN結構在其中所起的作用又是什麼?讓我們從頭來學習一番。

作者 | Daniil Korbut

譯者 | JeyZhang

許多年前,想要對一種陌生的語言進行翻譯是一件非常耗時的事情。採用簡單的詞匹配方法來進行翻譯是很困難的,有兩個原因:

讀者不瞭解文本中用到的語法;

讀者不可能為了翻譯去學習所有的語言;

現在,翻譯這件事情變得很簡單了,只需要將待翻譯的片語、句子甚至大篇幅的文本放進谷歌翻譯的翻譯框就能輕易得到翻譯結果。

然而,大多數人實際上並不關心機器翻譯背後的原理。如果你想瞭解機器翻譯的原理,這篇博文就是為你而準備的。

基於深度學習的機器翻譯面臨的問題

如果谷歌的翻譯模型是針對非常短的文本進行翻譯,那這個模型將很難起作用,因為短文本對應的翻譯可能性太多了。最理想的情況是能夠教會電腦各種的語法規則並基於這些語法規則來進行翻譯,

這聽上去容易但實際很難。

如果你曾經嘗試過學習一門外語,你就會知道其中有許多意想不到的語法規則。然而,當我們嘗試在電腦程式中加入這些語法規則後,最終的翻譯品質卻會下降(翻譯結果比較生硬)。

現代的機器翻譯系統採用了一種新的方法:通過分析大量的語料資料,讓系統從中自動地學習出相應的語法規則。

如果你能自己創建一個簡單的機器翻譯系統,

這將成為你簡歷上的加分項目。

接下來我們一起來探索機器翻譯系統這個“黑盒”的背後原理。深度學習模型能夠在很多複雜的任務(例如語音辨識/物體識別)上取得不錯的結果,然而,許多深度學習模型存在一個限制條件,就是模型的輸入和輸出通常要求固定的維數(這對許多工而言並不適合)。先來瞭解一下這些模型:

迴圈神經網路 (RNN)

下面講講LSTM (Long Short-Term Memory networks) 模型,

這個模型能夠處理變長的輸入序列。

LSTM模型是一種特殊的迴圈神經網路 (RNN),能夠捕捉和學習到長序列中的相關性。所有的RNN模型都是由相同的模型重複鏈式地組成的。

被展開的迴圈神經網路模型

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

因此,LSTM模型中資料是在模組和模組之間傳輸的。例如,為了生成最後的ht,我們不是只用到了Xt,而是用了X0,X1,X2,…,Xt等一系列作為輸入。如果想要瞭解關於LSTM的模型結構和數學原理,可以去閱讀《理解LSTM網路》這篇文章。

原文地址:

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

雙向RNN模型

接下來介紹雙向迴圈神經網路模型 (BRNN)。BRNN模型由兩個普通的RNN模型組成,只不過這兩個RNN模型處理輸入序列的方向是相反的,一個是處理正向的序列,一個是處理反向的序列。這兩個序列的輸出與相反方向的輸入之間沒有連接關係。

雙向迴圈神經網路

https://www.semanticscholar.org/paper/Hybrid-speech-recognition-with-Deep-Bidirectional-Graves-Jaitly/5807664af8e63d5207f59fb263c9e7bd3673be79

為了理解BRNN模型為什麼會優於單個RNN模型,這裡舉個例子,假設我們有一個包含了9個詞的句子,我們希望預測句子中的第5個詞是什麼。一種情況是我們只知道了前4個詞詞,另一種情況既知道了前4個詞也知道了後4個詞,顯然,後一種情況下能讓我們的預測結果更加準確(因為我們得知了更多的資訊)。

Seq2Seq (Sequence to Sequence) 模型

現在我們來看看seq2seq模型,基礎的seq2seq模型由兩個RNN模型組成:一個用於對輸入序列進行編碼,一個用於對輸出序列進行解碼。

Seq2Seq模型

https://research.googleblog.com/2016/09/a-neural-network-for-machine.html

這樣我們也基於這個模型來實現一個翻譯系統。

然而,我們還需要考慮一個小問題。谷歌翻譯系統目前支援103種語言,因此我們應該有103×102種模型來處理其中任意兩種語言之間的翻譯,而這些模型的效果取決於翻譯文本的熱門與否和訓練語料的數量。最理想的情況是只訓練一種模型,這個模型能夠將任意一種語言翻譯成任意的另一種語言。

谷歌翻譯演算法

這個很棒的演算法是谷歌的工程師在2016年底時提出的,採用了seq2seq模型框架(就是上面提及的那樣)。

唯一的區別在於,模型的編碼器和解碼器之間有一個8層的LSTM-RNN結構,這種結構採用了部分連接(非全連接)的方式來改善模型的運行速度和效果。如果你想深入瞭解,可以閱讀穀歌神經網路翻譯系統這篇論文。

論文地址:

https://arxiv.org/abs/1609.08144

這個方法的核心在於,目前的谷歌翻譯演算法採用了一個統一的翻譯系統,取代了數以萬計的翻譯子系統。

這個系統要求輸入序列的開頭是一個標誌符,表示你希望翻譯成的語言。

一種稱為“Zero-Shot翻譯”的方法既能夠提升翻譯品質,同時也能實現任意兩種語言之間的翻譯(可以是系統沒有見過的語言)。

什麼是更好的翻譯?

當我們在談及現在的谷歌翻譯演算法取得了更好的結果,我們是怎麼評估新的演算法取得的翻譯效果更好的呢?

這件事情並不難做,因為對於一些比較常見的句子而言,我們已經有專業的翻譯官給出的標準翻譯答案。當然,對於同一個句子的翻譯文本可能會有些差異。

有許多方法可以在一定程度上評估翻譯品質的好壞,其中最常用和最有效的指標是BLEU(BilinguaL Evaluation Understudy)。假設我們有兩個翻譯器給出的候選結果,如下:

候選 1: Statsbot makes it easy for companies to closely monitor data from various analytical platforms via natural language.

候選 2: Statsbot uses natural language to accurately analyze businesses’ metrics from different analytical platforms.

上面的這兩個候選結果的意思是一樣的 ,但是所用到的語法結構和翻譯品質存在不同。

讓我們看看翻譯人員給出的參照翻譯結果:

參照結果1: Statsbot helps companies closely monitor their data from different analytical platforms via natural language.

參照結果2: Statsbot allows companies to carefully monitor data from various analytics platforms by using natural language.

很明顯,以參照結果為標準,候選1的翻譯品質更好,是因為相較於候選2,候選1從字面上和參照結果更為接近。BLEU指標的基本思想也是這樣的,通過計算機器翻譯的結果和參照結果的n-grams的匹配程度(忽略n-gram的相對位置資訊)來衡量翻譯品質(匹配的n-gram越多,翻譯品質越好)。這裡我們只考慮匹配的準確率,沒有考慮召回率是因為參照結果比較多從而計算起來比較困難。

現在開始你也可以對複雜的機器翻譯系統進行評估了。通過閱讀了本文,等你下一次使用谷歌翻譯時,你就能想像到在這個系統的背後,是分析了數以百萬計的文檔後才最終得到這樣一個最佳的翻譯結果。

原文連結:

https://blog.statsbot.co/machine-learning-translation-96f0ed8f19e4

更多資訊請關注微信公眾平臺AI科技大本營(ID:rgznai100)

原文地址:

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

雙向RNN模型

接下來介紹雙向迴圈神經網路模型 (BRNN)。BRNN模型由兩個普通的RNN模型組成,只不過這兩個RNN模型處理輸入序列的方向是相反的,一個是處理正向的序列,一個是處理反向的序列。這兩個序列的輸出與相反方向的輸入之間沒有連接關係。

雙向迴圈神經網路

https://www.semanticscholar.org/paper/Hybrid-speech-recognition-with-Deep-Bidirectional-Graves-Jaitly/5807664af8e63d5207f59fb263c9e7bd3673be79

為了理解BRNN模型為什麼會優於單個RNN模型,這裡舉個例子,假設我們有一個包含了9個詞的句子,我們希望預測句子中的第5個詞是什麼。一種情況是我們只知道了前4個詞詞,另一種情況既知道了前4個詞也知道了後4個詞,顯然,後一種情況下能讓我們的預測結果更加準確(因為我們得知了更多的資訊)。

Seq2Seq (Sequence to Sequence) 模型

現在我們來看看seq2seq模型,基礎的seq2seq模型由兩個RNN模型組成:一個用於對輸入序列進行編碼,一個用於對輸出序列進行解碼。

Seq2Seq模型

https://research.googleblog.com/2016/09/a-neural-network-for-machine.html

這樣我們也基於這個模型來實現一個翻譯系統。

然而,我們還需要考慮一個小問題。谷歌翻譯系統目前支援103種語言,因此我們應該有103×102種模型來處理其中任意兩種語言之間的翻譯,而這些模型的效果取決於翻譯文本的熱門與否和訓練語料的數量。最理想的情況是只訓練一種模型,這個模型能夠將任意一種語言翻譯成任意的另一種語言。

谷歌翻譯演算法

這個很棒的演算法是谷歌的工程師在2016年底時提出的,採用了seq2seq模型框架(就是上面提及的那樣)。

唯一的區別在於,模型的編碼器和解碼器之間有一個8層的LSTM-RNN結構,這種結構採用了部分連接(非全連接)的方式來改善模型的運行速度和效果。如果你想深入瞭解,可以閱讀穀歌神經網路翻譯系統這篇論文。

論文地址:

https://arxiv.org/abs/1609.08144

這個方法的核心在於,目前的谷歌翻譯演算法採用了一個統一的翻譯系統,取代了數以萬計的翻譯子系統。

這個系統要求輸入序列的開頭是一個標誌符,表示你希望翻譯成的語言。

一種稱為“Zero-Shot翻譯”的方法既能夠提升翻譯品質,同時也能實現任意兩種語言之間的翻譯(可以是系統沒有見過的語言)。

什麼是更好的翻譯?

當我們在談及現在的谷歌翻譯演算法取得了更好的結果,我們是怎麼評估新的演算法取得的翻譯效果更好的呢?

這件事情並不難做,因為對於一些比較常見的句子而言,我們已經有專業的翻譯官給出的標準翻譯答案。當然,對於同一個句子的翻譯文本可能會有些差異。

有許多方法可以在一定程度上評估翻譯品質的好壞,其中最常用和最有效的指標是BLEU(BilinguaL Evaluation Understudy)。假設我們有兩個翻譯器給出的候選結果,如下:

候選 1: Statsbot makes it easy for companies to closely monitor data from various analytical platforms via natural language.

候選 2: Statsbot uses natural language to accurately analyze businesses’ metrics from different analytical platforms.

上面的這兩個候選結果的意思是一樣的 ,但是所用到的語法結構和翻譯品質存在不同。

讓我們看看翻譯人員給出的參照翻譯結果:

參照結果1: Statsbot helps companies closely monitor their data from different analytical platforms via natural language.

參照結果2: Statsbot allows companies to carefully monitor data from various analytics platforms by using natural language.

很明顯,以參照結果為標準,候選1的翻譯品質更好,是因為相較於候選2,候選1從字面上和參照結果更為接近。BLEU指標的基本思想也是這樣的,通過計算機器翻譯的結果和參照結果的n-grams的匹配程度(忽略n-gram的相對位置資訊)來衡量翻譯品質(匹配的n-gram越多,翻譯品質越好)。這裡我們只考慮匹配的準確率,沒有考慮召回率是因為參照結果比較多從而計算起來比較困難。

現在開始你也可以對複雜的機器翻譯系統進行評估了。通過閱讀了本文,等你下一次使用谷歌翻譯時,你就能想像到在這個系統的背後,是分析了數以百萬計的文檔後才最終得到這樣一個最佳的翻譯結果。

原文連結:

https://blog.statsbot.co/machine-learning-translation-96f0ed8f19e4

更多資訊請關注微信公眾平臺AI科技大本營(ID:rgznai100)