2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dying ReLU について学ぶ (その3) Batch Normalization

Last updated at Posted at 2017-05-31

dying ReLU の発生が Batch Normarization を用いると どう変わるかが気になり調査しました。結果をここにまとめます。参考になれば幸いです。

「dying ReLU について学ぶ」 と 「dying ReLU について学ぶ(その2)」 の続きです。
「Batch Normalization の理解」 も参考になれば幸いです。
以下、本文中では Batch Normalization を BN と略します。

BNありで MiniBatchSize を変化させた場合

NNの構成 と 測定内容

04_BN_MiniBatch.PNG

測定結果

Matome_MiniBatchSize.png

  • グラフ上側は 横軸がepoch数、縦軸が正解率
  • グラフ下側は 横軸がepoch数、縦軸はdying ReLU発生数
  • 乱数初期値は前回同様 20170523 固定。

dying ReLU 発生数

  • MiniBatchSize がいずれの場合でも 発生しなかった。

正解率

  • MiniBatchSize 10 が他と比べ 1~1.5%程 正解率が低い。
  •  BN で 正規化するには、MiniBatchSize 10 は少なく、正規化が機能しなく、正解率を下げてると解釈してます。

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 まで位しかありません...。

miniBatchSiza 100にて BN の有無での比較

BN あり 動画

  • どのパーセプトロンのも、まんべんなく変化している。 = dWが存在 = 重みが変化している。
  •  (真っ黒なまま変化なしのパーセプトロンが 発生してない)
  • 背景部分(文字部分でない場所)が 中間値のグレーになっている。
     

BN なし 動画

  • BNなしでは、背景部分は 白(最大値) または 黒(最小値) が目立つ。
  • Weight に 白(最大値) または 黒(最小値) での 更新が続くと、初期値によっては、ReLUが反応しなくなる……のかな。

BN あり 正解率 推移グラフ

NNL2_L1P256_AF0_20170526-143350-101.png

BN なし 正解率 推移グラフ

NNL2_L1P256_AF0_20170523-161328-96.png

  • BNなしは学習時に正解率が100%に張りつくのが目立つ。

  • BNありは学習時に100枚中1~2枚の誤判定が目立つ。

  • その影響か、BNありは、テスト時の正解率も、「BNなし」よりも低くなってる。

  • 入力画像の使用順は、epoch毎にシャッフルしているのも要因の一つと想像。

  •  「BNなし」の時は、シャッフル済みでも、すでに覚えていて順番関係なく、判別できる……と想像。

  •  「BNあり」では、シャッフルによってMiniBatch内の画像の組み合わせが変わると、平均・分散が変わり、出力値も変動するため、学習データを覚えきるには至らなく、学習データでも誤る……と想像。

以下の MiniBatchSize 500,200,50,10 は BN のみです。

MiniBatchSize 500

NNL2_L1P256_AF0_20170526-193825-793.png

MiniBatchSize 200

NNL2_L1P256_AF0_20170526-192346-798.png

MiniBatchSize 50

NNL2_L1P256_AF0_20170526-184002-817.png

MiniBatchSize 10

  • MiniBatchSize 10 にても、まんべんなくdWが伝達さてきているように見える。

NNL2_L1P256_AF0_20170526-145935-674.png

  • グラフが真っ青...。 MiniBatchSize 10 では 学習時に1枚を誤ると 正解率90% ですものね...。

BN と LeakyReLU を併用した場合

NNの構成 と 測定内容

05_BN_LeakyReLU.PNG

測定結果

Matome_Leaky.png

  • 20 epoch 以降では 、0.001 0.01 0.18 0.5 のどれも 正解率はほぼ同じように見える。
  • dying ReLUは発生していない。
  • 先の ReLU の場合と比べても、正解率はほぼ同じように見える。

dW 変化動画

Leaky ReLU 負側傾き 0.001 BNの有無で比較

BN あり 動画

BN なし 動画

  • BN なしでは、dying ReLU判定とはなってないが、真っ黒のまま無反応になっているパーセプトロンが存在するように見える。
  • BN ありでは、上記のようなパーセプトロンは発生していないように見える。

BN あり グラフ

NNL2_L1P256_AF1_20170526-201339-837.png

BN なし グラフ

NNL2_L1P256_AF1_20170523-180754-496.png

  • ReLUと同様に、LeakyReLUでも、BN なしの方が、正解率が高い。

Leaky ReLU 負側傾き 0.01

NNL2_L1P256_AF1_20170526-211126-466.png

Leaky ReLU 負側傾き 0.18

NNL2_L1P256_AF1_20170526-204206-63.png

Leaky ReLU 負側傾き 0.5

NNL2_L1P256_AF1_20170526-213941-908.png

考察

  • dyingReLU よりも BNの効果を見た感あるけども、これはこれで。

  • MNISTでは 隠れ層1のシンプルなNNでも、98%程の正解率がでている。残りの2%の誤る要因は、BNを入れる事で解消できる性質のものではなさそう。

  • 今回は、Adamを用いたが、SGDでの挙動もみてみたくなってきた。

  • BNの効果は、CIFAR-10, CIFAR-100 で CNNを用いてのもう少し深いネットワークで見てみます。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?