RNN に関するニューラルネットの最新手法をTensorFlowで実装している人がいた

以下のリポジトリ
github.com

既実装は以下:

  • Highway Networks
  • Recurrent Highway Networks
  • Multiplicative Integration Within RNNs
  • Recurrent Dropout
  • Layer Normalization
  • Layer Normalization & Multiplicative Integration
  • LSTM With Multiple Memory Arrays
  • Minimal Gated Unit RNN
  • GRU Mutants
  • Weight Tying

使ってみる価値はあるかも。時間の節約。

Recurrent Batch NormalizationをTensorFlowで実装した

要するにLSTMの内部でバッチ正規化を行うということ。

論文と実装は以下の通り。

本実装は以下の先行実装に依拠しており、ここに感謝する次第である。

前者はTensorFlow実装、後者はTheano実装であるが、前者は後者を参考にして実装された。本実装はさらに前者の実装に対して自分用に手を加えたということである。なおTensorFlow 0.10でのみ動作確認をしている。

本実装ではBN_LSTMCellクラスが定義されている。使い方の注意点は、BN_LSTMCellのインスタンスを作成する際、引数に'is_training'を取るということである。これはバッチ正規化に関して、学習時と評価時で振る舞いを変えるためのものである。より具体的に言うと、学習時には各ミニバッチについて統計量(平均と分散)を計算してバッチ正規化を行う必要があるのだが、評価時の各ミニバッチに対しては改めて統計量を計算する必要はなく、学習データ全体から求められる確定した統計量に基づいてバッチ正規化を行うのである。

今後はGRUやSGU, MGUなどにrecurrent batch normalizationを実装する予定である。

FIT2016の企画 「ここから始める情報処理 ~画像、音声、テキスト、検索、学習、一気にまとめてチュートリアル~」 のスライドまとめ

Facebookにて、山崎俊彦氏がまとめていらっしゃったので、こちらにもメモ的に残しておこうということ。

WaveNetの各種実装:TensorFlow, Chainer, and Keras

  • TensorFlow実装

github.com

  • 番外編:WaveNetによる音声生成の高速化実装(学習ではない)

Fast Wavenet: An efficient Wavenet generation implementation
github.com
どれくらい高速か、というと論文の通りにナイーブに実装すると、層の数Lに対して2^Lに比例するオーダーだったのが、Lの1次に比例するオーダーになるそうだ(下図参照)。
f:id:tam5917:20160925115303p:plain

現在、もっとも開発が盛んなのはTensorFlow実装のリポジトリだろうか。生成の高速化実装も取り込まれた。充実感がある。
これらが実際に使い物になるかどうかはまた別の問題である。