一窺谷歌神經機器翻譯模型真面貌,其底層框架開源!
去年,谷歌發布了 Google Neural Machine Translation (GNMT),即谷歌神經機器翻譯,一個 sequence-to-sequence (“seq2seq”) 的模型。現在,它已經用于谷歌翻譯的產品系統。
雖然消費者感受到的提升并不十分明顯,谷歌宣稱,GNMT 對翻譯質量帶來了巨大飛躍。
但谷歌想做的顯然不止于此。其在官方博客表示:“由于外部研究人員無法獲取訓練這些模型的框架,GNMT 的影響力受到了束縛。”
如何把該技術的影響力最大化?答案只有一個——開源。
因而,谷歌于昨晚發布了 tf-seq2seq —— 基于 TensorFlow 的 seq2seq 框架。谷歌表示,它使開發者試驗 seq2seq 模型變得更方便,更容易達到一流的效果。另外,tf-seq2seq 的代碼庫很干凈并且模塊化,保留了全部的測試覆蓋,并把所有功能寫入文件。
該框架支持標準 seq2seq 模型的多種配置,比如編碼器/解碼器的深度、注意力機制(attention mechanism)、RNN 單元類型以及 beam size。這樣的多功能性,能幫助研究人員找到最優的超參數,也使它超過了其他框架。詳情請參考谷歌論文《Massive Exploration of Neural Machine Translation Architectures》。
上圖所示,是一個從中文到英文的 seq2seq 翻譯模型。每一個時間步驟,編碼器接收一個漢字以及它的上一個狀態(黑色箭頭),然后生成輸出矢量(藍色箭頭)。下一步,解碼器一個詞一個詞地生成英語翻譯。在每一個時間步驟,解碼器接收上一個字詞、上一個狀態、所有編碼器的加權輸出和,以生成下一個英語詞匯。雷鋒網(公眾號:雷鋒網)提醒,在谷歌的執行中,他們使用 wordpieces 來處理生僻字詞。
據雷鋒網了解,除了機器翻譯,tf-seq2seq 還能被應用到其他 sequence-to-sequence 任務上;即任何給定輸入順序、需要學習輸出順序的任務。這包括 machine summarization、圖像抓取、語音識別、對話建模。谷歌自承,在設計該框架時可以說是十分地仔細,才能維持這個層次的廣適性,并提供人性化的教程、預處理數據以及其他的機器翻譯功能。
谷歌在博客表示:
“我們希望,你會用 tf-seq2seq 來加速(或起步)你的深度學習研究。我們歡迎你對 GitHub 資源庫的貢獻。有一系列公開的問題需要你的幫助!”
GitHub 地址:https://github.com/google/seq2seq
GitHub 資源庫:https://google.github.io/seq2seq/nmt/