Facebook提出全新CNN機器翻譯:準確度超越谷歌而且還快九倍
去年穀歌在機器翻譯上取得了連續不斷的突破,參閱《重磅 | 谷歌翻譯整合神經網路:機器翻譯實現顛覆性突破》和《重磅 | 谷歌神經機器翻譯再突破:實現高質量多語言翻譯和 zero-shot 翻譯》。谷歌的方法用到了文本處理慣用的循環神經網路。近日,Facebook 也宣布在神經機器翻譯上取得了重大進展,在超過了去年穀歌研究的水平的同時還實現了顯著的速度提升。而和谷歌的方法不一樣,Facebook 的方法採用了一種完全基於卷積神經網路的架構。機器之心對 Facebook 博客上的介紹文章進行編譯,同時在文末附上了該研究論文的摘要介紹,另外該研究的相關源代碼和模型也已經在 GitHub 上開源。
論文地址:https://s3.amazonaws.com/fairseq/papers/convolutional-sequence-to-sequence-learning.pdf
GitHub 項目地址:facebookresearch/fairseq
Facebook 的使命是讓世界更加開放和互聯,讓每個人都能以自己偏好的語言享受視頻和博文——當然,準確度和速度要儘可能最高。因此,語言翻譯就顯得很重要了。
今天,FAIR 團隊推出了一項研究成果:使用一種全新的卷積神經網路(CNN)進行語言翻譯,結果以 9 倍於以往循環神經網路(RNN)的速度實現了目前最高準確率。[1] 另外,你可以在 GitHub 開源許可下下載到 FAIR 序列模型工具包(fairseq)源代碼和訓練過的系統,研究人員可以打造用於翻譯、文本摘要以及針對其他任務的定製化模型。
為什麼是 CNN?
幾十年前,最初由 Yann LeCun 開發的 CNN 已經成功用於多個機器學習領域,比如圖像處理。不過,對於文本應用來說,因為 RNN 的高準確度,其已經當仁不讓地成為了被最廣泛採用的技術和語言翻譯的最佳選擇。
儘管歷史表明,在語言翻譯任務上,RNN 勝過 CNN,但其內在設計是有局限性,只要看看它是如何處理信息的就能明白這一點。計算機的翻譯辦法是:閱讀某種語言句子,然後預測在另一種語言中相同含義的語詞排列順序。RNN 運行嚴格遵照從左到右或者從右到左的順序,一次處理一個單詞。這一運行方式並不天然地契合驅動現代機器學習系統的高度並行的 GPU 硬體。由於每個單詞必須等到網路處理完前一個單詞,因此計算並不是完全並行的。對比之下,CNN 能夠同時計算所有元素,充分利用了 GPU 的並行,計算也因此更高效。CNN 的另一個優勢就是以分層的方式處理信息,因此,捕捉數據中的複雜關係也更容易些。
在之前的研究中,被用於翻譯任務的 CNN 的表現並不比 RNN 出色。然而,鑒於 CNN 架構潛力,FAIR 開始研究將 CNN 用於翻譯,結果發現了一種翻譯模型設計,該設計能夠讓 CNN 的翻譯效果也很出色。鑒於 CNN 更加出色的計算效率,CNN 還有望擴大翻譯規模,將世界上 6,500 多種語言(世界語言種類大約為 6,900 多種——譯者注)納入翻譯範圍。
在速度上達到當前最佳
我們的研究結果表明,與 RNN [2] 相比,我們的系統在由機器翻譯協會(WMT)提供的廣泛使用的公共基準數據集上達到了新的最佳效果。特別是,CNN 模型在 WMT 2014 英語-法語任務(該度量標準被廣泛用於判斷機器翻譯的準確度)上超過了之前最佳結果 1.5 BLEU。我們的模型在 WMT 2014 英語-德語任務上提高了 0.5 BLEU,在 WMT 2016 英語-羅馬尼亞語上提高了 1.8 BLEU。
對於實際應用,神經機器翻譯的一個考量因素是我們為系統提供一個句子後,它到底需要多長時間進行翻譯。FAIR CNN 模型在計算上十分高效,它要比強 RNN 系統快九倍左右。許多研究聚焦於量化權重或濃縮(distillation)等方法來加速神經網路,而它們同樣也可被用於本 CNN 模型,甚至提速的效果還要大些,表現出了顯著的未來潛力。
利用多跳注意(multi-hop attention)和門控(gating)來改善翻譯效果
在我們模型架構中,一個明顯不同的組件就是多跳注意,這個機制就像人類翻譯句子時會分解句子結構:不是看一眼句子接著頭也不回地翻譯整個句子,這個網路會反覆「回瞥(glimpse)」句子,選擇接下來翻譯哪個單詞,這點和人類更像:寫句子時,偶然回過頭來看一下關鍵詞。[3] 多跳注意是這一機制的增強版本,可以讓神經網路多次「回瞥」,以生成更好的翻譯效果。多次「回瞥」也會彼此依存。比如,頭次「回瞥」關注動詞,那麼,第二次「回瞥」就會與助動詞有關。
在下圖中,我們給出了該系統讀取法語短語(編碼)並輸出其英語翻譯(解碼)的情形。我們首先使用一個 CNN 運行其編碼器以為每個法語詞創建一個向量,同時完成計算。接下來,其解碼器 CNN 會一次得到一個英語詞。在每一步,該注意都會「回瞥」原法語句子來確定翻譯句子中最相關的下一個英語詞。解碼器中有兩個所謂的層,下面的動畫給出了每層中注意完成的方式。綠線的強度表示了該網路對每個法語詞的關注度。當該網路被訓練時,其一直可以提供翻譯,同時也可以完成對英語詞的計算。
我們的系統另一方面是門控(gating),其控制了神經網路中的信息流。在每一個神經網路中,信息流也就是通過隱藏單元的數據。我們的門控機制將具體控制哪些信息應該需要傳遞到下一個神經元中,以便產生一個優良的翻譯效果。例如,當預測下一個詞時,神經網路會考慮迄今為止完成的翻譯。而門控允許放大翻譯中一個特定的方面或取得廣義的概覽,這一切都取決於神經網路在當前語境中認為哪個是適當。
未來開發
這種方法是一種可選的機器翻譯架構,也為其它文本處理任務開啟了新的大門。比如說,在對話系統中的多跳注意(multi-hop attention)讓神經網路可以關注到對話中距離較遠的部分(比如兩個分開的事實),然後將它們聯繫到一起以便更好地對複雜問題作出響應。
以下為相關論文的摘要介紹:
論文:卷積序列到序列學習(Convolutional Sequence to Sequence Learning)
序列到序列學習(sequence to sequence learning)的普遍方法是通過循環神經網路將一個輸入序列映射到一個可變長度的輸出序列。我們引入了一種完全基於卷積神經網路的架構。相比於循環模型,其在訓練階段中所有元素上的計算都是完全並行的,且其優化更簡單,因為非線性的數量是固定的且獨立於輸入的長度。我們使用門控線性單元簡化了梯度傳播(gradient propagation),而且我們為每個解碼器層都裝備了一的單獨的注意模塊(attention module)。我們在 WMT14 英語-德語翻譯和 WMT14 英語-法語翻譯上的準確度表現都超過了 Wu et al. (2016) 的深度 LSTM 設置,且在 GPU 和 CPU 上的速度都實現了一個數量級的提升。
圖 1:訓練中批處理(batching)的圖示。頂部是英語源句子被編碼,同時我們為 4 個德語目標詞計算所有的注意值(中間)。我們的注意只是解碼器上下文表徵(底部左側)和編碼器表徵之間的點積。我們為解碼器上下文增加了由該注意模塊計算出來的條件輸入(中部右側),其可以預測目標詞(底部右側)。S 型和乘法框表示門控線性單元。
博客文章參考文獻
[1] Convolutional Sequence to Sequence Learning. Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, Yann N. Dauphin.(即本論文)
[2] Google『s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation. Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V. Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, Jeff Klingner, Apurva Shah, Melvin Johnson, Xiaobing Liu, ?ukasz Kaiser, Stephan Gouws, Yoshikiyo Kato, Taku Kudo, Hideto Kazawa, Keith Stevens, George Kurian, Nishant Patil, Wei Wang, Cliff Young, Jason Smith, Jason Riesa, Alex Rudnick, Oriol Vinyals, Greg Corrado, Macduff Hughes, Jeffrey Dean. Technical Report, 2016. 參考機器之心文章《重磅 | 谷歌翻譯整合神經網路:機器翻譯實現顛覆性突破(附論文)》
[3] Neural Machine Translation by Jointly Learning to Align and Translate. Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio. International Conference on Learning Representations, 2015. 地址:[1409.0473] Neural Machine Translation by Jointly Learning to Align and Translate
選自code.facebook 機器之心編譯
推薦閱讀:
※什麼原因導致現在(2014年5月)的Google翻譯連如此簡單的句式都能翻譯的這麼離譜?
※如何評價谷歌最近提出的Seq2Seq模型SliceNet?
※<模型匯總-6>基於CNN的Seq2Seq模型-Convolutional Sequence to Sequence
※電腦通過什麼的編程方式翻譯英語的?
※《Factored Neural Machine Translation》閱讀筆記