dying ReLU の発生が MiniBatchSize, LeakyReLU でどう変わるかが気になり調査しました。結果をここでまとめます。参考になれば幸いです。
前回の「dying ReLU について学ぶ」からの続きです。
#MiniBatchSizeを変化させた場合
NNの構成 と 測定内容
- 注目するのは、無反応になるパーセプトロン(dying ReLU)の数。
- 前回の測定では MiniBatchSize を 100 固定とし、Weightの初期値の乱数の種値を振り、発生数の違いを見ました。
- 今回は乱数の種値を 20170523 に固定。(前回の測定内で最多発生の値)
- MiniBatchSizeの値を振り、無反応になるパーセプトロンの数がどう変わるかを見ます。
測定結果
- 上側グラフは 横軸epoch数 縦軸「正解率」
- 下側グラフは 横軸epoch数 縦軸「dyingReLUの発生数」
正解率
- MiniBatchSizeが大きいほど、正解率が低いように見える。
dyingReLU の発生数
- どの MiniBatchSizeの値でも発生はしている。
- MiniBatchSize 10 の時が 最多6 となったが、以後の 50,100,200,500 と発生数に相関はないように見える。(比例や反比例のような関係を期待してました)
- MiniBacheSizeを大きくしても、dyingReLUの抑制には効かなさそう。(大きくするメリットはなさそう)
dW 変化動画
- 画像は四角一つが1パーセプトロンの重みの変化(dW)を示してます。
- パーセプトロンの四角は、一辺が28ピクセルの計784(=MNIST)
- 各パーセプトロン内の max~min を 輝度255~0 と変換し表示してます。
- 変換式
$xはdwの各値$
$yは変換後の輝度値$
$iは1~784$
y_i = \frac{x_i - min}{max-min+ 0.0001} × 255
-
0.0001 は0除算防止。
-
max-min が 0.0255未満になると、max値でも 輝度255にならないが、max-minが小さい事が見た目でわかるのでそれはそれで。
-
動画容量の都合で、100epochまでの尺がなく、60epoch まで位しかありません...。
MiniBatchSize 500
K:20170523 MiniBatchSize:500 pic.twitter.com/yaiJKMTYjK
— t-tkd3a (@t_tkd3a) 2017年5月27日
MiniBatchSize 200
K20170523 , MiniBatchSize 200 pic.twitter.com/oeTuJEprCQ
— t-tkd3a (@t_tkd3a) 2017年5月27日
MiniBatchSize 50
K:20170523 mb:50 pic.twitter.com/ckMyUBknO5
— t-tkd3a (@t_tkd3a) 2017年5月27日
MiniBatchSize 10
K:20170523 MB:10 pic.twitter.com/E32m9DD3Ru
— t-tkd3a (@t_tkd3a) 2017年5月27日
- グラフ真っ青...。 MiniBatchSize 10ですから 10枚中の1枚を外すと、正解率90%になりますね...。
#LeakyReLU を用いた場合
NNの構成 と 測定内容
- 負側にも傾きがある LeakyReLUを用いて、dyingReLU の 発生数を見ます。
- 負側の傾きによって、正解率に違いがでるか見ます。
- MiniBatchSize は 100で固定。 乱数種値は20170523で固定。
測定結果
- 上側グラフは 横軸epoch数 縦軸「正解率」
- 下側グラフは 横軸epoch数 縦軸「dyingReLUの発生数」
正解率
- 0.5 でも 学習は進み 他とだいたい同じか 0.003 位低い値になっている(もっと極端に差がでるかと思ってました)
dyingReLU の発生数
- dyingReLU は 発生してない。
dW 変化動画
Leaky ReLU 負側傾き: 0.001
K:20170523 mb:100 LeakyReLU:0.01 pic.twitter.com/uJaSY5D5HH
— t-tkd3a (@t_tkd3a) 2017年5月27日
Leaky ReLU 負側傾き: 0.01
K:20170523 mb:100 LeakyReLU:0.01 pic.twitter.com/uJaSY5D5HH
— t-tkd3a (@t_tkd3a) 2017年5月27日
Leaky ReLU 負側傾き: 0.18
K:20170523 mb:100 LeakyReLU:0.18 pic.twitter.com/2gDZAiV9R3
— t-tkd3a (@t_tkd3a) 2017年5月27日
Leaky ReLU 負側傾き: 0.5
K:20170523 mb:100 LeakyReLU:0.5 pic.twitter.com/absoRFxy31
— t-tkd3a (@t_tkd3a) 2017年5月27日
考察
- LeakyReLU では、dyingReLUは発生しなかったが、dwの推移動画をみると 変化がなくなったようなパーセプトロンが存在しているようにも見える。
- 後日、Batch Normalization を入れた場合にどうなるかを試してみます。