谷歌開源T2T模型庫,深度學習系統進入模塊化時代!
6 月 19 日,谷歌發布了 T2T(Tensor2Tensor)深度學習開源系統,這個系統的一大優點是模塊化,這也就意味著系統更加靈活,適應性更強。深度學習的研究進度也會因此而加速。以下內容為雷鋒網整理編輯。
深度學習(DL)讓很多技術領域都得以迅速發展,比如機器翻譯,語音識別,以及物體檢測。在研究社區,人們可以找到研究作者開源的代碼,復制他們的結果,幫助自己做進一步深度學習研究。然而,大多數深度學習系統使用了需要耗費大量工程開發的特殊設置,可能只對特定的問題或結構起作用。這使得在新實驗中運行以及進行實驗結果對比變得比較困難。
可喜的是,谷歌終于找到了解決這一問題的辦法,發布了 T2T(Tensor2Tensor),一個用于在 TensorFlow 上訓練深度學習模型的開源系統。T2T 方便了對各種各樣的機器學習應用的模型進行創新,比如翻譯,句法分析,圖像說明等等。這次發布也包含數據集庫和模型庫,包括最近幾篇論文中提到的最好模型。
在標準 WMT 英語-德語翻譯任務中,各模型的 BLEU 分數(越高越好)
作為舉例,谷歌將 T2T 庫用于機器翻譯。如上表所示,兩種不同 T2T 模型,SliceNet 和 Transformer,性能表現勝過之前業界表現最好的模型 GNMT+MoE。其中最好的 T2T 模型 Transformer,高出 GNMT 模型 3.8 分。而 GNMT 本身已經高出 MOSES 4 分(以短語翻譯系統 MOSES 為最低標準)。值得注意的是,使用單塊 GPU 在一天內訓練就可以達到之前最好的結果,一個小型的 Transformer 模型在單 GPU 訓練一天后可以得分 24.9(上圖表格并沒有顯示)。可見使用 T2T 效果非常明顯。現在所有人都可以自己用一塊 GPU 來訓練這個翻譯模型了。Github 有操作說明。(地址見文末)
模塊化多任務訓練
T2T 庫是用人們熟悉的 TensorFlow 工具和深度學習系統中所需的定義多個組件:如數據集,模型結構,算法,學習速率衰減方案,超參數等等開發出來的。關鍵是,它在所有這些組件之間執行了一個標準接口,實現了當前機器學習的最佳效果。所以你可以拿走任何一個數據集,模型,算法,或一組超參數,來執行訓練并觀察它的性能表現。通過使架構模塊化,輸入數據和預測輸出之間的每一部分都是 T2T 函數。這意味著如果對模型架構有了新的想法,則不需要替換整個設置。你可以保留需要嵌入的部分,損失函數和其他所有部分。
這就意味著 T2T 很靈活,訓練不再依賴于特定的模型或數據集。甚至連比較有名的 LSTM 序列模型都可以用幾十行代碼來定義。此外還可以對不同領域的多個任務進行單個模型的訓練。甚至還可以在所有數據集上同時運行單個模型。MultiModel 就可以這樣訓練并包含在 T2T 中,在很多任務上都產生了良好的效果。即使在 ImageNet(圖像分類)MS COCO(圖像說明)WSJ(語音識別)WMT(翻譯)以及 Penn Treebank(解析語料庫)聯合訓練也依然表現良好。這也是第一次證明了單個模型可以同時執行多個任務。
內置最佳實踐
這次的首次發布也提供了腳本,用來生成大量數據集,廣泛用于研究社區,一些模型和大量超參數配置。trade 的其他重要技巧在執行中表現良好。把他們全部列出來很難,如果你決定用 T2T 運行你的模型,你將得到序列的正確填充(padding)和相應的交叉熵損失,調試良好的 Adam 優化器參數,自適應批處理,同步的分布式訓練,調試良好的圖像數據增強,標簽平滑和大量的超參數配置。
例如,考慮把英語句子解析成語法選區樹(grammatical constituency trees)的任務。這個問題已經研究了幾十年才找到可靠的方法。它可以表示為一個序列到序列的問題,可以用神經網絡求解,但是在過去需要調試很多次。現在運用 T2T,只需要幾天就可以添加解析數據集生成器,并且調節注意力轉化器模型來訓練解決這個問題。令人興奮的是,只用了一周的時間就得到了非常好的結果。
在 WSJ 23 節的標準數據集上解析 F1 分數。只在 Penn Treebank WSJ 訓練集上比較了文本中經過特殊訓練過的模型。更多結果詳見論文(https://arxiv.org/abs/1706.03762)
為 T2T 做貢獻
除了探索現有的模型和數據集,還可以輕松地定義自己的模型,并添加自己的數據集到 T2T。谷歌相信已有的模型將很好的執行諸多 NLP 任務,所以只需添加你的數據集,也許就會得到一個有趣的結果。通過構建 T2T 模塊,還可以很容易構建你自己的模型,并觀察其如何執行不同任務。通過這樣的方式,整個社區都可以從基線庫(library of baselines)中受益,并加速深度學習研究。所以,來 Github 庫,嘗試一些新模型,來為 T2T 做點貢獻吧!
提及表格內模型的三篇論文(雷鋒網(公眾號:雷鋒網)此前也做過覆蓋與報道):
Depthwise Separable Convolutions for Neural Machine Translation
Github 操作說明:https://github.com/tensorflow/tensor2tensor
來自: 雷鋒網