引入tf-seq2seq:TensorFlow中開源序列到序列框架
文 | Google Brain 團隊研究軟體工程師 Anna Goldie 和 Google Brain 學員 Denny Britz
去年,我們宣佈推出 Google 神經機器翻譯 (GNMT),這是一個序列到序列(“seq2seq”)的模型,現已用於 Google 翻譯生產系統。儘管 GNMT 實現了翻譯質量的巨大飛躍,但由於不向外部研究人員提供用於訓練這些模型的框架,因此其作用受到影響。
現在,我們很高興地宣佈引入 tf-seq2seq,它是 TensorFlow 中的一個開放原始碼的 seq2seq 框架,能簡化 seq2seq 模型的試驗,獲得準確的結果。為此,我們對 tf-seq2seq 程式碼庫進行了清理和模組化處理,從而維持最大的測試覆蓋範圍,並記錄其所有功能。
我們的框架支援標準 seq2seq 模型的各種配置,例如編碼器/解碼器深度、注意力機制、RNN 細胞型別或集束大小等。正如我們在論文《神經機器翻譯架構大探索》(Massive Exploration of Neural Machine Translation Architectures) 中所述,這種多用性讓我們得以發現最優的超引數,並在效能上超越其他框架。
▲ 中譯英 seq2seq 翻譯模型。在每個時步,編碼器接收一箇中文字元及其之前的狀態(黑色箭頭),然後生成輸出向量(藍色箭頭)。然後,解碼器逐字生成英語翻譯,具體步驟是:在每個時步,解碼器接收上一個字詞及其之前的狀態,並對編碼器的所有輸出(亦稱作注意力 [3],用藍色標示)進行加權組合,然後生成下一個英語單詞。請注意,在實現過程中,我們使用詞塊 [4] 處理生僻詞。
除了機器翻譯外,tf-seq2seq 還可以用於執行其他任何序列到序列的任務(即,學習在給定輸入序列條件下生成輸出序列),包括機器翻譯彙總、影象字幕製作、語音識別和對話建模等。我們對框架進行了精心設計,以維持此種程度的通用性,併為機器翻譯提供教程、預處理的資料和其他實用工具。
我們希望,您能使用 tf-seq2seq 加速(或開始)自己的深度學習研究。我們也非常歡迎您在我們的 GitHub 儲存區投稿,在這裡,我們釋出了各種等待解決的問題,我們希望您能提供協助!
致謝:
非常感謝 Eugene Brevdo、Melody Guan、Lukasz Kaiser、Quoc V. Le、Thang Luong 和 Chris Olah 的大力支援。要深入研究 seq2seq 模型的工作原理,請參閱下面的資源。
參考文獻:
[1] 《神經機器翻譯架構大探索》(Massive Exploration of Neural Machine Translation Architectures),由 Denny Britz、Anna Goldie、Minh-Thang Luong 和 Quoc Le 合著
[2] 《利用神經網路實現序列到序列的學習》(Sequence to Sequence Learning with Neural Networks),由 Ilya Sutskever、Oriol Vinyals 和 Quoc V. Le 合著。2014 年發表於 NIPS 大會
[3] 《通過聯合學習對齊和翻譯進行神經機器翻譯》(Neural Machine Translation by Jointly Learning to Align and Translate),由 Dzmitry Bahdanau、Kyunghyun Cho 和 Yoshua Bengio 合著。2015 年發表於 ICLR 大會
[4] 《Google 的神經機器翻譯體系:縮小機器翻譯與人類翻譯之間的差距》(Bridging the Gap between Human and Machine Translation),由 Yonghui Wu、Mike Schuster、Zhifeng Chen、Quoc V. Le、Mohammad Norouzi、Wolfgang Macherey、Maxim Krikun、Yuan Cao、Qin Gao、Klaus Macherey、Jeff Klingner、Apurva Shah、Melvin Johnson、Xiaobing Liu、Łukasz Kaiser, Stephan Gouws、Yoshikiyo Kato、Taku Kudo、Hideto Kazawa、Keith Stevens、George Kurian、Nishant Patil、Wei Wang、Cliff Young, Jason Smith、Jason Riesa、Alex Rudnick、Oriol Vinyals、Greg Corrado、Macduff Hughes 和 Jeffrey Dean 合著。2016 年發表於《技術報告》
[5] 《注意力和增強遞迴神經網路》(Attention and Augmented Recurrent Neural Networks),由 Chris Olah 和 Shan Carter 合著。2016 年發表於《Distill》
[6] 《神經機器翻譯和序列到序列模型:教程》(Neural Machine Translation and Sequence-to-sequence Models: A Tutorial),Graham Neubig 著
[7] 《序列到序列模型》(Sequence-to-Sequence Models),TensorFlow.org
瞭解更多細節,檢視文內所有連結,請點選文末“閱讀原文”。
推薦閱讀:
Google研究 | 聯合學習:無需集中儲存訓練資料的協同機器學習
點選「閱讀原文」,檢視文內連結
相關文章
- 從 Swift 中的序列到型別擦除Swift型別
- Google開源TensorFlow強化學習框架!Go強化學習框架
- TensorFlow 框架的開源工具箱 Ludwig框架開源工具
- Oracle並行操作——從序列到並行Oracle並行
- 根據二叉樹的先序序列和中序序列還原二叉樹並列印後序序列二叉樹
- 十分鐘搞定Keras序列到序列學習(附程式碼實現)Keras
- 賽爾原創 | 基於序列到序列模型的句子級複述生成模型
- 使用Python實現深度學習模型:序列到序列模型(Seq2Seq)Python深度學習模型
- 領英開源TonY:構建在Hadoop YARN上的TensorFlow框架HadoopYarn框架
- TensorFlow 引入 Swift 會怎樣?Swift
- 先序、中序、後序序列的二叉樹構造演算法二叉樹演算法
- python 包引入順序Python
- 為TensorFlow引入即時執行
- Dewdrop:開源事件源框架事件框架
- 從中序與後序遍歷序列構造二叉樹二叉樹
- 開源框架(整理)框架
- 冰河開源了全網首個完全開源的分散式全域性有序序列號(分散式ID)框架!!分散式框架
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- 【開源系列】專案開源實戰記錄-序
- 各種NLP操作難實現?谷歌開源序列建模框架Lingvo谷歌框架
- 深度學習中tensorflow框架的學習深度學習框架
- 由中序序列和先序序列確定一顆二叉樹二叉樹
- 【TensorFlow篇】--Tensorflow框架初始,實現機器學習中多元線性迴歸框架機器學習
- 集合框架-引入泛型框架泛型
- spring框架的引入Spring框架
- phpGrace開源PHP框架PHP框架
- Californium 開源框架分析框架
- PHP開源AJAX框架PHP框架
- 第17天:CSS引入、選擇器優先順序(中級)CSS
- 谷歌提出最新引數優化方法Adafactor,已在TensorFlow中開源谷歌優化
- Swift開發開源框架KatanaSwift框架
- TensorFlow 團隊如何管理開源專案
- 谷歌開源人工智慧系統 TensorFlow谷歌人工智慧
- Workerman開源框架的作者框架
- 開源RAG框架彙總框架
- TensorFlow引入了動態圖機制Eager Execution
- 【LeetCode】Construct Binary Tree from Preorder and Inorder Traversal 根據先序序列和中序序列恢復二叉樹LeetCodeStruct二叉樹
- PhalApi(π框架) - PHP輕量級開源介面框架API框架PHP