釋出Tensor2Tensor,加快深度學習研究

谷歌開發者_發表於2017-06-30

640?wx_fmt=gif


文 / Google Brain 團隊高階研究員 Łukasz Kaiser


深度學習 (DL) 已促進許多實用技術的飛速發展,如機器翻譯、語音識別和物件檢測。在研究社群中,使用者可以找到作者們開放的原始碼以幫助他們復現試驗結果和進一步促進深度學習。不過,大多數深度學習系統都使用獨特的設定,其需要進行大量工程投入,並且可能只對特定問題或架構有效,因而很難執行新試驗和比較結果。

我們非常高興地釋出了 Tensor2Tensor (T2T),T2T 是一個用於在 TensorFlow 中訓練深度學習模型的開源系統。T2T 有助於針對各種機器學習應用(如翻譯、解析、影象字幕製作等)建立最先進的模型,從而以遠勝於過去的速度探索各種想法。


此版本中也包含了一個資料集和模型庫,其中包括最近釋出的幾篇論文中提出的最佳模型(《您只需集中注意力》(Attention Is All You Need)、《針對神經機器翻譯的深度可分離卷積》(Depthwise Separable Convolutions for Neural Machine Translation)和《一個模型可解決所有學習問題》(One Model to Learn Them All)),以幫助您開始自己的深度學習研究。


翻譯模型

訓練時間

BLEU(相對於基準的偏差)

Transformer (T2T)

在 8 個 GPU 上訓練 3 天

28.4 (+7.8)

SliceNet (T2T)

在 32 個 GPU 上訓練 6 天

26.1 (+5.5)

GNMT + 專家

在 64 個 GPU 上訓練 1 天

26.0 (+5.4)

ConvS2S

在 1 個 GPU 上訓練 18 天

25.1 (+4.5)

GNMT

在 96 個 GPU 上訓練 1 天

24.6 (+4.0)

ByteNet

在 32 個 GPU 上訓練 8 天

23.8 (+3.2)

MOSES(基於短語的基準)

不適用

20.6 (+0.0)

* 標準 WMT 英德翻譯任務的 BLEU 得分(越高越好)


作為 T2T 可以提供的一種改進示例,我們將此內容庫應用於機器翻譯。正如您在上面的表格中看到的,SliceNet 和 Transformer 這兩個不同的 T2T 模型的表現超過了以前最先進的 GNMT+MoE。我們最佳的 T2T 模型 Transformer 比標準 GNMT 模型高出 3.8 分,而 GNMT 本身已經比作為基準的基於短語的翻譯系統 MOSES 高出 4 分。


值得注意的是,通過 T2T,您在一天內使用一個 GPU 就可以接近以前最好的結果:一個小型 Transformer 模型(上面未顯示)在一個 GPU 上訓練一天後的 BLEU 得分為 24.9。現在,只要有一塊 GPU,每個人都可以獨自鼓搗出很棒的翻譯模型:我們的 github 程式碼庫提供瞭如何執行該操作的說明:

https://github.com/tensorflow/tensor2tensor/blob/master/README.md



模組化多工訓練

T2T 庫是使用我們熟悉的 TensorFlow 工具構建的,並定義了深度學習系統所需的多個片段:資料集、模型架構、優化器、學習速率衰減方案、超引數等等。最重要的是,它在所有這些部分之間強制執行一個標準介面,並實現當前機器學習最佳做法。這樣,您就可以選擇任何資料集、模型、優化器和超引數集,並執行訓練來檢查它的效能表現。我們將架構模組化,因此,輸入資料和預測輸出之間的每一片段都是一個張量到張量函式。如果您對模型架構有了新想法,您不需要替換整個設定。您可以保留嵌入部分、損失以及其他所有部分,只需將模型體替換為您自己的函式,該函式接受一個張量輸入,並返回一個張量。

這說明 T2T 很靈活,訓練不再侷限於某個特定的模型或資料集。訓練是如此容易,以至於像著名的 LSTM 序列到序列模型這樣的架構都可以通過幾十行程式碼定義。您也可以在不同領域的多個任務中訓練單個模型。您甚至還可以同時在所有的資料集上訓練單個模型,我們很高興地報告,我們 T2T 中包含的 MultiModel 就是這樣訓練的,它在很多工中都獲得了良好的結果,即使在 ImageNet(影象分類)、MS COCO(影象字幕製作)、WSJ(語音識別)、WMT(翻譯)和 Penn Treebank 解析語料庫上進行聯合訓練時也是如此。這是單一模型首次被證實可以同時執行上述所有任務。



內建最佳做法

通過這個初始版本,我們還提供了指令碼,以生成大量在研究社群中廣泛使用的資料集、少量模型、大量超引數配置以及其他重要訣竅的高效能實現。儘管很難將它們全部列出,但如果您決定使用 T2T 執行您的模型,則可免費獲得正確的序列填充和相應的交叉熵損失、經過精心調校的 Adam 優化器引數、自適應批處理、同步分散式訓練、經過精心調校的的影象資料增強、標籤平滑處理以及對我們非常有效的大量超引數配置(包括上述在翻譯方面取得最佳結果並可幫助您獲得良好結果的超引數配置)。


例如,考慮將英語語句解析成其語法成分結構樹的任務。人們已研究這個問題數十年,經過大量努力開發出了競爭性方法。它可通過序列到序列問題的形式呈現,並使用神經網路來解決,但過去這往往需要很多除錯。藉助 T2T,我們只需幾天時間就可以新增解析資料集生成器,並調節我們的注意力轉換器模型以針對這一問題進行訓練。令我們驚喜的是,我們短短一週就取得了非常好的結果:


解析模型

F1 分數(越高越好)

Transformer (T2T)

91.3

Dyer et al.

91.7

Zhu et al.

90.4

Socher et al.

90.4

Vinyals & Kaiser et al.

88.3

* 在 WSJ 第 23 節的標準測試集上解析 F1 的分數。在此,我們僅比較針對 Penn Treebank WSJ 訓練集進行鑑別性訓練的模型



為 Tensor2Tensor 做貢獻

除探索現有模型和資料集外,您還可以輕鬆地定義您自己的模型並將您自己的資料集新增到 Tensor2Tensor。我們相信已包含的模型將在許多 NLP 任務上表現出色,因此,只需新增您的資料集,就可能會產生有趣的結果。通過使 T2T 模組化,您將可以非常輕鬆地發表自己的模型,並瞭解它在不同任務中的表現。通過這種方式,整個社群都可受益於基準庫,並加快深度學習研究。請前往我們的 github 程式碼庫試用新模型,並發表您自己的模型吧!

https://github.com/tensorflow/tensor2tensor



致謝

在許多工程師和研究人員的廣泛合作下,我們得以釋出 Tensor2Tensor。我們在此要感謝做出貢獻的核心團隊成員(按字母順序排列):Samy Bengio、Eugene Brevdo、Francois Chollet、Aidan N. Gomez、Stephan Gouws、Llion Jones、Łukasz Kaiser、Nal Kalchbrenner、Niki Parmar、Ryan Sepassi、Noam Shazeer、Jakob Uszkoreit、Ashish Vaswani。


瞭解更多詳情,檢視文內所有連結(文件和論文),請點選文末“閱讀原文”。


推薦閱讀:

如何教機器繪畫?

引入tf-seq2seq:TensorFlow中開源序列到序列框架

聯合學習:無需集中儲存訓練資料的協同機器學習

使用一致的雜湊演算法分配臨界負載


640?wx_fmt=gif


點選「閱讀原文」,檢視文件論文連結640?wx_fmt=gif

相關文章