Statsbot數據科學家Daniil Korbut簡明扼要地介紹了用于機器學習翻譯的基本原理:RNN、LSTM、BRNN、Seq2Seq、Zero-Shot、BLEU。
我們都在使用的很多技術,我們其實并不知道它們到底是如何工作的。實際上,理解機器學習驅動的引擎并非易事。Statsbot團隊博客希望能講清楚機器學習是怎么一回事。這次我們決定探索機器翻譯,并解釋Google翻譯算法的原理。
許多年前,翻譯來自未知語言的文本是非常耗時的。使用簡單的詞匯表逐字翻譯之所以很困難,是因為讀者必須知道語法規則,在翻譯整句時需要記住所有的語言版本。
現在,我們不需要為此付出太多的努力——只需將它們粘貼到Google翻譯中,就可以翻譯短語、句子甚至大段文本。然而,大多數人實際上并不關心機器翻譯的引擎是如何工作的。本文為那些關心這個的人而寫。
深度學習翻譯問題
如果Google翻譯引擎試圖儲存所有的翻譯,甚至僅僅儲存短句的翻譯,都是行不通的,因為可能的變體數量巨大。最好的想法可能是教會計算機一組語法規則,并根據語法規則來翻譯句子,如果這一切真像聽起來那樣簡單的話。
如果你曾經試過學習外語,那么你該知道規則總是有很多例外的。當我們試圖在程序中刻畫所有這些規則,所有這些例外,乃至例外的例外時,翻譯質量就崩塌了。
現代機器翻譯系統使用不同的方法:通過分析大量文檔將文本與規則聯系起來。
創建你自己的簡單機器翻譯工具,對任何數據科學簡歷來說都是一個很棒的項目。
我們試著調查一下我們稱之為機器翻譯的“黑盒子”里隱藏著什么。深度神經網絡可以在非常復雜的任務(語音/視覺對象識別)中取得優異的結果,但是,盡管它們很靈活,卻只能應用于具有固定維度的輸入和目標的任務。
循環神經網絡
因此,我們需要長短期記憶網絡(LSTM),它能應對事先未知長度的序列。
LSTM是一種能夠學習長期依賴的循環神經網絡(RNN)。循環神經網絡看起來就像一串重復的模塊。
via colah.github.io
因此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元語法的幾何平均值。
原文標題:機器學習翻譯基本原理
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論