《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > 各種NLP操作難實現?谷歌開源序列建模框架Lingvo

各種NLP操作難實現?谷歌開源序列建模框架Lingvo

2019-02-27

自然語言處理在過去一年取得了很大進步,但直接關注 NLP 或序列建模的框架還很少。本文介紹了谷歌開源的 Lingvo,它是一種建立在 TensorFlow 上的序列建模框架。該框架重點關注協作實現與共享代碼庫,能極大提升代碼復用與研究迭代速度,NLP 的今年就靠你了~


Lingvo 是世界語(Esperanto)中的一個單詞,它表示「語言」的意思。這一命名展示了 Lingvo 框架的根源:它是由 TensorFlow 開發的通用深度學習框架,它重點關注自然語言處理相關的序列建模方法,包括機器翻譯、語音識別和語音合成等。


項目地址:https://github.com/tensorflow/lingvo


在谷歌內部,Lingvo 框架非常有吸引力,使用它的研究人員越來越多。目前,有數十篇獲得 SOTA 結果的論文都通過 Lingvo 框架得到了最優的復現,當然開源后將會有越來越多的新實現。從傳統的 RNN 序列模型到目前流行的 Transformer,再到包含變分自編碼器模塊的前沿模型,Lingvo 支持的序列建模架構非常多。


為了支持研究社區并鼓勵復現研究論文,谷歌開源了這項框架。他們表示以后谷歌發布的一些序列建模新研究也會嘗試采用 Lingvo 框架,它的便捷性將提升 NLP 研究的速度。


Lingvo 主要支持大量研究團體在一個共享代碼庫中從事語音和自然語言處理相關問題的研究。它的設計原則如下:


單個代碼塊應該精細且模塊化,它們會使用相同的接口,同時也容易擴展;

實驗應該是共享的、可比較的、可復現的、可理解的和正確的;

性能應該可以高效地擴展到生產規模的數據集,或擁有數百個加速器的分布式訓練系統;

當模型從研究轉向產品時應該盡可能共享代碼。

微信圖片_20190227202901.jpg


圖 1:Lingvo 框架整體結構,它展示了模型如何進行實例化、訓練、評估和部署。


Lingvo 是在考慮協作研究的基礎上構建的,它主要通過在不同任務之間共享公共層的實現,從而提升代碼的復用程度。此外,所有層都實現了相同的公共接口,并以相同的方式布局代碼結構。這不僅會產生更簡潔和易讀的代碼,同時其它任務上的改良也可以便捷地應用到我們的任務上。實現這種一致性代碼確實會有更多的成本,例如更加規范和模板化的代碼。但是 Lingvo 也在嘗試減少這種成本,以確保更快地迭代研究成果。


協作的另一個方面是共享可復現的結果。Lingvo 為檢查模型超參數配置提供了集中的地址,這不僅可以記錄重要的實驗,同時通過訓練相同的模型,其它研究者可以更輕松地復現我們的研究成果。


def Task(cls):
  p = model.AsrModel.Params()
  p.name = 'librispeech'

  # Initialize encoder params.
  ep = p.encoder
  # Data consists 240 dimensional frames (80 x 3 frames), which we
  # re-interpret as individual 80 dimensional frames. See also,
  # LibrispeechCommonAsrInputParams.
  ep.input_shape = [None, None, 80, 1]
  ep.lstm_cell_size = 1024
  ep.num_lstm_layers = 4
  ep.conv_filter_shapes = [(3, 3, 1, 32), (3, 3, 32, 32)]
  ep.conv_filter_strides = [(2, 2), (2, 2)]
  ep.cnn_tpl.params_init = py_utils.WeightInit.Gaussian(0.001)
  # Disable conv LSTM layers.
  ep.num_conv_lstm_layers = 0

  # Initialize decoder params.
  dp = p.decoder
  dp.rnn_cell_dim = 1024
  dp.rnn_layers = 2
  dp.source_dim = 2048
  # Use functional while based unrolling.
  dp.use_while_loop_based_unrolling = False

  tp = p.train
  tp.learning_rate = 2.5e-4
  tp.lr_schedule = lr_schedule.ContinuousLearningRateSchedule.Params().Set(
      start_step=50000, half_life_steps=100000, min=0.01)

  # Setting p.eval.samples_per_summary to a large value ensures that dev,
  # devother, test, testother are evaluated completely (since num_samples for
  # each of these sets is less than 5000), while train summaries will be
  # computed on 5000 examples.
  p.eval.samples_per_summary = 5000
  p.eval.decoder_samples_per_summary = 0

  # Use variational weight noise to prevent overfitting.
  p.vn.global_vn = True
  p.train.vn_std = 0.075
  p.train.vn_start_step = 20000

  return p

代碼1:Lingvo 中的任務配置示例。每個實驗的超參數都是在其所屬的類中配置的,與構建網絡和檢查版本控制的代碼不同。


雖然 Lingvo 一開始重點關注 NLP,但它本質上非常靈活。用于圖像分割和點云分類任務的模型已經使用該框架成功實現。它還支持知識蒸餾、GAN 和多任務模型。同時,該框架沒有因為便捷而犧牲速度,它具有優化的輸入流程和快速的分布式訓練。最后,Lingvo 還著眼于生產化,甚至有一條明確的路徑來將模型移植到移動端。


論文:Lingvo: a Modular and Scalable Framework for Sequence-to-Sequence Modeling


微信圖片_20190227202934.jpg


論文地址:https://arxiv.org/abs/1902.08295


摘要:Lingvo 是一個能夠為協作式深度學習研究提供完整解決方案的 Tensorflow 框架,尤其關注序列到序列模型。Lingvo 模型由模塊化構件組成,這些構件靈活且易于擴展,實驗配置集中且可定制。分布式訓練和量化推理直接在框架內得到支持,框架內包含大量 utilities、輔助函數和最新研究思想的現有實現。過去兩年里,Lingvo 已被數十個研究人員在 20 篇論文中協作使用。本文作為對框架各個部分的介紹,概述了 Lingvo 的基本設計,同時還提供了展示框架能力的高級功能示例。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: www成人国产在线观看网站| 日本年轻的妈妈| 最近的中文字幕大全免费版| 日韩欧美一及在线播放| 摸进她的内裤里疯狂揉她动图视频| 好吊妞视频一区二区| 国产精品无码一区二区在线观一| 国产大片免费天天看| 内射干少妇亚洲69xxx| 亚洲日本va午夜中文字幕一区| 久久精品夜色国产亚洲av| 三级韩国一区久久二区综合| 91极品在线观看| 韩国v欧美v亚洲v日本v| 狠狠久久永久免费观看| 明星换脸高清一区二区| 巨大黑人极品hdvideo| 国产精品久久久久久久网站| 国产一区二区三区露脸| 亚洲欧美一区二区久久| 中文字幕日韩一区二区三区不卡 | 久久国产一区二区三区| dy8888影院午夜看片| 麻豆乱码国产一区二区三区 | 被按摩的人妻中文字幕| 欧美日韩在线成人| 成年女人a毛片免费视频| 国产精品无码一区二区三区免费| 四虎永久免费地址在线观看| 亚洲另类自拍丝袜第五页| 一级特级aaaa毛片免费观看| 欧美影院在线观看| 男人边吃奶边爱边做视频刺激| 日韩在线视频观看| 天天看天天射天天碰| 国产人成视频在线视频| 亚洲欧美中日韩| 一本加勒比hezyo东京re高清| 高潮抽搐潮喷毛片在线播放| 永久黄色免费网站| 工棚里的换爱系列小说|