Statsbot數(shù)據(jù)科學(xué)家Daniil Korbut簡明扼要地介紹了用于機(jī)器學(xué)習(xí)翻譯的基本原理:RNN、LSTM、BRNN、Seq2Seq、Zero-Shot、BLEU。
我們都在使用的很多技術(shù),我們其實(shí)并不知道它們到底是如何工作的。實(shí)際上,理解機(jī)器學(xué)習(xí)驅(qū)動的引擎并非易事。Statsbot團(tuán)隊博客希望能講清楚機(jī)器學(xué)習(xí)是怎么一回事。這次我們決定探索機(jī)器翻譯,并解釋Google翻譯算法的原理。
許多年前,翻譯來自未知語言的文本是非常耗時的。使用簡單的詞匯表逐字翻譯之所以很困難,是因為讀者必須知道語法規(guī)則,在翻譯整句時需要記住所有的語言版本。
現(xiàn)在,我們不需要為此付出太多的努力——只需將它們粘貼到Google翻譯中,就可以翻譯短語、句子甚至大段文本。然而,大多數(shù)人實(shí)際上并不關(guān)心機(jī)器翻譯的引擎是如何工作的。本文為那些關(guān)心這個的人而寫。
深度學(xué)習(xí)翻譯問題
如果Google翻譯引擎試圖儲存所有的翻譯,甚至僅僅儲存短句的翻譯,都是行不通的,因為可能的變體數(shù)量巨大。最好的想法可能是教會計算機(jī)一組語法規(guī)則,并根據(jù)語法規(guī)則來翻譯句子,如果這一切真像聽起來那樣簡單的話。
如果你曾經(jīng)試過學(xué)習(xí)外語,那么你該知道規(guī)則總是有很多例外的。當(dāng)我們試圖在程序中刻畫所有這些規(guī)則,所有這些例外,乃至例外的例外時,翻譯質(zhì)量就崩塌了。
現(xiàn)代機(jī)器翻譯系統(tǒng)使用不同的方法:通過分析大量文檔將文本與規(guī)則聯(lián)系起來。
創(chuàng)建你自己的簡單機(jī)器翻譯工具,對任何數(shù)據(jù)科學(xué)簡歷來說都是一個很棒的項目。
我們試著調(diào)查一下我們稱之為機(jī)器翻譯的“黑盒子”里隱藏著什么。深度神經(jīng)網(wǎng)絡(luò)可以在非常復(fù)雜的任務(wù)(語音/視覺對象識別)中取得優(yōu)異的結(jié)果,但是,盡管它們很靈活,卻只能應(yīng)用于具有固定維度的輸入和目標(biāo)的任務(wù)。
循環(huán)神經(jīng)網(wǎng)絡(luò)
因此,我們需要長短期記憶網(wǎng)絡(luò)(LSTM),它能應(yīng)對事先未知長度的序列。
LSTM是一種能夠?qū)W習(xí)長期依賴的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。循環(huán)神經(jīng)網(wǎng)絡(luò)看起來就像一串重復(fù)的模塊。
via colah.github.io
因此LSTM在模塊之間傳遞數(shù)據(jù),比如,為了生成Ht,我們不僅使用Xt,同時使用所有X之前的輸入。關(guān)于LSTM的更多信息,可參考Understanding LSTM Networks(英文)和循環(huán)神經(jīng)網(wǎng)絡(luò)入門(中文)。
雙向循環(huán)神經(jīng)網(wǎng)絡(luò)
我們的下一步是雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(BRNN)。 BRNN將常規(guī)RNN的神經(jīng)元分成兩個方向。一個方向是正向的時間,或前饋狀態(tài)。另一個方向是負(fù)向的時間,或反饋狀態(tài)。這兩個狀態(tài)的輸出與反方向的狀態(tài)的輸入互不相連。
要理解為何BRNN效果更好,可以想像一下我們有一個包含9個單詞的句子,然后想要預(yù)測第5個單詞。我們可以讓網(wǎng)絡(luò)僅僅知道前面4個單詞,或者讓網(wǎng)絡(luò)知道前面4個單詞和后面4個單詞。顯然第二種情況下預(yù)測的質(zhì)量會更好。
序列到序列
然后是序列到序列模型(也稱為seq2seq)。基本的seq2seq模型包含兩個RNN:一個處理輸入的編碼網(wǎng)絡(luò)和一個生成輸出的解碼網(wǎng)絡(luò)。
最后,我們將創(chuàng)建我們的第一個機(jī)器翻譯工具!
不過,讓我們先考慮一個絕招。Google翻譯目前支持103種語言,所以我們應(yīng)該有103x102個不同的模型。當(dāng)然,取決于語言的流行程度和訓(xùn)練網(wǎng)絡(luò)需要的文檔數(shù)量,這些模型的質(zhì)量會有所不同。最好我們能創(chuàng)建一個神經(jīng)網(wǎng)絡(luò),然后這個網(wǎng)絡(luò)能接受任何語言作為輸入,然后將其翻譯成任何語言。
Google翻譯
這個想法正是Google工程師們在2016年末實(shí)現(xiàn)的想法。Google工程師使用的正是我們上文提及的seq2seq模型。
唯一的例外是在編碼和解碼網(wǎng)絡(luò)之間有8層LSTM-RNN網(wǎng)絡(luò),層間有殘差連接,還有一些出于精度和速度考慮的調(diào)整。如果你想深入了解相關(guān)信息,可以看Google’s Neural Machine Translation System這篇論文。
最重要的一點(diǎn)是Google的翻譯算法使用單個系統(tǒng),而不是包含每對語言組合的龐大集合。
在輸入句子的開始,系統(tǒng)需要一個指明目標(biāo)語言的token。
這一方法改善了翻譯的質(zhì)量,同時允許翻譯那些系統(tǒng)沒有見過對應(yīng)譯文語料的語言組合,這一方法稱為“零樣本翻譯”(Zero-Shot Translation)。
更好的翻譯?
當(dāng)我們談?wù)揋oogle翻譯算法的改進(jìn)和更好的結(jié)果時,我們?nèi)绾尾拍苷_地評估第一個翻譯候選比第二個候選更好呢?
這不是一個微不足道的問題,因為對于一些常用的句子,我們有來自專業(yè)譯員的參考譯文集合,這些譯文間當(dāng)然有一些差異。
能部分解決這個問題的方法有很多,但最流行和最有效的衡量標(biāo)準(zhǔn)是BLEU(bilingual evaluation understudy)。 想象一下,我們有來自機(jī)器翻譯的兩個候選:
候選一: 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.
盡管它們的意思相同,但在質(zhì)量和結(jié)構(gòu)上都有差異。
讓我們看下兩個來自人類的翻譯:
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元語法,并計算匹配的數(shù)量(與它們的位置無關(guān))。我們只評估n元語法的準(zhǔn)確率,因為計算多個參考的召回很困難,評估結(jié)果是n元語法的幾何平均值。
原文標(biāo)題:機(jī)器學(xué)習(xí)翻譯基本原理
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論