谷歌翻譯原理是什麼,從語言A到B,中間是否要翻譯成中介語言C(如英語)?

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

A和B可能是非常小眾的語言


谷歌翻譯作為一個支持上百種語言翻譯的軟體,其原理很難一言以蔽之。要說核心技術的話,目前應該就是谷歌神經網路機器翻譯系統(GNMT)了。

/*

本來想簡單介紹一下 GNMT,但發現沒辦法做到「簡單」…… GNMT 中應用了許多現在流行的技術(RNN-LSTM、seq2seq、Attention、residual connections 等),是個略複雜的系統。偷懶掛個原文地址(https://arxiv.org/abs/1609.08144)。

*/

對於第二個問題,答案是:目前谷歌翻譯所支持的一部分語言對需要以第三種語言作為中介,一部分語言對則不需要。畢竟開發有先後,資源也有限,不能指望每個語言對的翻譯所使用的技術完全一樣,除非哪天我們做了個大統一模型……

以第三種語言為中介算是一個折中的選擇。除了訓練數據不那麼好準備之外,這麼多模型所需要的資源也是必須考慮的問題。比方說,如果現在要支持一百種語言的直接互譯,那就得同時運行和維護一萬個模型。而如果只開發英語相關的模型,其他非英語的語言對翻譯全部通過英語作為中介,那麼需要運行和維護的模型數量就降到了兩百。

當然,通過中介語言進行翻譯的一個顯而易見的問題在於翻譯的錯誤是會累積的(其他回答中已經吐槽得很到位了,雖然不一定是因為使用了中介語言的鍋……)。就好比一句話被好幾個人傳過之後,意思可能會跟原本的差了十萬八千里。在這個問題上,除了開發新模型來做直接翻譯之外,還有許多其他解決方案。

比如說 GNMT 支持多語言訓練,也可以進行 Zero-Shot 學習(https://arxiv.org/abs/1611.04558)。簡單來講就是可以餵給模型各種語言對的訓練數據,然後用這一個模型進行多種語言對的翻譯。聽上去是不是很神(bao)奇(li)!再比如說新出的 Transformer 模型(https://arxiv.org/abs/1706.03762)直接捨棄 RNN,純用 Attention 來刻畫句子特徵,從而提升可並行性。

總之,技術在不斷進步,希望這個問題也能常看常新,而谷歌翻譯能越做越貼心。

以上(鞠躬)。


從「顏射烏冬面」這個梗就可以看出至少中日文之間的翻譯是有英文這個中介語言的。待我細細分析:

日本某個麵店為了招待國際友人,特地把店裡的名品「ぶっかけうどん(音:Bukkake Udon)」翻譯成了英文和中文。

沒想到日本人先炸鍋了,因為中文翻譯竟然有日本人都看得懂的兩個漢字:顏射(Gansha),但是他們覺得可能是中日漢字意思差異,畢竟「手紙」一次在日本是信件的意思,中文卻是廁紙,就當做一個笑話沒有太深糾。

然後華人也炸鍋了,我們中文哪會把這種詞放在食物里?顏射(Yanshe)在中文中只有一個意思,那就是XXXXX(此處加上意味深長的馬賽克)。

轉來轉去,大家把關注放到了英文翻譯上:Bukkake。這個詞可是日本文化軟實力的體現,世界各大色情網站都專門為這個詞開闢了一個類別,點開後便是各種XXXXX(此處加上乳白濃厚的馬賽克)的場面。

謎底揭曉,Google原來翻譯時用了英文這個中介語言。把日文的「ぶっかけ」翻譯成了英文的「Bukkake」,然後翻譯成了中文的「顏射」

最後說明一下,「ぶっかけうどん」的中文應該叫「醬油烏冬面」。


要。甚至不需要AB小眾的條件,日中翻譯都會以英語為中介。[del]拉丁語系不清楚。[/del]

實例:近い→close→關閉。

——

老哥們別問了,我都加上刪除記號了[扶額]

為什麼很多人喜歡提及「拉丁語系」這個詞?


現在或許還是要的,但不遠的將來可能就不需要了。Google採用的是seq2seq+attention模型進行文本翻譯。以前encoder,decoder每一種語言都要分別做,但是現在提出的zero-shot learning(無樣本學習)中也取得了不錯的成果。

大致訓練方法與標準seq2seq不同的地方在於(1)解碼器與編碼器改為了深層(8層)的GRU(2)在訓練集輸入的開頭加上&<2L&>表示翻譯到L,但source language是不告訴機器的,需要學出來。

a,b是通過了中間語言翻譯,c是直接訓練的結果。d,e雖然BLEU分不高,但的的確確邁出了zero-shot translation的一步。

https://arxiv.org/pdf/1611.04558.pdf


需要。

我去年上統計自然語音處理課的老師是slav petrov, 谷歌紐約做nlp的manager, 他去年上課的時候是說是需要英語為中介語的。


從個人經驗來看,去年以前大多都用英語作為中介。我高中有一次俄譯中遇到很古怪的譯文,又譯成英語就知道是怎麼回事了。因為不懂俄語,具體哪個詞記不清了,大致類似於:一個表示「匹配」的詞,譯成了「火柴」,因為譯成中介語英語時是match。

不過這裡(Zero-Shot Translation with Google』s Multilingual Neural Machine Translation System)顯示,去年11月起Google翻譯開始實施兩種語言間的直接翻譯。以文中提到的日韓互譯為例,兩種語言的語法有很強的對應關係,但與英語都相去甚遠,之前的翻譯體驗很不好,現在譯文大多能順暢地讀下來。對我這種只懂其中一種的人而言,遇到網路上另一種語言的文本,這半年來用Google翻譯基本沒有讀不通讀不懂的地方了。


需要。谷歌翻譯依賴平行文本,但兩個非通用語種之間很少能找到平行文本,所以必須以英語作為中介。另外,谷歌翻譯的外文日文互譯是最差的。日文的解讀依賴於語境,有時候一個語篇的第一句話都不一定需要說明主語或賓語。碰到這種情況谷歌就只能亂猜主語了,而且缺乏合適的核查機制,所以翻出來翻出去的東西都不忍卒讀。英法互譯做得是最好的之一,因為加拿大這種國家,還有聯合國工作文件等提供了大量可靠的雙語平行文本。其他語種(如漢語)和英語之間的翻譯有時候依賴於比較不可靠的平行文本,所以翻譯結果只能差強人意。


看圖。這種的就沒有用英語作為中介。

谷歌翻譯里兩種小眾語言的翻譯真是一塌糊塗。


現在是不是直接翻譯不清楚,以前日語翻譯成中文時,所有的「君」(kimi)都翻譯成了「基米」,很長時間以來這麼常用的字一次都沒翻譯對過。

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

似乎不僅是中介語言的問題了。

剛發現一個詞,免ずmenzu,翻譯成英文是pardon,但翻譯成中文是男子。大概是menzu-&>mens-&>男子?


這個問題我一定要答一下,因為這是我最近一直在研究的問題。你提到了A和B可能是非常小眾的語言,那麼這就是一個典型的小樣本問題。小樣本問題一直是制約神經機器翻譯的幾個難題之一,目前已經有了幾種解決的方法。像題主所說的A翻譯到B再由B翻譯到C就是其中的辦法之一,英文叫「bridge」,你可以把它理解為橋接方法,其中C就是那個「橋」,不過這種方法有兩個缺點:1)訓練時間加倍;2)誤差增加。我注意到樓上有人引用了Google的那篇論文,那是一個很棒的想法,用一個模型就可以解決多語言之間的翻譯,而且不需要對原有的模型過多改進,針對這篇論文可以參考我的博客Google多語言神經機器翻譯系統(上)。但是我們也要注意到該方法其實是一種犧牲性能求方便的方法,考慮到工業界產品的快速迭代,在保證速度的前提下,稍微犧牲性能是可取的。除了Google這個方法,MSRA提出的對偶學習也是一種很好的思路,不過就是模型太過複雜(貌似MSRA特別喜歡用複雜的模型解決翻譯問題,比如NIPS17提出的基於價值網路的NMT,簡直太複雜了,原諒我看了好久才明白)。最近我一直在想如何把遷移學習應用到機器翻譯上來,傳統的Seq2Seq+Attention已經取得了巨大的成功,如果將這個架構從一個語言對遷移到其他語言對上或許是個不錯的思路,最重要的是這是個省時省力的方法。


首先,谷歌的機器翻譯的原理就是目前都在用的NMT,當然會比標準的有一些優化,具體可以參考谷歌的論文GNMT。其次,對於是否使用中間語言,目前來說肯定也是需要的,雖然谷歌提出了使用多原語言輸入,多語言輸出的模型有助於改進語料資源比較少的翻譯,但是也並不能完全做到。不過之前的答主的回答並不一定就可以體現這一點,NMT系統畢竟更多的是針對句子的翻譯,對於一些詞的翻譯可能是通過抽取平行詞典的方式去做的,對於沒有的詞當然是直接翻譯成英語然後再翻成其他語言。而且對於句子的翻譯來說,本身的詞庫是有限制的,也不可能覆蓋到所有詞,出現的未登錄詞也是利用平行詞典對翻譯結果進行後編輯實現的,這也是目前機器翻譯的一個問題,很多學者也在研究怎麼去解決詞庫受限,怎麼覆蓋更多語料的問題。所以就我看來,目前的谷歌翻譯已經很不錯了,當然也有問題,不然還要翻譯幹啥呢?(手動滑稽)


至少有些時候是不需要中介語言的。

1.把中文直接翻譯成日文

2.先把中文翻譯成英文(中介語言),再用英文去翻譯成日文

我翻譯(機翻)過一些東西,這兩種方法最後出來的日文經常有明顯差別,所以翻譯成日文時應該沒有經過中介語言。

ps:第二種方法翻譯出的日文效果更好


不需要中間語言 或者你說隱藏層那一個向量生成器叫語言的話 就需要


最近做文言文翻譯項目,用到了谷歌的gnmt模型的編碼器部分。可能我尚處入門階段,以我的理解,整個模型就是編碼器加解碼器,中間的那個碼,其實就是一堆數,不是某種特定語言。

那麼多答案說有中介語言,我猜他們的意思是:因為一個模型只適用於某語言→某語言的翻譯,那谷歌為了省事,乾脆只訓練小眾語言→英語以及英語→小眾語言的模型,這樣理論上就搞定所有小眾語言之間的翻譯,而不需要為了某兩種小眾語言而專門訓練一個模型。

(是不是這樣理解?還望各ML大佬指正)


日韓翻譯幾乎無損啊,可見是沒中間語言


我想起了01年還是什麼時候在科幻世界上看過的一篇小說,就是講主角開發了一個翻譯軟體,所有語言先譯為英語再譯為目標語言

好像是叫什麼玫瑰來著


存在

以前翻譯葡語的otário它告訴我是吸盤

otário-&>sucker-&>吸盤


肯定是有的,而且是英語。

之前波斯語→簡中,翻譯完都看不懂,還夾雜一些英語轉寫的辭彙,之後無奈直接選擇波斯語→英語,語句才通順起來,繼而看得懂大概意思了。

當然其他一些更小語種的(亦或使用人數較少的方言),估計連文字都沒有,Google翻譯就沒轍了。


需要

否則不會有這麼奇怪的東西


google用的是數學方法,根據的是現有的語言譯文,生成翻譯演算法。就是根據大量的現有翻譯推測出新的翻譯。

回答你的問題:不需要。

因為三人成虎,語義每轉一道都有損失,加一道不合算。

===============================

看了arjuna的答案,覺得我有些武斷了


谷歌翻譯完全神經網路,所有語言在機器眼裡沒有任何區別.

現在已經可以實現所有語言一個model實現.

GNMT(Google Neural Machine Translation) 流程簡介 個人理解

主要是 LSTM encoder/decoder 和 attention mechanism

Encoder: LSTM or bi-directional LSTM

Decoder: LSTM

下面介紹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} .


推薦閱讀:

如何使用「爬蟲/數據挖掘」自動尋找某「話題」的「父話題」?
推薦系統中的推薦理由實現,有什麼好的思路嗎?
自然語言處理的master和PhD比較是完全沒有優勢嗎?
什麼是Word2Vec模型?它如何實現?

TAG:機器學習 | 自然語言處理 | 谷歌Google | 翻譯 |