神經機器翻譯在雲端實現人類平等創新
2018 年 3 月,我們 宣布 (Hassan 等人,2018 年)的突破性成果,我們首次展示了一個機器翻譯系統,其表現可以與人類翻譯員不相上下 (在特定情況下 - 中英新聞翻譯)。這是機器翻譯研究中一個令人振奮的突破,但我們為此專案所建立的系統是一個複雜、重量級的研究系統,結合了多種尖端技術。儘管我們在多個測試集上發佈了這個系統的輸出,但系統本身並不適合用於即時機器翻譯雲 API 的部署。
今天,我們很高興地宣佈,我們最新一代的神經機器翻譯模型已經投入生產。這些模型結合了我們研究系統的大部分優點,現在當您使用 Microsoft Translator API 時,預設值即可使用。這些新模型目前可從英文翻譯成中文、德文、法文、印地文、義大利文、西班牙文、日文、韓文和俄文。更多的語言即將推出。
從研究論文到雲端 API
在過去的一年中,我們一直在尋找方法,將人與人之間的平等系統的大部分品質帶入 Microsoft 翻譯器 API同時繼續提供低成本的即時翻譯服務。以下是這段旅程的一些步驟。
師生訓練
我們的第一步是改用「師生」架構,訓練一個輕量級的即時學生,模仿重量級的教師網路 (Ba 和 Caruana 2014).要實現這一目標,不是在 MT 系統通常訓練的平行資料上訓練學生,而是在教師製作的譯文上訓練學生 (Kim 和 Rush 2016).這是一項比從原始資料學習更簡單的任務,可以讓較淺易的學生非常緊密地跟隨複雜的老師。正如人們所預期的,我們最初的嘗試仍然遭遇了從教師到學生的質量下降(沒有免費午餐!),但我們仍然在 WNMT 2018 的高效解碼共享任務中獲得了第一名 (Junczys-Dowmunt et al. 2018a).這項工作中一些特別令人振奮的結果是,Transformer (Vaswani 等人,2017 年)模型及其修改在師生訓練中發揮得很好,而且在 CPU 上進行推理時效率驚人。
從這些最初的結果中學習,經過大量的反覆,我們發現了一個配方,可以讓我們簡單的學生擁有和複雜教師幾乎相同的品質(有時畢竟有免費午餐?)現在我們可以自由地建立大型複雜的教師模型,以最大化品質,而不必擔心即時限制(太多)。
即時翻譯
我們決定改用師生架構的動機,是由於以下人士的偉大工作 Kim 和 Rush(2016 年)的簡單 RNN 基礎模型。當時還不清楚所報告的優點是否也會在 Transformer 模型中顯現 (請參閱 Vaswani 等人,2017 年 此機型的詳細資訊)。不過,我們很快就發現情況確實如此。
Transformer 學生可以使用大幅簡化的解碼演算法 (貪婪搜尋),在此演算法中,我們只需在每一步驟中挑選出單一最佳翻譯字詞,而非使用通常的方法 (beam-search),因為前者需要在龐大的可能翻譯空間中進行搜尋。這種改變對品質的影響極小,但卻大幅提升了翻譯速度。相比之下,教師模型在從束搜索轉換到貪婪搜索時,品質會顯著下降。
與此同時,我們意識到與其在解碼器中使用最新的神經架構 (Transformer with self-attention),不如修改學生使用大幅簡化且速度更快的循環 (RNN) 架構。這一點很重要,因為 Transformer 編碼器可以對整個來源句子進行平行計算,而目標句子則是一次產生一個單字,因此解碼器的速度對整體翻譯速度有很大的影響。與自注意相比,循環解碼器可將演算法複雜度從目標句子長度的二次方降低為線性。特別是在教師與學生的設定中,我們發現無論是自動或人工評估結果,都沒有因為這些修改而造成品質上的損失。另外幾項額外的改進,例如參數共享,則進一步降低了複雜度並提昇了速度。
我們很高興看到師生架構的另一個優點是,隨著時間的推移,不斷成長和變化的教師在質量上的改進很容易被轉移到不變的學生架構上。在我們發現這方面有問題的情況下,稍微增加學生模型的容量就能再次縮小差距。
雙重學習
雙重學習 (He 等人,2016 年)是「往返翻譯」檢查,人們有時會用來檢查翻譯品質。假設我們使用線上翻譯器從英文翻譯成意大利文。如果我們不懂義大利語,我們怎麼知道它是否做得很好?在點擊 傳送 在一封電子郵件中,我們可能會選擇將義大利語翻譯成英文(也許是在不同的網站上)來檢查品質。如果我們得到的英文與原文相差太遠,很可能是其中一個翻譯出了問題。
雙重學習使用相同的方法來平行訓練兩個系統 (例如英文->義大利文和義大利文->英文),使用其中一個系統的往返翻譯來評分、驗證和訓練另一個系統。
雙重學習是我們人類平等研究成果的主要貢獻。在從研究系統到生產配方的過程中,我們將此方法廣泛地推廣。我們不僅在彼此的輸出上共同訓練成對的系統,也使用相同的準則來篩選我們的平行資料。
清理不準確的資料
機器翻譯系統是在 「平行資料 」上訓練的,也就是互相翻譯的文件對,最好是由人類譯者建立。事實證明,這些平行資料往往充滿不準確的翻譯。有時候,這些文件並不是真正的平行文件,而只是彼此間鬆散的意譯。人類譯者可以選擇省略某些原始資料或插入其他資訊。資料可能包含錯字、拼字錯誤、文法錯誤。有時候,我們的資料挖掘演算法會被類似但非平行的資料,甚至是錯誤語言的句子所騙。最糟糕的是,我們看到的很多網頁都是垃圾郵件,或者事實上可能是機器翻譯而非人工翻譯。神經系統對於這種不準確的資料非常敏感。我們發現,建立神經模型來自動識別和剔除這些不準確的資料,可以大大改善我們系統的品質。我們的資料篩選方法使我們的系統獲得了第一名。 WMT18 平行語料篩選基準 (Junczys-Dowmunt 2018a),並協助建立最強大的英德翻譯系統之一。 WMT18 新聞翻譯任務 (Junczys-Dowmunt 2018b).我們在今天發佈的生產系統中使用了此方法的改進版本。
因式分解字詞表示法
將研究技術轉移到生產時,會出現幾個現實世界的挑戰。與研究系統相比,在生產過程中如何正確處理數字、日期、時間、大小寫、間距等問題更為重要。
請考慮大寫的挑戰。如果我們要翻譯句子「WATCH CAT VIDEOS HERE」。我們知道如何翻譯「cat」。我們希望以相同的方式翻譯「CAT」。但現在考慮「在此觀看美國足球」。在此上下文中,我們不想混淆「us」和縮寫「US」。
為了處理這個問題,我們使用了一種稱為因子機器翻譯 (Koehn 和 Hoang 2007, Sennrich 和 Haddow 2016),其工作原理如下。我們不使用單一數字表示法 ("embedding「)來表示 」cat 「或 」CAT「,而是使用多個embedding,稱為 」factor"。在這種情況下,"CAT 「和 」cat "的主要嵌入是相同的,但會有一個單獨的因子來表示大小寫,顯示在一個例子中是全大楷,但在另一個例子中則是小楷。源端和目標端會使用類似的因子。
我們使用類似的因素來處理單字片段和字與字之間的間距 (在中文、韓文、日文或泰語等非間距或半間距語言中,這是一個複雜的問題)。
因數還顯著地改進了數字的轉換,這在很多情況下都是非常重要的。數字翻譯大多數是演算法的轉換。例如,1,234,000 在印地語中可以寫成 12,34,000,在德語中可以寫成 1.234.000,在中文中可以寫成 123.4 萬。傳統上,數字就像文字一樣,以長短不一的字元群來表示。這使得機器學習很難發現演算法。取而代之的是,我們將數字的每一位數單獨輸入,並以因子標示開始和結束。這個簡單的訣竅幾乎可以可靠地消除所有的數字翻譯錯誤。
更快的模型訓練
當我們訓練單一系統以達到單一目標時,就像我們在人機對等研究專案中所做的一樣,我們希望將大量硬體投入到需要花數週時間來訓練的模型中。當訓練 20 多對語言的生產模型時,這種方法就變得站不住腳了。我們不僅需要合理的週轉時間,也需要適度的硬體需求。在這個專案中,我們針對下列項目進行了多項效能改善 Marian NMT (Junczys-Dowmunt et al. 2018b).
Marian NMT 是 Microsoft Translator 所基礎的開放原始碼神經機器翻譯工具包。Marian 是一個純 C++ 的神經機器翻譯工具包,因此非常有效率,在執行時不需要 GPU,在訓練時也非常有效率
由於它的自足性,要優化 Marian 以執行 NMT 特定任務相當容易,因此成為目前最有效率的 NMT 工具套件之一。看看 基準.如果您對神經 MT 的研究與發展有興趣,請加入並貢獻心力。 Github 上的社群.
我們在混合精確度訓練和解碼以及大型模型訓練方面的改進即將在 Github 公共資源庫中公佈。
對於神經機器翻譯的未來,我們感到非常興奮。我們將繼續把新的模型架構推廣到其餘的語言和語言層面上。 自訂翻譯器 今年全年。我們的使用者將自動獲得品質更佳的翻譯,透過 翻譯器 API我們的 翻譯器應用程式、Microsoft Office 和 Edge 瀏覽器。我們希望新的改進能幫助您的個人和職業生活,並期待您的回饋。
參考資料
- Jimmy Ba 和 Rich Caruana。2014.深度網路真的需要深度嗎?神經信息處理系統進展 27》。第 2654-2662 頁。 https://papers.nips.cc/paper/5484-do-deep-nets-really-need-to-be-deep
- Hany Hassan, Anthony Aue, Chang Chen, Vishal Chowdhary, Jonathan Clark, Christian Federmann, Xuedong Huang, Marcin Junczys-Dowmunt, William Lewis, Mu Li, Shujie Liu、Tie-Yan Liu, Renqian Luo, Arul Menezes, Tao Qin, Frank Seide, Xu Tan, Fei Tian, Lijun Wu, Shuangzhi Wu, Yingce Xia, Dongdong Zhang, Zhirui Zhang, Ming Zhou.2018.實現自動中英新聞翻譯的人機對等。 http://arxiv.org/abs/1803.05567
- He, Di and Xia, Yingce and Qin, Tao and Wang, Liwei and Yu, Nenghai and Liu, Tie-Yan and Ma, Wei-Ying.2016.機器翻譯的雙重學習。神經信息處理系統的進展 29.第 820-828 頁。 https://papers.nips.cc/paper/6469-dual-learning-for-machine-translation
- Marcin Junczys-Dowmunt.2018a.嘈雜平行體的雙條件交叉熵過濾。第三屆機器翻譯會議文集:共享任務文件。比利時,第 888-895 頁。 https://aclweb.org/anthology/papers/W/W18/W18-6478/
- Marcin Junczys-Dowmunt.2018b.微軟提交給 WMT2018 新聞翻譯任務:我如何學會停止擔心並愛上資料。第三屆機器翻譯大會會議紀錄:共享任務文件。比利時,第 425-430 頁。 https://www.aclweb.org/anthology/W18-6415/
- Marcin Junczys-Dowmunt, Kenneth Heafield, Hieu Hoang, Roman Grundkiewicz, Anthony Aue.2018a.馬里安:具成本效益的 C++ 高品質神經機器翻譯。第 2 屆神經機器翻譯與生成研討會論文集。澳洲墨爾本,第 129-135 頁。 https://aclweb.org/anthology/papers/W/W18/W18-2716/
- Marcin Junczys-Dowmunt、Roman Grundkiewicz、Tomasz Dwojak、Hieu Hoang、Kenneth Heafield、Tom Neckermann、Frank Seide、Ulrich Germann、Alham Fikri Aji、Nikolay Bogoychev、André F. T. Martins、Alexandra Birch.2018b.Marian:C++ 中的快速神經機器翻譯。Proceedings of ACL 2018, System Demonstrations.澳洲墨爾本,第 116-121 頁。 https://www.aclweb.org/anthology/P18-4020/
- Yoon Kim 和 Alexander M. Rush.2016.序列層級的知識提煉。In Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing, EMNLP 2016, Austin, Texas, USA, November 1-4, 2016, pages 1317-1327. https://aclweb.org/anthology/papers/D/D16/D16-1139/
- Philipp Koehn, Hieu Hoang.2007.因子翻譯模型。2007 年自然語言處理與計算自然語言學習實證方法聯合會議 (EMNLP-CoNLL) 論文集。捷克布拉格,第 868-876 頁。 https://www.aclweb.org/anthology/D07-1091/
- Rico Sennrich、Barry Haddow。2016.語言輸入特徵改進神經機器翻譯。第一屆機器翻譯會議文集:第一卷,研究論文。德國柏林,第 83-91 頁。 https://www.aclweb.org/anthology/W16-2209/
- Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and Kaiser, Lukasz and Polosukhin, Illia.2017.注意力就是你所需要的一切。神經信息處理系統的進展 30。第 5998-6008 頁。 https://papers.nips.cc/paper/7181-attention-is-all-you-need