機器翻譯都 60 年了,Google為什麼還譯不對「卡頓」 (下)
- 2019 年 11 月 29 日
- 筆記
By 超神經
場景描述:機器翻譯是自然語言處理領域的一個重要應用,從它最初的誕生到現在,已經過去了 60 多年,但在一些小問題上,還是會出現令人啼笑皆非的情況。機器翻譯是如何一步步發展來的?它背後的的機理是什麼樣子?它的局限性又是怎麼一回事呢?
關鍵詞:機器翻譯 發展歷史
上集回顧
- 機器翻譯緩慢發展的六十年
- 基於規則的機器翻譯(RBMT)
- 基於實例的機器翻譯(EBMT)

統計機器翻譯(SMT)
在 1990 年初,在 IBM 研究中心,一個機器翻譯系統首次被展示,它對規則和語言學一無所知。它用兩種語言分析了下圖中的文本,並試圖理解這些模式。

這個想法簡單而美麗。在兩種語言中,一個相同的句子被分成好幾個詞,之後再重新組合。這個操作大約重複了 5 億次,例如,「Das Haus」一詞被翻譯成「house」vs「building」vs「construction」等等。
如果大多數時候源詞(以「Das Haus」為例)被翻譯成「house」,機器就會默認這個含義。注意,我們沒有設置任何規則,也沒有使用任何字典——所有的結論都是由機器完成,由數據和邏輯指導。
翻譯時機器彷彿在說:「如果人們這樣翻譯,我也會這樣做」,於是,統計機器翻譯誕生。

它的優點在於更有效、更準確,而且不需要語言學家。我們使用的文本越多,我們得到的翻譯就越好。

(來自Google內部的統計翻譯:它不僅顯示該含義的使用概率,還進行了其它含義的統計)
還有一個問題:
機器如何把「Das Haus」和「building」這個詞聯繫起來——我們怎麼知道這些是正確的翻譯呢?
答案是我們不知道。
一開始,機器假定「Das Haus」一詞與翻譯的句子中的任何單詞都有同樣的關聯,接下來,當「Das Haus」出現在其他句子中時,與「house」的相關性會增加。這就是「單詞對齊演算法」,這是校級機器學習的一個典型任務。
這台機器需要兩種語言的數百萬個句子,來收集每個單詞的相關統計資訊,那如何獲取這些語言資訊的呢?
我們決定採取歐洲議會和聯合國安全理事會的會議摘要——這些摘要均以所有成員國的語言呈現,能給素材搜集節省大量時間。
- 基於單詞的 SMT
在一開始,第一個統計翻譯系統將句子分成單詞,因為這個方法是直截了當和合乎邏輯的,IBM 的第一個統計翻譯模型稱為「模型 1」。
模型 1:一籃子單詞

模型 1 使用了經典的方法——分裂成單詞和計數統計,但沒有考慮詞序,唯一的訣竅就是把一個單詞翻譯成多個單詞。例如,「Der Staubsauger」可以變成「吸塵器」,但這並不意味著它會變成「真空吸塵器」。
模型 2:考慮句子中的單詞順序

文字排列順序的缺乏是模型 1 的主要局限,而這些在翻譯過程中是非常重要的。模型 2 的出現解決了這個問題:記憶單詞在輸出句子中的通常位置,並在中間步驟中重新洗牌,以便翻譯的更加自然。
那麼,情況變好了嗎?並沒有。
模型 3:加入新詞

翻譯中經常需要增加新詞以完善語義,比如德文要用英文否定的時候用「do」。德文「「Ich will keine Persimonen」」翻譯成英文為 「I do not want Persimmons」 。
為了解決這個問題,模型3中又在前面基礎上添加了兩個步驟:
1. 如果機器考慮到需要加入一個新詞,則 NULL 標記插入;
2. 選擇正確的語法或單詞對每一個詞對齊。
模型 4:詞對齊
模型 2 考慮了單詞對齊,但對重新排序一無所知。例如,形容詞通常會與名詞交換位置,不管順序如何被記住,如果不加入語法因子,很難獲得精妙的翻譯。
因此,模型 4 考慮到這個「相對秩序」——如果兩個詞總是互換位置,模型就會知道。
模型 5:修正錯誤
模型 5 獲得了更多的學習參數,並解決了單詞位置衝突的問題。儘管它們具有革命意義,但基於文字的系統仍然無法處理同音異義的情況,即每個單詞都以一種單一的方式被翻譯出來。
不過,這些系統已不再被使用,因為它們被更高級的基於短語的翻譯所取代。
- 基於短語的SMT
該方法基於所有基於單詞的翻譯原則:統計、重新排序和辭彙技巧。它不僅將文本分割成單詞,還將其分割成短語,精確地說,這是連續的多個單詞序列。
因此,機器學會了翻譯穩定的詞語組合,這明顯提高了準確性。

關鍵在於,這些短語並不總是簡單的句法結構,如果有人意識到語言學和句子結構的干擾,那麼翻譯的品質就會顯著下降。電腦語言學的先驅弗雷德里克·耶利內克(Frederick Jelinek)曾經開玩笑說過:「每次我向語言學家發起攻擊時,語音識別器的性能就會提高。」
除了提高精確性之外,基於短語的翻譯提供了更多雙語文本的選項。對於基於文字的翻譯,來源的精確匹配是至關重要的,因此,它很難在文學或自由翻譯上貢獻價值。
而基於短語的翻譯沒有這個問題,為了提高機器翻譯水平,研究人員甚至開始用不同的語言來解析新聞網站。

從 2006 年開始,大家幾乎都在使用這種方法。Google翻譯、Yandex、Bing 等其他一些知名的在線翻譯系統在 2016 年之前都是基於短語的。
因此,這些翻譯系統翻譯的結果要麼完美無暇,要麼毫無意義,沒錯,這就是短語翻譯的特點。
這種基於規則的老方法總是能得出有失偏頗的結果,Google毫不猶豫將「three hundred」翻譯成「300」,但實際上「three hundred」也有「300 年」的含義,這就是統計翻譯機器普遍存在的局限。
在 2016 年以前,幾乎所有的研究都認為基於短語的翻譯是最先進的,甚至將「統計機器翻譯」和「基於短語的翻譯」等同看待,而沒有人意識到Google將掀起對整個機器翻譯的革命。
- 基於句法的 SMT
這個方法也應該簡短地提到。在神經網路出現之前的許多年,基於語法的翻譯被認為是「未來」,但這個想法並沒有成功。
它的支援者們認為可以將它與基於規則的方法合併。可以對句子進行精確的語法分析——確定主語、謂語和句子的其他部分,然後構建句子樹。
通過使用它,機器學習轉換語言之間的句法單元,並通過單詞或短語來進行翻譯。這就能徹底解決「翻譯誤差」這個問題。

想法很美好,但現實很骨感,語法分析工作得非常糟糕,即便它的語法庫問題此前已經解決了(因為我們已經有了許多現成的語言庫)。
神經機器翻譯(NMT)
2014 年出現了一篇關於神經網路機器翻譯的有趣論文,但並沒有引起廣泛關注,只有Google開始深入挖掘這一領域。兩年後的 2016 年 11 月,Google高調宣布:機器翻譯的遊戲規則正式被我們改變。
這個想法跟 Prisma 中模仿著名藝術家作品風格的功能類似。在 Prisma 中,神經網路被教導識別藝術家的作品風格,並由此得到的程式化影像,比如讓一張照片看起來像梵高的作品。這雖然是網路的幻象,但我們認為它很美。

如果我們可以將樣式轉移到照片上,如果我們試圖將另一種語言強加給源文本會怎樣?文本將是精確的「藝術家的風格」,我們將試圖在保留影像的本質的同時將其轉移(換句話說,就是文本的本質)。
想像一下,如果把這種神經網路應用到翻譯系統中會發生什麼呢?
現在,假設源文本是特定特徵的集合,這意味著你需要對它進行編碼,然後讓另一個神經網路用只有解碼器知道的語言,將它解碼迴文本。它不知道這些特徵的來源,但可以用西班牙語來表達。
這將是一個十分有趣的過程,一個神經網路只能將句子編碼到特定的特徵集合,而另一個只能將它們解碼迴文本。兩個人都不知道對方是誰,他們每個人都只知道自己的語言,彼此陌生卻能協調一致。

不過,這裡面也存在一個問題,那就是如何找到並界定這些特徵。當我們討論狗的時候,它的特徵很明顯,但對於文本呢?要知道,30 年前,科學家們就已經嘗試創建通用語言程式碼,但最終以失敗告終。
然而,我們現在有了深度學習,可以很好的解決這個問題,因為它就是為此而存在。深度學習和經典神經網路之間的主要區別在於,它精確地定位了搜索這些特定特徵的能力,而不考慮它們的本質。如果神經網路足夠大,並且有成千上萬的影片卡供它研究,就能在文本中歸納出這些特徵。
從理論上講,我們可以把從神經網路中獲得的特徵傳遞給語言學家,這樣他們就可以為自己打開全新的視野。
有一個問題,什麼類型的神經網路能被應用於文字的編碼和解碼呢?
我們知道,卷積神經網路 (CNN) 目前僅適用於基於獨立像素塊的圖片,但文本中沒有獨立的塊,且每個單詞都依賴於它周圍的環境,就像語言和音樂一樣。遞歸神經網路 (RNN) 將提供一個最佳選擇,因為它們記住了之前所有的結果——在我們的例子中是之前的單詞。
而且遞歸神經網路如今已經得到應用,比如 iPhone 的 RNN-Siri 語音識別(它解析聲音的順序,下一個依賴於前一個),鍵盤的提示(記住前一個,猜測下一個),音樂產生,甚至聊天機器人。

在兩年的時間裡,神經網路完全超越了過去 20 年的翻譯。它使單詞順序錯誤減少了 50%、辭彙錯誤減少了 17 %、語法錯誤減少了 19%。神經網路甚至學會用不同的語言來處理類似同音異意的問題。
值得注意的是,神經網路能夠實現真正意義上的直接翻譯,徹底扔掉詞典。在進行兩種非英文翻譯時,不需要將英文作為中間語進行翻譯,此前,如果要將俄文翻譯成德文,需要先將俄文翻譯成英文,在將英文翻譯成德文,這樣一來就會增加重複翻譯的失誤率。

Google翻譯(2016 年以來)
2016 年,他們開發了名為Google神經機器翻譯(GNMT)的系統,用於 9 種語言的翻譯。它包括 8 個編碼器和 8 個解碼器,以及可以用於在線翻譯的網路連接。

他們不僅把句子分開,而且還把單詞分開,這也是他們如何處理一個罕見單詞的做法。當單詞不在字典里時,NMT 是沒有參考的。比如翻譯一個字母組 「Vas3k」,在這種情況下,GMNT 試圖將單詞拆分為單詞塊並恢復它們的翻譯。
提示:在瀏覽器中用於網站翻譯的Google翻譯仍然使用舊的基於短語的演算法。不知何故,Google並沒有升級它,與在線版本相比,這些差異是顯而易見的。
不過,目前瀏覽器中用於網站翻譯的Google翻譯使用的仍是基於短語的演算法,不知何故,Google並沒有在這方面升級它,不過這也讓我們能夠看出與傳統翻譯模式的區別。
Google在網上使用眾包機制,人們可以選擇他們認為最正確的版本,如果有很多用戶喜歡它,Google就會一直用這種方式來翻譯這個短語,並且用一個特殊的徽章來標記它。這對於日常的短句,如「讓我們去看電影吧」或者「我在等你」這樣的短句非常有用。
Yandex 翻譯(2017 年以來)
Yandex 在 2017 年推出了神經翻譯系統,它採用的是將神經網路跟統計方法相結合的 CatBoost 演算法。
這種方法能有效彌補神經網路翻譯的短板——對不經常出現的短語容易出現翻譯失真,在這種情況下,一個簡單的統計翻譯就能快速而簡單地找到正確的詞。

機器翻譯的未來
大家現在仍然對「Babel fish」這個概念感到興奮——即時語音翻譯。Google已經通過其 Pixel Buds 向它邁進了一步,但事實上,它肯定不完美,因為你需要讓它知道什麼時候開始翻譯,什麼時候該閉嘴聽。不過這點就連 Siri 都做不到。
還有一個待探索的難點:所有的學習都局限於機器學習的語料庫。即使能設計再複雜的神經網路,但目前也只能局限在提供的文本中學習。人工翻譯可以通過閱讀書籍或文章來補充相關語料,以保證翻譯結果更加準確,這就是機器翻譯大比分落後於人工翻譯的部分。
不過既然人工翻譯能做到這一點,理論上,神經網路也能做到這一點。而且好像已經有人在嘗試用神經網路實現這一功能。也就是通過它知道的一種語言,以另一種語言進行閱讀以獲得經驗,再反哺到自己的翻譯系統中備用,讓我們拭目以待。
補充閱讀

《Statistical Machine Translation》
Philipp Koehn 著