選自code.facebook 作者:Jonas Gehring、Michael Auli、David Grangier、Denis Yarats、Yann N. Dauphin 機(jī)器之心編譯 參與:吳攀、微胖、蔣思源
Facebook 的使命是讓世界更加開放和互聯(lián),讓每個(gè)人都能以自己偏好的語言享受視頻和博文——當(dāng)然,準(zhǔn)確度和速度要盡可能最高。因此,語言翻譯就顯得很重要了。 今天,F(xiàn)AIR 團(tuán)隊(duì)推出了一項(xiàng)研究成果:使用一種全新的卷積神經(jīng)網(wǎng)絡(luò)(CNN)進(jìn)行語言翻譯,結(jié)果以 9 倍于以往循環(huán)神經(jīng)網(wǎng)絡(luò)(CNN)的速度實(shí)現(xiàn)了目前最高準(zhǔn)確率。[1] 另外,你可以在 GitHub 開源許可下下載到 FAIR 序列模型工具包(fairseq)源代碼和訓(xùn)練過的系統(tǒng),研究人員可以打造用于翻譯、文本摘要以及針對其他任務(wù)的定制化模型。 為什么是 CNN? 幾十年前,最初由 Yann LeCun 開發(fā)的 CNN 已經(jīng)成功用于多個(gè)機(jī)器學(xué)習(xí)領(lǐng)域,比如圖像處理。不過,對于文本應(yīng)用來說,因?yàn)?RNN 的高準(zhǔn)確度,其已經(jīng)當(dāng)仁不讓地成為了被最廣泛采用的技術(shù)和語言翻譯的最佳選擇。 盡管歷史表明,在語言翻譯任務(wù)上,RNN 勝過 CNN,但其內(nèi)在設(shè)計(jì)是有局限性,只要看看它是如何處理信息的就能明白這一點(diǎn)。計(jì)算機(jī)的翻譯辦法是:閱讀某種語言句子,然后預(yù)測在另一種語言中相同含義的語詞排列順序。RNN 運(yùn)行嚴(yán)格遵照從左到右或者從右到左的順序,一次處理一個(gè)單詞。這一運(yùn)行方式并不天然地契合驅(qū)動現(xiàn)代機(jī)器學(xué)習(xí)系統(tǒng)的高度并行的 GPU 硬件。由于每個(gè)單詞必須等到網(wǎng)絡(luò)處理完前一個(gè)單詞,因此計(jì)算并不是完全并行的。對比之下,CNN 能夠同時(shí)計(jì)算所有元素,充分利用了 GPU 的并行,計(jì)算也因此更高效。CNN 的另一個(gè)優(yōu)勢就是以分層的方式處理信息,因此,捕捉數(shù)據(jù)中的復(fù)雜關(guān)系也更容易些。 在之前的研究中,被用于翻譯任務(wù)的 CNN 的表現(xiàn)并不比 RNN 出色。然而,鑒于 CNN 架構(gòu)潛力,F(xiàn)AIR 開始研究將 CNN 用于翻譯,結(jié)果發(fā)現(xiàn)了一種翻譯模型設(shè)計(jì),該設(shè)計(jì)能夠讓 CNN 的翻譯效果也很出色。鑒于 CNN 更加出色的計(jì)算效率,CNN 還有望擴(kuò)大翻譯規(guī)模,將世界上 6,500 多種語言(世界語言種類大約為 6,900 多種——譯者注)納入翻譯范圍。 在速度上達(dá)到當(dāng)前最佳 我們的研究結(jié)果表明,與 RNN [2] 相比,我們的系統(tǒng)在由機(jī)器翻譯協(xié)會(WMT)提供的廣泛使用的公共基準(zhǔn)數(shù)據(jù)集上達(dá)到了新的最佳效果。特別是,CNN 模型在 WMT 2014 英語-法語任務(wù)(該度量標(biāo)準(zhǔn)被廣泛用于判斷機(jī)器翻譯的準(zhǔn)確度)上超過了之前最佳結(jié)果 1.5 BLEU。我們的模型在 WMT 2014 英語-德語任務(wù)上提高了 0.5 BLEU,在 WMT 2016 英語-羅馬尼亞語上提高了 1.8 BLEU。 對于實(shí)際應(yīng)用,神經(jīng)機(jī)器翻譯的一個(gè)考量因素是我們?yōu)橄到y(tǒng)提供一個(gè)句子后,它到底需要多長時(shí)間進(jìn)行翻譯。FAIR CNN 模型在計(jì)算上十分高效,它要比強(qiáng) RNN 系統(tǒng)快九倍左右。許多研究聚焦于量化權(quán)重或濃縮(distillation)等方法來加速神經(jīng)網(wǎng)絡(luò),而它們同樣也可被用于本 CNN 模型,甚至提速的效果還要大些,表現(xiàn)出了顯著的未來潛力。 利用多跳注意(multi-hop attention)和門控(gating)來改善翻譯效果 在我們模型架構(gòu)中,一個(gè)明顯不同的組件就是多跳注意,這個(gè)機(jī)制就像人類翻譯句子時(shí)會分解句子結(jié)構(gòu):不是看一眼句子接著頭也不回地翻譯整個(gè)句子,這個(gè)網(wǎng)絡(luò)會反復(fù)「回瞥(glimpse)」句子,選擇接下來翻譯哪個(gè)單詞,這點(diǎn)和人類更像:寫句子時(shí),偶然回過頭來看一下關(guān)鍵詞。[3] 多跳注意是這一機(jī)制的增強(qiáng)版本,可以讓神經(jīng)網(wǎng)絡(luò)多次「回瞥」,以生成更好的翻譯效果。多次「回瞥」也會彼此依存。比如,頭次「回瞥」關(guān)注動詞,那么,第二次「回瞥」就會與助動詞有關(guān)。 在下圖中,我們給出了該系統(tǒng)讀取法語短語(編碼)并輸出其英語翻譯(解碼)的情形。我們首先使用一個(gè) CNN 運(yùn)行其編碼器以為每個(gè)法語詞創(chuàng)建一個(gè)向量,同時(shí)完成計(jì)算。接下來,其解碼器 CNN 會一次得到一個(gè)英語詞。在每一步,該注意都會「回瞥」原法語句子來確定翻譯句子中最相關(guān)的下一個(gè)英語詞。解碼器中有兩個(gè)所謂的層,下面的動畫給出了每層中注意完成的方式。綠線的強(qiáng)度表示了該網(wǎng)絡(luò)對每個(gè)法語詞的關(guān)注度。當(dāng)該網(wǎng)絡(luò)被訓(xùn)練時(shí),其一直可以提供翻譯,同時(shí)也可以完成對英語詞的計(jì)算。 我們的系統(tǒng)另一方面是門控(gating),其控制了神經(jīng)網(wǎng)絡(luò)中的信息流。在每一個(gè)神經(jīng)網(wǎng)絡(luò)中,信息流也就是通過隱藏單元的數(shù)據(jù)。我們的門控機(jī)制將具體控制哪些信息應(yīng)該需要傳遞到下一個(gè)神經(jīng)元中,以便產(chǎn)生一個(gè)優(yōu)良的翻譯效果。例如,當(dāng)預(yù)測下一個(gè)詞時(shí),神經(jīng)網(wǎng)絡(luò)會考慮迄今為止完成的翻譯。而門控允許放大翻譯中一個(gè)特定的方面或取得廣義的概覽,這一切都取決于神經(jīng)網(wǎng)絡(luò)在當(dāng)前語境中認(rèn)為哪個(gè)是適當(dāng)。 未來開發(fā) 這種方法是一種可選的機(jī)器翻譯架構(gòu),也為其它文本處理任務(wù)開啟了新的大門。比如說,在對話系統(tǒng)中的多跳注意(multi-hop attention)讓神經(jīng)網(wǎng)絡(luò)可以關(guān)注到對話中距離較遠(yuǎn)的部分(比如兩個(gè)分開的事實(shí)),然后將它們聯(lián)系到一起以便更好地對復(fù)雜問題作出響應(yīng)。 以下為相關(guān)論文的摘要介紹: 論文:卷積序列到序列學(xué)習(xí)(Convolutional Sequence to Sequence Learning) 序列到序列學(xué)習(xí)(sequence to sequence learning)的普遍方法是通過循環(huán)神經(jīng)網(wǎng)絡(luò)將一個(gè)輸入序列映射到一個(gè)可變長度的輸出序列。我們引入了一種完全基于卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)。相比于循環(huán)模型,其在訓(xùn)練階段中所有元素上的計(jì)算都是完全并行的,且其優(yōu)化更簡單,因?yàn)榉蔷€性的數(shù)量是固定的且獨(dú)立于輸入的長度。我們使用門控線性單元簡化了梯度傳播(gradient propagation),而且我們?yōu)槊總€(gè)解碼器層都裝備了一的單獨(dú)的注意模塊(attention module)。我們在 WMT'14 英語-德語翻譯和 WMT'14 英語-法語翻譯上的準(zhǔn)確度表現(xiàn)都超過了 Wu et al. (2016) 的深度 LSTM 設(shè)置,且在 GPU 和 CPU 上的速度都實(shí)現(xiàn)了一個(gè)數(shù)量級的提升。 圖 1:訓(xùn)練中批處理(batching)的圖示。頂部是英語源句子被編碼,同時(shí)我們?yōu)?4 個(gè)德語目標(biāo)詞計(jì)算所有的注意值(中間)。我們的注意只是解碼器上下文表征(底部左側(cè))和編碼器表征之間的點(diǎn)積。我們?yōu)榻獯a器上下文增加了由該注意模塊計(jì)算出來的條件輸入(中部右側(cè)),其可以預(yù)測目標(biāo)詞(底部右側(cè))。S 型和乘法框表示門控線性單元。 博客文章參考文獻(xiàn) [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. 參考機(jī)器之心文章《重磅 | 谷歌翻譯整合神經(jīng)網(wǎng)絡(luò):機(jī)器翻譯實(shí)現(xiàn)顛覆性突破(附論文)》 [3] Neural Machine Translation by Jointly Learning to Align and Translate. Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio. International Conference on Learning Representations, 2015. 地址:https:///abs/1409.0473 原文鏈接:https://code./posts/1978007565818999/a-novel-approach-to-neural-machine-translation/ |
|