一個模型庫學習所有:谷歌開源模塊化深度學習系統Tensor2Tensor
在谷歌提交熱點論文《Attention Is All You Need》和《One Model To Learn Them All》不久之後,這家公司很快就發布了最新研究的模型和訓練集。昨天,谷歌發布了一個名為 Tensor2Tensor(T2T)的 TensorFlow 開源系統,希望能夠以此提高機器學習社區的研究和開發速度,其中包含了谷歌近期提出的多個最新模型。此外,T2T 將深度學習所需的各個組件以模塊化呈現,這意味著開發者和研究人員能夠更快地實現自己的新想法。
鏈接:tensorflow/tensor2tensor
深度學習(DL)在很多技術領域中都已獲得廣泛應用,包括機器翻譯、語音識別和物體識別等。在研究社區中,人們可以找到各類研究作者開源的代碼,複製他們的結果,進一步發展深度學習。但這些深度學習系統大多為特定的任務進行了專門的設置,只適用於特定的問題和架構,這意味著人們難以開展新的實驗並比較結果。
昨天,谷歌研究人員發布了 Tensor2Tensor(T2T),一個用於在 TensorFlow 中訓練深度學習模型的開源系統。T2T 能夠幫助人們為各種機器學習程序創建最先進的模型,可應用於多個領域,如翻譯、語法分析、圖像信息描述等,大大提高了研究和開發的速度。T2T 中也包含一個數據集和模型庫,其中包括谷歌近期發布的幾篇論文中提出的最新模型(Attention Is All You Need、Depthwise Separable Convolutions for Neural Machine Translation 和 One Model to Learn Them All)。
在標準 WMT 英語-德語 翻譯任務中,各模型的 BLEU 分數(越高越好)。
作為舉例,谷歌將 T2T 庫應用於機器翻譯任務中,如上表所示,T2T 庫中的兩個模型:SliceNet 和 Transformer 的表現超過了此前的業界最佳水平 GNMT+MoE。其中,Transformer 的分數超過 GNMT 模型 3.8 分,而 GNMT 已經超過基準水平(基於短語的翻譯系統 MOSES)4 分了。值得注意的是,使用 T2T,你可以用一塊 GPU,一天的時間實現此前業界最佳水準的表現:使用小型 Transformer 模型(上圖未顯示),在單 GPU 訓練一天時間後可以達到 24.9 的 BLEU 分數。現在,所有人都可以自己構建最好的翻譯模型了。
可參看 GitHub 說明:tensorflow/tensor2tensor
模塊化多任務訓練
T2T 庫構建於 TensorFlow 之上,定義了深度學習系統所需的各個組件:數據集、模型架構、優化器、學習速率衰減方案、超參數等等。最重要的是,它實現了所有這些組件之間的標準對接形式,並使用了目前最好的機器學習方法。這樣,你可以選擇任何一組數據集、模型、優化器,然後設定超參數,開始訓練,並查看它的性能。通過架構的模塊化,在輸入和輸出數據之間的每一塊都是張量-張量的函數。這意味著如果你對模型架構有了新想法,你無須改動整個模型,你可以保留嵌入部分、損失函數和其他所有部分,僅僅用自己的函數替換模型體的一部分,該函數將張量作為輸入,並返回一個張量。
這意味著 T2T 很靈活,訓練無需局限在一個特定的模型或數據集上。它如此容易以至於像著名的 LSTM 序列到序列模型這樣的架構可通過幾行代碼被定義。你也可以在不同領域的多任務上訓練一個單一模型,你甚至還可以同時在所有的數據集上訓練一個單一模型。很高興我們的 MultiModel(就像這樣被訓練並包含在 T2T 中)在很多任務上獲得了好結果,甚至是在 ImageNet、MS COCO、WSJ、 WM 和 Penn Treebank 解析語料庫上進行聯合訓練也不例外。這是首次單個模型被證明可以同時執行多個任務。
內置的最佳實踐
我們的首次發行也提供了腳本,可生成大量數據集(廣泛用於研究社區),一些模型,大量超參數配置,trade 的其他重要技巧的一個執行良好的實現。儘管全部列舉它們很難,如果你決定用 T2T 運行你的模型,將會免費獲得序列的正確填充(padding),相應的交叉熵損失,調試良好的 Adam 優化器參數,自適應批處理,同步的分散式訓練,調試良好的圖像數據增強,標籤平滑和大量的超參數配置(包括上述在翻譯方面取得當前最佳結果的超參數配置)。
例如,考慮一下把英語語句解析成其語法選區樹(grammatical constituency tree)。這個問題被研究了數十年,人們費了很大勁給出了可靠的方法。它可被稱為序列到序列問題,可通過神經網路來解決,但它過去常常需要很多調試。藉助 T2T,我們只需幾天就可以添加解析數據集生成器,並調節我們的注意力轉換器模型以訓練這一問題。令我們高興而驚訝的是,我們僅在一周內就獲得了非常好的結果:
在 WSJ 23 節的標準數據集上解析 F1 分數。我們只在 Penn Treebank WSJ 訓練集上比較了本文中被特殊訓練過的模型,更多結果詳見論文([1706.03762] Attention Is All You Need)。
為 Tensor2Tensor 做貢獻
除了探索現有的模型和數據集之外,你還可以輕易定義自己的模型並把數據集添加到 T2T。我們相信已收錄的模型將很好地執行諸多 NLP 任務,因此,只是添加你的數據集就會帶來有趣的結果。通過構建 T2T 組件,我們可以使其很容易地為你的模型做貢獻,並觀察其如何執行不同任務。通過這種方式,整個社區可受益於基線庫,並加速深度學習研究。因此,前往我們的 Github 庫(tensorflow/tensor2tensor),嘗試一些新模型,並貢獻出你的吧。
論文:Attention Is All You Need
論文鏈接:[1706.03762] Attention Is All You Need
在編碼器-解碼器配置中,顯性序列顯性轉錄模型(dominant sequence transduction model)基於複雜的 RNN 或 CNN。表現最佳的模型也需通過注意力機制(attention mechanism)連接編碼器和解碼器。我們提出了一種新型的簡單網路架構——Transformer,它完全基於注意力機制,徹底放棄了循環和卷積。兩項機器翻譯任務的實驗表明,這些模型的翻譯質量更優,同時更並行,所需訓練時間也大大減少。我們的模型在 WMT 2014 英語轉德語的翻譯任務中取得了 BLEU 得分 28.4 的成績,領先當前現有的最佳結果(包括集成模型)超過 2 個 BLEU 分值。在 WMT 2014 英語轉法語翻譯任務上,在 8 塊 GPU 上訓練了 3.5 天之後,我們的模型獲得了新的單模型頂級 BLEU 得分 41.0,只是目前文獻中最佳模型訓練成本的一小部分。我們表明 Transformer 在其他任務上也泛化很好,把它成功應用到了有大量訓練數據和有限訓練數據的英語組別分析上。
論文:One Model To Learn Them All
論文鏈接:[1706.05137] One Model To Learn Them All
深度學習在許多領域都獲得了很好的成果,從語音識別、圖像識別到機器翻譯。但在每個問題上,深度學習模型都需要進行長時間的架構研究和調試。我們提出了一個單一模型,它在多個不同領域的任務中都產生了良好結果。這種單一模型同時在 ImageNet、多個翻譯任務、圖像抓取(COCO 數據集)、一個語音識別語料庫和一個英文解析任務中獲得訓練。該模型架構整合了多個領域的組件。它包含卷基層、注意力機制和 sparsely-gated 層,其中的每個組件對於特定任務都是非常重要的,我們觀察到添加這些組件並不會影響模型性能——在大多數情況下,它反而會改善任務中的表現。我們還展示了多個任務聯合訓練會讓僅含少量數據的任務收益頗豐,而大型任務的表現僅有少量性能衰減。
選自Google 機器之心編譯
推薦閱讀:
※最終章 | TensorFlow戰Kaggle「手寫識別達成99%準確率
※FaceRank-人臉打分基於 TensorFlow 的 CNN 模型,這個妹子顏值幾分? FaceRank 告訴你!
※tf.set_random_seed
※TensorFlow初步(2)
TAG:谷歌Google | TensorFlow | 深度学习DeepLearning |