機器翻譯的流程(原理)是怎麼樣的?

本題已收錄至知乎圓桌:機器之能 X 語言之美,更多「人工智慧」相關話題歡迎關注討論。

前一陣看了微軟的即時翻譯,覺得很酷炫,想搞清楚裡面的一些基礎原理。


目前最重要的兩種機器翻譯方式:規則法和統計法

1. 規則法(rule based machine translation, RBMT),依據語言規則對文本進行分析,再藉助計算機程序進行翻譯。多數商用機器翻譯系統採用規則法。

規則法機器翻譯系統的運作通過三個連續的階段實現:分析,轉換,生成,根據三個階段的複雜性分為三級。

- 直接翻譯:簡單的詞到詞的翻譯。

- 轉換翻譯:翻譯過程要參考併兼顧到原文的詞法、句法和語義信息。因為信息來源範圍過於寬泛,語法規則過多且相互之間存在矛盾和衝突,轉換翻譯較為複雜且易出錯。【別說轉換了,光是根據各種語法規則,對源語言進行分析都會崩潰好嗎!

- 國際語翻譯:迄今為止,還只是設想。大概是想憑藉通用的完全不依賴語言的形式,實現對語言信息的解碼。【國際語本身就是人工語言啊,還怎麼做到不依賴語言形式。這個想法最早出現在13世紀orz

Bernard Vauquois" pyramid

2. 統計法 (statistical machine translation, SMT),通過對大量的平行語料進行統計分析,構建統計翻譯模型(辭彙、比對或是語言模式),進而使用此模型進行翻譯,一般會選取統計中出現概率最高的詞條作為翻譯,概率演算法依據貝葉斯定理。假設要把一個英語句子A翻譯成漢語,所有漢語句子B,都是A的可能或是非可能的潛在翻譯。Pr(A)是類似A表達出現的概率,Pr(B|A)是A翻譯成B出現的概率。找到兩個參數的最大值,就能縮小句子及其對應翻譯檢索的範圍,從而找出最合適的翻譯。

SMT根據文本分析程度級別的不同分為兩種:基於詞的SMT和基於短語的SMT,後一個是目前普遍使用的,Google用的就是這種。翻譯文本被自動分為固定長度的詞語序列,再對各詞語序列在語料庫里進行統計分析,以查找到出現對應概率最高的翻譯。【所以,不要嫌棄谷歌翻譯啦,如果不是依託於它自己強大的搜索引擎,能獲取相對數量的語料庫,翻譯的質量可能更糟,可以對比必應和百度。非在線的開源機器翻譯也有做得很棒的,多也是使用的統計法模式。

其他方式還有如範例法(example based machine translation, EBMT),類似統計法原理,不同的點在於比對對象是相對小型的語料庫,從中找到對應的翻譯片段的類似範例,再用片段組成相應的翻譯;上下文法(context based machine translation, CBMT);知識法(knowledge based machine translation, KBMT)和混合法,但是不及前面兩種使用率高。

剛好這兩天在看Daniel Stein寫的MT概述"Maschinelle übersetzung – ein überblick",有提到機器翻譯的不同類型和原理,以上。


作者:九五要當學霸

鏈接:知乎專欄

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

原文:Adam Geitgey

原文鏈接:https://medium.com/@ageitgey/machine-learning-is-fun-part-5-language-translation-with-deep-learning-and-the-magic-of-sequences-2ace0acca0aa#.t5upusfij

翻譯:巡洋艦科技——趙95

你是不是看煩了各種各樣對於深度學習的報導,卻不知其所云?我們要來改變這個問題。

有趣的機器學習 前六章已更新!點此查看第一章:最簡明入門指南、第二章:用機器學習【製造超級馬里奧】的關卡、第三章:圖像識別【鳥or飛機】第四章:用深度進行【人臉識別】第五章:使用深度學習進行【語言翻譯】和 序列的魔力第六章:如何用深度學習進行【語音識別】

我們都知道並且喜歡使用Google翻譯,這個網站可以瞬時翻譯100種不同的人類語言,就好像有魔法一樣。他甚至存在於我們的手機和智能手錶上面:(知乎無法上傳太大的GIF,看圖請戳原文)

Google翻譯背後的科技被稱為機器翻譯。它改變了世界,在本來根本不可能的情況下讓(不同語言的)人們完成了溝通。

但我們都知道,在過去的15年里,高中學生已經使用Google翻譯...額 ...協助他們完成他們的西班牙語作業。這已經不是新聞了…?

事實證明,在過去兩年,深度學習已經完全改寫了我們的機器翻譯方法。那些對語言翻譯一無所知的深度學習研究人員正在利用一個個相對簡單的機器學習解決方案,來打敗世界上最好的專家建造的語言翻譯系統。

這一突破背後的技術被稱為序列到序列學習sequence to sequence learning。這是一項非常強大的技術,被用於解決許多種類的問題。在我們看到它如何被用於翻譯之後,我們還將學習這個演算法是怎樣用來編寫AI聊天機器人和描述圖片的。

我們開始吧!

讓計算機翻譯

那麼我們該如何編寫代碼,才能讓計算機翻譯人類的語言呢?

最簡單的方法,就是把句子中的每個單詞,都替換成翻譯後的目標語言單詞。這裡有一個簡單的例子,把西班牙語逐字翻譯成英語:

我們只是用匹配的英語單詞替換每個西班牙單詞。

這很容易實現,因為你所需要是一本字典來查找每個單詞的翻譯。但結果並不好,因為它忽略了語法和上下文的聯繫。

因此,下一件你可能要做的事,就是開始添加特定語言規則以改進結果。例如,你可能將兩個常用詞翻譯為片語。你可能互換名詞和形容詞的順序,因為他們在西班牙語中以相反的順序出現:

這真的有效!如果我們就繼續添加更多的規則,直到我們可以應對每一部分語法,我們的程序應該就能夠翻譯任何句子了,對吧?

這就是最早的機器翻譯系統的工作原理。語言學家提出了許多複雜的規則,並逐一編程實現。一些世界上最聰明的語言學家在冷戰期間辛勤努力了多年,才創建出了一些更容易理解俄羅斯人交流的翻譯系統。

不幸的是,這種套路只對簡單問題適用,比如說像天氣預報這樣結構簡單的文檔。它對於真實世界的文字來說並不可靠。

問題是,人類語言並不總是遵循固定的規則。人類語言充滿了各種特殊情況,區域差異,或者乾脆就不按套路出牌(#‵′)凸。我們說英語的方式更多地受到幾百年前入侵的人的影響,而不是由坐下來定義語法規則的人。

利用統計數據使計算機更好地翻譯

在基於規則的系統失效之後,一些新的翻譯方法被開發出來了,他們基於概率和統計的模型而不是語法規則。

建造一個基於統計的翻譯系統需要大量的訓練數據,其中完全相同的文本被翻譯成至少兩種語言。這種雙重翻譯的文本稱為平行語料庫parallel corpora。18世紀的科學家以同樣的方式在羅塞塔石碑上面從希臘語中找出埃及象形文字。(譯者註:羅塞塔石碑,高1.14米,寬0.73米,製作於公元前196年,刻有古埃及國王托勒密五世登基的詔書。石碑上用希臘文字、古埃及文字和當時的通俗體文字刻了同樣的內容,這使得近代的考古學家得以有機會對照各語言版本的內容後,解讀出已經失傳千餘年的埃及象形文之意義與結構,而成為今日研究古埃及歷史的重要里程碑)以同樣的方式,計算機可以使用平行語料庫猜測如何將文本從一種語言轉換為另一種語言。

幸運的是,有很多雙重翻譯的文本已經存在在世界的各個角落。例如,歐洲議會將其訴訟程序翻譯成21種語言。因此,研究人員經常使用這些數據來幫助建造翻譯系統。

訓練數據通常令人興奮!但這只是無數條政府文件而已...

用概率的思維思考

統計翻譯系統的根本不同,在於它們試圖生成不止一個精確的翻譯。相反,他們生成成千上萬種可能的翻譯,然後他們按照可能最正確的給這些翻譯排名。他們通過與訓練數據的相似性來估計有多「正確」。以下是它的工作原理:

第1步:將原始句子分成塊

首先,我們將我們的句子分成簡單的塊,每一塊都可以輕鬆翻譯:

第2步:找到每一塊的所有可能的翻譯

接下來,我們將翻譯每塊文字,我們將通過尋找我們資料庫中所有人類翻譯過的相同詞塊來完成我們的翻譯。

要著重注意的是,我們不只是在一本簡簡單單的翻譯字典中查找這些詞塊。相反,我們看到是真實的人在真實的句子中如何翻譯這些相同的詞。這有助於我們捕獲到在不同語境中所有不同的表達方式:

即使最常見的短語也有很多種可能的翻譯

這些可能的翻譯中的有一些會比其他翻譯更頻繁地使用。根據我們訓練數據中每個翻譯出現的頻率,我們可以給它設定一個分數。

例如,有人說「Quiero」更多的時候是指「我想要」而不是「我嘗試」。所以,我們可以使用我們訓練數據中 「Quiero」被翻譯成「我想要」的頻率,給「我想要」這個翻譯更多的權重。

第3步:生成所有可能的句子,找到最有可能的那句

接下來,我們將使用這些詞塊的每種可能翻譯來組合生成一堆可能的句子。

從第二步中列出的翻譯過的詞塊中,我們可以通過不同組合方式生成將近2,500個不同的句子。下面是一些例子:

I love | to leave | at | the seaside | more tidy.

I mean | to be on | to | the open space | most lovely.

I like | to be |on | per the seaside | more lovely.

I mean | to go | to | the open space | most tidy.

但在真實世界中,因為有不同的語序和詞塊分解方法,所以實際上有更多可能的詞塊組合:

I try | to run | at | the prettiest | open space.

I want | to run | per | the more tidy | open space.

I mean | to forget | at | the tidiest | beach.

I try | to go | per | the more tidy | seaside.

現在需要掃描所有這些生成的句子,找到那個聽起來「最像人話」的句子。

為此,我們將每個生成的句子與來自英語書籍和新聞故事的數百萬個真實句子進行比較。我們擁有的英語文本越多越好。

我們採用這種可能的翻譯:

I try | to leave | per | the most lovely | open space.

很可能沒有人用英語寫過這樣的句子,所以它不會與我們的資料庫任何句子非常相似。我們給這個可能的翻譯設定一個低概率的得分。

但看看下面這個可能的翻譯:

I want | to go | to | the prettiest | beach.

這個句子和我們的訓練集中的句子很類似,所以它將獲得一個高概率的得分。

在嘗試過所有可能的句子之後,我們會選擇那個,既是最有可能的詞塊翻譯,又與真實英語句子最相似,的句子。

我們最後的翻譯將是「I want | to go | to | the prettiest | beach.

我想去最漂亮的海灘。」不錯!

有里程碑意義的統計機器翻譯

當有足夠多的訓練數據的時候,統計機器翻譯系統的性能要優於基於語言規則的系統。 Franz Josef Och基於這些想法並做出了改進,並在21世紀初使用它們構建了Google翻譯。機器翻譯終於可以被全世界使用。

早期的時候,基於概率翻譯的「愚蠢」方法居然比語言學家設計規則系統做的更好,這讓每個人都感到驚訝。這導致了80年代的時候,研究人員會(有點刻薄的)說:

「每當我炒了一個語言學家魷魚的時候,我的翻譯準確度就會上升。」 Frederick Jelinek

統計機器翻譯的局限性

雖然統計機器翻譯系統效果還不錯,但是他們難於構建和維護。每一對需要翻譯的新語言,都需要專業人士對一個全新的多步驟「翻譯流水線」進行調試和修整。

因為構建這些不同的流水線需要做太多工作,所以我們必須進行權衡。如果你要用Google翻譯把喬治亞語翻譯成泰盧固語(印度東部德拉維拉語言),那麼作為一個中間步驟,它必須先翻譯成英語。因為並沒有太多喬治亞到泰盧固語的翻譯需求,所以在這一對語言上投入太多並沒有太大意義。相比於英語翻譯到法語,它可能會使用一個更低級的「翻譯流水線」。

如果我們能讓計算機為我們做所有令人討厭的開發工作,這不更好么?

讓電腦翻譯的更好——無需昂貴的專家們

機器翻譯的核心是一個黑盒系統,它通過查看訓練數據,自己就可以學習如何翻譯。使用統計機器翻譯,人們仍然需要建立和調整多步驟的統計模型。

2014年,KyungHyun Cho的團隊取得了突破。他們發現了一種應用深度學習來構建這種黑盒系統的方法。他們的深度學習模型採用平行語料庫,並使用它來學習如何在無任何人為干預的情況下在這兩種語言之間進行翻譯。

兩個宏偉的方法使這成為可能 - 循 環神經網路和編碼。通過巧妙地結合這兩個想法,我們可以建立一個能夠自學的翻譯系統。

循環神經網路

我們已經在第2章討論過了循環神經網路,讓我們快速回顧一下。

一個常規(非循環)神經網路是泛型機器學習演算法,接收一序列數字並計算結果(基於先前的訓練)。神經網路可以用作一個黑盒子,來解決很多問題。例如,我們可以基於房子的屬性,使用神經網路來計算房屋的近似價格:

但是像大多數機器學習演算法一樣,神經網路是無狀態(Stateless)的。你輸入一序列數字,神經網路計算並輸出結果。如果再次輸入相同的數字,它總是計算出相同的結果。它沒有進行過的計算的記憶。換句話說,2 + 2總是等於4。

一個循環神經網路(Recurrent Neural Network或簡稱RNN)是一個稍微改進過的神經網路的版本,區別是RNN先前的狀態是可以被當做輸入,再次帶入到下一次計算中去。這意味著之前的計算結果會更改未來計算的結果!

人類痛恨他:一個黑科技就讓機器變得更聰明!

我們為什麼要這樣做?無論我們上次計算結果是什麼,2 + 2不應該總是等於4么?

這個技巧允許神經網路學習數據序列中的規律。例如,基於句子的前幾個詞,你可以使用它來預測句子中下一個最有可能的單詞是什麼:

實現智能手機輸入法的「自動更正」的方法之一

當你想要學習數據中的規律時,RNN將會非常有用。因為人類語言其實只是一個大而複雜的「規律」,自然語言處理的各個領域越來越多地使用RNN。

如果你想了解更多關於RNN,你可以閱讀第2章,我們使用了RNN來生成一本海明威寫作風格的假書,然後使用同一個RNN生成了超級馬里奧兄弟的遊戲關卡。

編碼

我們需要回顧的另一個想法是編碼Encoding。在第4章中作為臉部識別的一部分,我們談到了編碼。為了解釋編碼,讓我們稍作調整,了解一下如何用電腦區分兩個人。

當你試圖用電腦區分兩張臉時,你從每張臉收集不同的測量值,並與其他臉部比較這些測量值。例如,我們可以測量耳朵的大小或眼間的間距,比較兩個圖片的測量值以確定他們是否是同一個人。

你可能已經從觀看熱門影視劇CSI當中對這個想法耳熟能詳了(知乎無法上傳太大的GIF,看圖請戳原文)。

把面部特徵轉換為一系列測量值的想法就是編碼的例子之一。我們獲取到原始數據(面部圖片),並將其轉換為代表這張臉的一系列測量值(編碼)。

但是像我們在第4章中看到的,我們不必提出一個具體的面部特徵列表來測量我們自己。相反,我們可以使用神經網路,讓它自動從面部生成測量值。找出哪些測量值能夠區分兩個相似的人,計算機在這方面比我們做的更好:

這些是由神經網路產生的面部特徵測量值,訓練後的該神經網路可以保證不同的數字代表了不同人的面部。

這是我們的編碼。它讓我們用簡單的東西(128個數字)代表非常複雜的東西(一張臉的圖片)。現在比較兩張臉更加容易了,因為我們只需要比較這128個數字而不是比較整張臉的圖像。

你猜怎麼著?我們可以用句子做同樣的事情!我們可以把任何一個句子表達成一系列獨特的編碼:

這一序列數字代表的是英語句子「有趣的機器學習!」。不同的句子將由不同的數字集表示。

為了生成這個編碼,我們將句子輸入到RNN中,一次一個詞。最後一個詞處理之後的最終結果,就將是表示整個句子的數值:

因為RNN具有記憶功能,能夠記住處理過得每個詞,所以它計算的最終編碼表示句子中的所有詞。

棒極了,所以現在我們有一種方法來把一個整個句子表示成一組獨特的數字!我們不知道編碼中的每個數字是什麼意思,但這並不重要。只要每一句話都能由一組獨特的數字標識出來,那麼我們就不需要準確地知道這些數字是如何生成的。

讓我們開始翻譯吧!

好的,所以我們知道怎樣使用RNN去個一句話編碼並生成一組獨特的數字。它有什麼用呢?事情從這兒開始變得酷炫了!

如果我們使用兩個RNNs並將它們首尾相連呢?第一個RNN可以給句子生成編碼。然後,第二RNN遵循相反的邏輯,解碼得到原始句子:

當然,編碼然後再解碼並得到原始語句並沒有太大用處。但是如果(這裡是問題的關鍵),我們訓練第二個RNN,使它解碼成西班牙語而不是英語,這會怎樣?我們可以使用平行語料庫訓練數據來訓練它:

就像這樣,我們有一個通用的方法,將一序列英語單詞轉換成同樣的西班牙語單詞序列!

這是一個強有力的想法:

l 這種方法主要受限於你擁有的訓練數據量和你可以投入的計算機生產力。機器學習研究人員僅僅在在兩年前發明了這個方法,但它已經表現的和統計機器翻譯系統一樣好了,而後者花了20年時間才開發完善。

l 這不依賴於任何關於人類語言規則的了解。演算法自己計算出這些規則。這意味著你不需要專業人士來調整「翻譯流水線」的各個步驟,計算機為你把這個做好了。

l 這種方法適用於幾乎任何種類的序列到序列sequence-to-sequence問題!而且事實證明,許多有趣的問題都實際上是 序列到序列的問題。繼續閱讀了解其他你可以做的酷炫的事!

注意,我們忽略了一些處理真實數據會碰到的問題。例如,如何處理不同長度的輸入和輸出?這還需要一些額外的工作(請參見bucketing和padding)。非常用詞翻譯也是一個問題。

構建你自己的序列到序列翻譯系統

如果你想建立自己的語言翻譯系統,這兒有一個包括可以在英語和法語之間翻譯的TensorFlow的demo。然而,這並不是給膽小鬼或預算有限的人準備的。這仍然是一項新技術,並且資源有限。即使你有一台帶有高級顯卡的高級電腦,可能也需要連續一個月的時間來訓練你自己的語言翻譯系統。

此外,序列到序列語言翻譯技術正在及快速地改進,以至於難以跟上。許多最近的改進(如添加註意機制attention mechanism或上下文跟蹤tracking context)顯著改善了翻譯結果,但這些發展太過前沿,以至於他們甚至還沒有維基百科頁面。如果你想做認真的去做任何序列到序列學習,隨著技術的發展,你需要持續保持更新,。

序列到序列模型的無窮力量

那麼,我們還能用序列到序列模型做什麼呢?

大約一年前,Google的研究人員表示,你可以使用序列到序列模型來建造AI機器人。這個想法是如此簡單,並且令人震驚的是,它真的有效。

首先,他們獲取了一些Google員工和Google技術支持小組之間的聊天記錄。然後他們訓練了序列到序列模型,其中輸入的句子就是僱員的問題,而技術支持團隊的回復是該句子的「翻譯」。

當用戶與機器人進行交互時,他們將使用該系統「翻譯」每個用戶的消息以獲得機器人的響應。

他們最終得到的是一個半智能機器人,(有時)可以回答真正的技術支持問題。下面是一部分用戶和機器人之間的對話示例:

人:連接被拒絕或類似的東西

機器:我可以知道你連接的網路連接的版本嗎?

人:我不確定我知不知道

機器:是網路連接提示任何用戶證書?

人類:是的

機器:你現在在家還是在工作?辦公室?

人:我在家

機器:試試這個。 goto &頁面,然後輸入您的姓名和密碼

人類:完成

機器:嘗試使用&登錄,然後檢查其是否正常工作

人類:是的,現在它在工作!

機器:棒極了。還有什麼我可以幫助你的?

他們還試圖建立一個基於數百萬部電影字幕的聊天機器人。他們的想法是,使用電影角色之間的對話作為一種訓練機器人像人一樣說話的方式。輸入句子是一名角色的一句話,「翻譯」是另一名角色在對話里回應他的內容:

他們得到了很有意思的結果。機器人不僅僅像一個人,更是顯示出了一點點智能化:

人類:我的名字是david。我的名字是什麼?

機器:david。

人:我的名字是約翰。我的名字是什麼?

機器:約翰。

人類:你是領導還是追隨者?

機器:我是領導者。

人類:你是追隨者還是領導者?

機器:我是領導者。

這只是可能性的開始。我們將不局限於將一個句子轉換成另一個句子,同樣,我們製作一個圖像到序列的模型,它可以將圖像轉換為文本!

Google的另一個團隊通過將第一個RNN替換為卷積神經網路(如我們在第3章中所了解的那樣)。這允許輸入是圖片而不是句子,其餘的工作基本相同:

就像這樣,(只要我們有很多很多的訓練數據)我們就可以把圖片變成單詞!

Andrej Karpathy把這個想法進行了拓展,以構建一個通過分別處理圖像的多個區域,來詳細描述圖像的系統:

Andrej Karpathy論文中的圖片

這個想法使得我們可以構建一個,能夠按照奇怪的要求找到特定圖片的圖片搜索引擎:

例子來自image sentence ranking visualize

甚至有研究人員正在研究相反的問題,僅僅基於文本描述產生一個完整的圖片!

從這些例子,你可以開始想像的各種可能性。 到目前為止,序列到序列應用在從語音識別到計算機視覺各個領域。 我猜,明年會有更多的應用。

如果您想更深入地了解序列到序列模型和翻譯,以下是一些推薦的資源:

  • Richard Socher』s CS224D Lecture— Fancy Recurrent Neural Networks for Machine Translation (video)
  • Thang Luong』s CS224D Lecture — Neural Machine Transation (PDF)
  • TensorFlow』s description of Seq2Seq modeling
  • The Deep Learning Book』s chapter on Sequence to Sequence Learning(PDF)


http://github.com/dayeren/MT_demo

看看這個,說不定會有一些啟發....感覺挺不錯的


所謂的機器翻譯是利用計算機把一種自然語言轉變成另一種自然語言的過程,機器翻譯是語言學、 人工智慧、計算技術和認知科學等學科相結合的產物。

機器翻譯的一般過程包括源語文輸入、識別與分析、生成與綜合和目標語言輸出。當源語文通過鍵盤或掃描器或話筒輸入計算機後,計算機首先對一個單詞逐一識別,再按照標點符號和一些特徵詞識別句法和語義。然後查找機器內存儲的詞典和句法表、語義表,把這些加工後的語文信息傳輸到規則系統中。

在完成對源語文進行識別和分析之後,機器翻譯系統要根據存儲在計算機內部的雙語詞典和目的語的句法規則,逐步生成目標語言的深層次結構,最後綜合成通順的語句,也就是從深層又回到表層,然後將翻譯的結果以文字形式輸送到顯示屏或印表機,或經過語音合成後用喇叭以聲音形式輸出目標語言。

了解學習機器翻譯,勢在必行,機器翻譯與自然語言處理有著密切的聯繫,學習機器翻譯之前,一定要明白,在自然語言處理中,計算機了解語言哪些難點? - 智能研究 多智時代


機器翻譯是利用計算機把一種自然語言轉變成另一種自然語言的過程,用以完成一過程的軟體,稱為機器翻譯系統。

機器翻譯一般過程包括源語文輸入、識別與分析、生成與綜合和目標語言輸出。當語文通過鍵盤或掃描器或話筒輸入計算機後,計算機首先對一個單詞逐一識別,再按照標點符號和一些特徵詞識別語法和語義。然後查找機器內存儲的詞典和句法表、語義表,把這些加工後的語文信息傳輸到規則系統中。

在完成對源語文進行識別和分析之後,機器翻譯系統要根據存儲在計算機內部的雙語詞典和目的語的句法規則,逐步生成目標語言的深層次結構,最後綜合成通順的語句,也就是從深層又回到表層。

最後將翻譯的結果以文字形式輸送到顯示屏或印表機,或經過語音合成後輸出目標語言。說到這,一定要知道,智能語音合成的發展,同時也促進了人工智慧的進步! - 人工智慧 多智時代,機器翻譯是語言學、人工智慧、計算技術和認知科學等學科相結合的產物,可以多多留心相關的科譜資訊!


谷歌機器翻譯

GNMT(Google Neural Machine Translation) 流程簡介 簡易版/入門

主要是 LSTM encoder/decoder 和 attention mechanism

Encoder: LSTM or bi-directional LSTM

Decoder: LSTM

-----------------------------------------------------------------------------------------------------

首先簡單介紹下attention (GNMT的attention是MLP, 實現不同,但是原理類似)

在圖中:

i 代表時序step.

S_{i-1} 是上一個(previous) hidden state.

C_i 是當前的context.

h_1,...,h_n 是encoding vector ( encoder 的 output )

alpha_{ij} 是step i 的attentding weight.

最後的目的是找到 attending weight.


下面介紹NMT的簡單流程。

基本上,encoder 相當於一個預處理(preprocessing), 生成encoding vector (h1,...hn)之後就沒用了,

剩下的就是attention和decoder的工作.

Attention mechanism 是用MLP實現的:

MLP的input是

embedding vector和previous step output的concatenation-&>[ h_1;y_{i-1}]...[ h_i;y_{i-1}]...[ h_n;y_{i-1}]

MLP的output是attending vector C_i ( i is current step).

Decoder 是8層的LSTM, C_i 要和每一層的input做concatenation. (參考google官方的圖)

Decoder 的input和attention的input一樣,是上個step的output y_{i-1} .


語言的意境,AI是不懂得。首先AI行業的從業人員就靈性極低。

比如

身是菩提樹,心如明鏡台,

時時勤拂拭,莫使有塵埃。

菩提本無樹,明鏡亦非台,

本來無一物,何處惹塵埃。

AI行業的從業人員有幾人可解答。

吾心似秋月,碧潭清皎潔。

列物堪比倫,教我如何說。

南台靜坐一爐香,終日凝然萬慮忘。

不是息心去妄想,都緣無事可商量。

獨坐清談久亦勞,碧松燃火暖衾袍。

夜深童子喚不起,猛虎一聲山月高。

碧澗泉水清,寒山月華白。

默知神自明,觀空境逾寂。

這些詩歌,AI行業的從業人員有幾人懂得!

還指望AI機器翻譯出來!真是大笑話!


推薦閱讀:

如何理解谷歌團隊的機器翻譯新作《Attention is all you need》?
電腦通過什麼的編程方式翻譯英語的?
誰能推薦一個好用的多國語機器翻譯軟體?

TAG:英語翻譯 | 機器翻譯 |