chainer meetup03

24
Peephole Connections ををををを Chainer を contributor ををををを 2016/07/02 @Chaienr Meetup #03 1

Upload: kotaro-setoyama

Post on 20-Jan-2017

338 views

Category:

Science


3 download

TRANSCRIPT

Page 1: Chainer meetup03

Peephole Connectionsを実装してChainerの contributorになった話

2016/07/02   @Chaienr Meetup #03

1

Page 2: Chainer meetup03

自己紹介瀬戸山 幸大郎 (Kotaro Setoyama)■ 早稲田基幹情報 B4  研究テーマ:音声合成 (Text-to-Speech)■ アルバイト @Preferred Infrastructure  内容:音声認識 (Speech-to-Text)

Twitter: @Kotaro_Setoyama

2

Page 3: Chainer meetup03

本日の内容■LSTMと Peepholeについて

3

■開発の流れ■まとめ

Page 4: Chainer meetup03

LSTM

わかる LSTM ~ 最近の動向と共に - Qiita http://qiita.com/t_Signull/items/21b82be280b46f467d1b より

■ 現在の Chainer の LSTM[Gers+ 99]

4

Page 5: Chainer meetup03

LSTM with Peephole Connections■LSTM with Peephole Connections[Gers 01]

5わかる LSTM ~ 最近の動向と共に - Qiita http://qiita.com/t_Signull/items/21b82be280b46f467d1b より

Page 6: Chainer meetup03

何が嬉しいのか?Output Gate が出力を遮断している場合,セルの状態が次の時刻に反映されない

00

0

わかる LSTM ~ 最近の動向と共に - Qiita http://qiita.com/t_Signull/items/21b82be280b46f467d1b より 6

Page 7: Chainer meetup03

開発の流れ■Chainerのページに載っている Define your own functionを読む

7

■論文を読む■Chainer集中開発 &実装■相談 &実装

Page 8: Chainer meetup03

開発の流れ■Chainerのページに載っている Define your own functionを読む

8

■論文を読む■Chainer集中開発 &実装■相談 &実装

Page 9: Chainer meetup03

9

オリジナルの functionを実装する手順

Page 10: Chainer meetup03

10

オリジナルの functionを実装する手順

forward,backward, テストが必要らしい

Page 11: Chainer meetup03

開発の流れ■Chainerのページに載っている Define your own functionを読む

11

■論文を読む■Chainer集中開発 &実装■相談 &実装

Page 12: Chainer meetup03

論文を読む

Gers, Felix. Long short-term memory in recurrent neural networks. Diss. Universität Hannover, 2001. 12

Page 13: Chainer meetup03

論文を読む

13

■ 数式をコードでどう記述すれば良いかは何となく理解した→ 既存の LSTM を拡張するか,一から実装するか

Page 14: Chainer meetup03

開発の流れ■Chainerのページに載っている Define your own functionを読む

14

■論文を読む■Chainer集中開発 &実装■相談 &実装

Page 15: Chainer meetup03

Chainer集中開発

15

■LSTM は重みのかけ算を Link で,ユニット内部の計算をFunction で行っている■ セルの値と LSTM の出力を Link に返している■Peephole はそれぞれのゲートにセルの値を追加してるので,Link でセルの値に重みをかけてゲートに足せばよさそう

Function と Link を少し改造すれば実装できそう?

Page 16: Chainer meetup03

実装■Input Gate , Forget Gate には 1 時刻前 (t-1) のセルの値が, Output Gate には今の時刻 (t) のセルの値が入る→ 既存のコードを流用すると, Output Gate にセルの値を足せない

16

Page 17: Chainer meetup03

開発の流れ■Chainerのページに載っている Define your own functionを読む

17

■論文を読む■Chainer集中開発 &実装■相談 &実装

Page 18: Chainer meetup03

相談 &実装■ 他の RNN のユニットにも共通の問題■backward は実装せずに forward だけ実装すれば良い■forward を Chainer の function だけで実装してbackward は chain rule で自動実行■function を呼び出すオーバーヘッドによって若干遅くなる

18

Page 19: Chainer meetup03

テスト■ 定義した関数 1 つ 1 つに対して行う (unittest)■CPU 版と GPU 版をテストを書く■@attr.gpu でデコレータにすれば CPU と共通のコードでテスト可能

19

Page 20: Chainer meetup03

完成

20

Page 21: Chainer meetup03

マージされてません

21

Page 22: Chainer meetup03

RNNの中間層のユニットたち■LSTM → 使える■LSTM with Peephole Connections → 実装済 but 使えない■GRU → 使える■SGU,DSGU → 実装済 but 使えない■MGU → 実装済 but 使えない

22

Page 23: Chainer meetup03

RNNの中間層のユニットたち■LSTM → 使える■LSTM with Peephole Connections → 実装済 but 使えない■GRU → 使える■SGU,DSGU → 実装済 but 使えない■MGU → 実装済 but 使えない

ユニットを切り替えて比較実験を行えるようにインタフェースを統一したい→ アイデア募集中 #1271

23

Page 24: Chainer meetup03

まとめ■Chainer に contribute しよう!■Chainer 集中開発に参加しよう!■ わからないことは開発陣に積極的に聞こう!

24