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