Edited at

dying ReLU について学ぶ (その2) Leaky ReLU

More than 1 year has passed since last update.

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


MiniBatchSize 200


MiniBatchSize 50


MiniBatchSize 10


  • グラフ真っ青...。 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


Leaky ReLU 負側傾き: 0.01


Leaky ReLU 負側傾き: 0.18


Leaky ReLU 負側傾き: 0.5


考察


  • LeakyReLU では、dyingReLUは発生しなかったが、dwの推移動画をみると 変化がなくなったようなパーセプトロンが存在しているようにも見える。

  • 後日、Batch Normalization を入れた場合にどうなるかを試してみます。