您的位置:首頁>正文

電腦如何“讀懂”語言——機器翻譯簡明原理

Statsbot資料科學家Daniil Korbut簡明扼要地介紹了用於機器學習翻譯的基本原理:RNN、LSTM、BRNN、Seq2Seq、Zero-Shot、BLEU。

我們都在使用的很多技術, 我們其實並不知道它們到底是如何工作的。 實際上, 理解機器學習驅動的引擎並非易事。 Statsbot團隊博客希望能講清楚機器學習是怎麼一回事。 這次我們決定探索機器翻譯, 並解釋Google翻譯演算法的原理。

許多年前, 翻譯來自未知語言的文本是非常耗時的。 使用簡單的詞彙表逐字翻譯之所以很困難, 是因為讀者必須知道語法規則, 在翻譯整句時需要記住所有的語言版本。

現在, 我們不需要為此付出太多的努力——只需將它們粘貼到Google翻譯中,

就可以翻譯短語、句子甚至大段文本。 然而, 大多數人實際上並不關心機器翻譯的引擎是如何工作的。 本文為那些關心這個的人而寫。

深度學習翻譯問題

如果Google翻譯引擎試圖儲存所有的翻譯, 甚至僅僅儲存短句的翻譯, 都是行不通的, 因為可能的變體數量巨大。 最好的想法可能是教會電腦一組語法規則, 並根據語法規則來翻譯句子, 如果這一切真像聽起來那樣簡單的話。

如果你曾經試過學習外語, 那麼你該知道規則總是有很多例外的。 當我們試圖在程式中刻畫所有這些規則, 所有這些例外, 乃至例外的例外時, 翻譯品質就崩塌了。

現代機器翻譯系統使用不同的方法:通過分析大量文檔將文本與規則聯繫起來。

創建你自己的簡單機器翻譯工具, 對任何資料科學簡歷來說都是一個很棒的專案。

我們試著調查一下我們稱之為機器翻譯的“黑盒子”裡隱藏著什麼。 深度神經網路可以在非常複雜的任務(語音/視覺物件識別)中取得優異的結果, 但是, 儘管它們很靈活, 卻只能應用於具有固定維度的輸入和目標的任務。

迴圈神經網路

因此, 我們需要長短期記憶網路(LSTM), 它能應對事先未知長度的序列。

LSTM是一種能夠學習長期依賴的迴圈神經網路(RNN)。 迴圈神經網路看起來就像一串重複的模組。

因此LSTM在模組之間傳遞資料, 比如, 為了生成Ht, 我們不僅使用Xt, 同時使用所有X之前的輸入。 關於LSTM的更多資訊, 可參考Understanding LSTM Networks(英文)和迴圈神經網路入門(中文)。

雙向迴圈神經網路

我們的下一步是雙向迴圈神經網路(BRNN)。 BRNN將常規RNN的神經元分成兩個方向。 一個方向是正向的時間, 或前饋狀態。 另一個方向是負向的時間, 或回饋狀態。 這兩個狀態的輸出與反方向的狀態的輸入互不相連。

要理解為何BRNN效果更好, 可以想像一下我們有一個包含9個單詞的句子, 然後想要預測第5個單詞。 我們可以讓網路僅僅知道前面4個單詞, 或者讓網路知道前面4個單詞和後面4個單詞。 顯然第二種情況下預測的品質會更好。

序列到序列

然後是序列到序列模型(也稱為seq2seq)。 基本的seq2seq模型包含兩個RNN:一個處理輸入的編碼網路和一個生成輸出的解碼網路。

最後, 我們將創建我們的第一個機器翻譯工具!

不過, 讓我們先考慮一個絕招。 Google翻譯目前支援103種語言, 所以我們應該有103x102個不同的模型。 當然, 取決於語言的流行程度和訓練網路需要的文檔數量, 這些模型的品質會有所不同。 最好我們能創建一個神經網路, 然後這個網路能接受任何語言作為輸入, 然後將其翻譯成任何語言。

Google翻譯

這個想法正是Google工程師們在2016年末實現的想法。 Google工程師使用的正是我們上文提及的seq2seq模型。

唯一的例外是在編碼和解碼網路之間有8層LSTM-RNN網路, 層間有殘差連接, 還有一些出於精度和速度考慮的調整。 如果你想深入瞭解相關資訊, 可以看Google’s Neural Machine Translation System這篇論文。

最重要的一點是Google的翻譯演算法使用單個系統, 而不是包含每對語言組合的龐大集合。

在輸入句子的開始, 系統需要一個指明目的語言的token。

這一方法改善了翻譯的品質, 同時允許翻譯那些系統沒有見過對應譯文語料的語言組合, 這一方法稱為“零樣本翻譯”(Zero-Shot Translation)。

更好的翻譯?

當我們談論Google翻譯演算法的改進和更好的結果時, 我們如何才能正確地評估第一個翻譯候選比第二個候選更好呢?

這不是一個微不足道的問題, 因為對於一些常用的句子, 我們有來自專業譯員的參考譯文集合, 這些譯文間當然有一些差異。

能部分解決這個問題的方法有很多, 但最流行和最有效的衡量標準是BLEU(bilingual evaluation understudy)。 想像一下, 我們有來自機器翻譯的兩個候選:

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

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

儘管它們的意思相同, 但在品質和結構上都有差異。

讓我們看下兩個來自人類的翻譯:

Reference 1: Statsbot helps companies closely monitor their data from different analytical platforms via natural language.

Reference 2: Statsbot allows companies to carefully monitor data from various analytics platforms by using natural language.

顯然,候選一更好,與候選二相比,候選一和人工翻譯共用更多的單詞和短語。這是簡單BLEU方法的核心想法。我們可以比較候選翻譯和參考翻譯的n元語法,並計算匹配的數量(與它們的位置無關)。我們只評估n元語法的準確率,因為計算多個參考的召回很困難,評估結果是n元語法的幾何平均值。

現在可以評估機器學習翻譯的複雜引擎了。下一次使用Google翻譯進行翻譯時,想像一下,在返回最好的版本之前,它分析了數百萬個文檔。

Reference 1: Statsbot helps companies closely monitor their data from different analytical platforms via natural language.

Reference 2: Statsbot allows companies to carefully monitor data from various analytics platforms by using natural language.

顯然,候選一更好,與候選二相比,候選一和人工翻譯共用更多的單詞和短語。這是簡單BLEU方法的核心想法。我們可以比較候選翻譯和參考翻譯的n元語法,並計算匹配的數量(與它們的位置無關)。我們只評估n元語法的準確率,因為計算多個參考的召回很困難,評估結果是n元語法的幾何平均值。

現在可以評估機器學習翻譯的複雜引擎了。下一次使用Google翻譯進行翻譯時,想像一下,在返回最好的版本之前,它分析了數百萬個文檔。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示