chainer meetup03
TRANSCRIPT
Peephole Connectionsを実装してChainerの contributorになった話
2016/07/02 @Chaienr Meetup #03
1
自己紹介瀬戸山 幸大郎 (Kotaro Setoyama)■ 早稲田基幹情報 B4 研究テーマ:音声合成 (Text-to-Speech)■ アルバイト @Preferred Infrastructure 内容:音声認識 (Speech-to-Text)
Twitter: @Kotaro_Setoyama
2
本日の内容■LSTMと Peepholeについて
3
■開発の流れ■まとめ
LSTM
わかる LSTM ~ 最近の動向と共に - Qiita http://qiita.com/t_Signull/items/21b82be280b46f467d1b より
■ 現在の Chainer の LSTM[Gers+ 99]
4
LSTM with Peephole Connections■LSTM with Peephole Connections[Gers 01]
5わかる LSTM ~ 最近の動向と共に - Qiita http://qiita.com/t_Signull/items/21b82be280b46f467d1b より
何が嬉しいのか?Output Gate が出力を遮断している場合,セルの状態が次の時刻に反映されない
00
0
わかる LSTM ~ 最近の動向と共に - Qiita http://qiita.com/t_Signull/items/21b82be280b46f467d1b より 6
開発の流れ■Chainerのページに載っている Define your own functionを読む
7
■論文を読む■Chainer集中開発 &実装■相談 &実装
開発の流れ■Chainerのページに載っている Define your own functionを読む
8
■論文を読む■Chainer集中開発 &実装■相談 &実装
9
オリジナルの functionを実装する手順
10
オリジナルの functionを実装する手順
forward,backward, テストが必要らしい
開発の流れ■Chainerのページに載っている Define your own functionを読む
11
■論文を読む■Chainer集中開発 &実装■相談 &実装
論文を読む
Gers, Felix. Long short-term memory in recurrent neural networks. Diss. Universität Hannover, 2001. 12
論文を読む
13
■ 数式をコードでどう記述すれば良いかは何となく理解した→ 既存の LSTM を拡張するか,一から実装するか
開発の流れ■Chainerのページに載っている Define your own functionを読む
14
■論文を読む■Chainer集中開発 &実装■相談 &実装
Chainer集中開発
15
■LSTM は重みのかけ算を Link で,ユニット内部の計算をFunction で行っている■ セルの値と LSTM の出力を Link に返している■Peephole はそれぞれのゲートにセルの値を追加してるので,Link でセルの値に重みをかけてゲートに足せばよさそう
Function と Link を少し改造すれば実装できそう?
実装■Input Gate , Forget Gate には 1 時刻前 (t-1) のセルの値が, Output Gate には今の時刻 (t) のセルの値が入る→ 既存のコードを流用すると, Output Gate にセルの値を足せない
16
開発の流れ■Chainerのページに載っている Define your own functionを読む
17
■論文を読む■Chainer集中開発 &実装■相談 &実装
相談 &実装■ 他の RNN のユニットにも共通の問題■backward は実装せずに forward だけ実装すれば良い■forward を Chainer の function だけで実装してbackward は chain rule で自動実行■function を呼び出すオーバーヘッドによって若干遅くなる
18
テスト■ 定義した関数 1 つ 1 つに対して行う (unittest)■CPU 版と GPU 版をテストを書く■@attr.gpu でデコレータにすれば CPU と共通のコードでテスト可能
19
完成
20
マージされてません
21
RNNの中間層のユニットたち■LSTM → 使える■LSTM with Peephole Connections → 実装済 but 使えない■GRU → 使える■SGU,DSGU → 実装済 but 使えない■MGU → 実装済 but 使えない
22
RNNの中間層のユニットたち■LSTM → 使える■LSTM with Peephole Connections → 実装済 but 使えない■GRU → 使える■SGU,DSGU → 実装済 but 使えない■MGU → 実装済 but 使えない
ユニットを切り替えて比較実験を行えるようにインタフェースを統一したい→ アイデア募集中 #1271
23
まとめ■Chainer に contribute しよう!■Chainer 集中開発に参加しよう!■ わからないことは開発陣に積極的に聞こう!
24