dying ReLU の発生が Batch Normarization を用いると どう変わるかが気になり調査しました。結果をここにまとめます。参考になれば幸いです。
「dying ReLU について学ぶ」 と 「dying ReLU について学ぶ(その2)」 の続きです。
「Batch Normalization の理解」 も参考になれば幸いです。
以下、本文中では Batch Normalization を BN と略します。
BNありで MiniBatchSize を変化させた場合
NNの構成 と 測定内容
測定結果
- グラフ上側は 横軸が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 あり 動画
BN MiniBatchSize 100 pic.twitter.com/kH3WU7LIzO
— t-tkd3a (@t_tkd3a) 2017年5月31日
- どのパーセプトロンのも、まんべんなく変化している。 = dWが存在 = 重みが変化している。
- (真っ黒なまま変化なしのパーセプトロンが 発生してない)
- 背景部分(文字部分でない場所)が 中間値のグレーになっている。
BN なし 動画
MNIST DW 可視化 100epoch pic.twitter.com/Guy62oA3lH
— t-tkd3a (@t_tkd3a) 2017年5月24日
- BNなしでは、背景部分は 白(最大値) または 黒(最小値) が目立つ。
- Weight に 白(最大値) または 黒(最小値) での 更新が続くと、初期値によっては、ReLUが反応しなくなる……のかな。
BN あり 正解率 推移グラフ
BN なし 正解率 推移グラフ
-
BNなしは学習時に正解率が100%に張りつくのが目立つ。
-
BNありは学習時に100枚中1~2枚の誤判定が目立つ。
-
その影響か、BNありは、テスト時の正解率も、「BNなし」よりも低くなってる。
-
入力画像の使用順は、epoch毎にシャッフルしているのも要因の一つと想像。
-
「BNなし」の時は、シャッフル済みでも、すでに覚えていて順番関係なく、判別できる……と想像。
-
「BNあり」では、シャッフルによってMiniBatch内の画像の組み合わせが変わると、平均・分散が変わり、出力値も変動するため、学習データを覚えきるには至らなく、学習データでも誤る……と想像。
以下の MiniBatchSize 500,200,50,10 は BN のみです。
MiniBatchSize 500
BN MiniBatchSize 500 pic.twitter.com/zFyRVITQPv
— t-tkd3a (@t_tkd3a) 2017年5月31日
MiniBatchSize 200
BN MiniBatchSize 200 pic.twitter.com/CV84Up9QVj
— t-tkd3a (@t_tkd3a) 2017年5月31日
MiniBatchSize 50
BN MiniBatchSize 50 pic.twitter.com/JOICNYkZps
— t-tkd3a (@t_tkd3a) 2017年5月31日
MiniBatchSize 10
BN MiniBatchSize 10 pic.twitter.com/LMNTGJouk2
— t-tkd3a (@t_tkd3a) 2017年5月31日
- MiniBatchSize 10 にても、まんべんなくdWが伝達さてきているように見える。
- グラフが真っ青...。 MiniBatchSize 10 では 学習時に1枚を誤ると 正解率90% ですものね...。
BN と LeakyReLU を併用した場合
NNの構成 と 測定内容
測定結果
- 20 epoch 以降では 、0.001 0.01 0.18 0.5 のどれも 正解率はほぼ同じように見える。
- dying ReLUは発生していない。
- 先の ReLU の場合と比べても、正解率はほぼ同じように見える。
dW 変化動画
Leaky ReLU 負側傾き 0.001 BNの有無で比較
BN あり 動画
BN LeakyReLU 0.001 pic.twitter.com/mgzu2otBsq
— t-tkd3a (@t_tkd3a) 2017年5月31日
BN なし 動画
K:20170523 mb:100 LeakyReLU:0.01 pic.twitter.com/uJaSY5D5HH
— t-tkd3a (@t_tkd3a) 2017年5月27日
- BN なしでは、dying ReLU判定とはなってないが、真っ黒のまま無反応になっているパーセプトロンが存在するように見える。
- BN ありでは、上記のようなパーセプトロンは発生していないように見える。
BN あり グラフ
BN なし グラフ
- ReLUと同様に、LeakyReLUでも、BN なしの方が、正解率が高い。
Leaky ReLU 負側傾き 0.01
BN LeakyReLU 0.01 pic.twitter.com/Jxlg4ZzRge
— t-tkd3a (@t_tkd3a) 2017年5月31日
Leaky ReLU 負側傾き 0.18
BN LeakyReLU 0.18 pic.twitter.com/vKAl7lzzJZ
— t-tkd3a (@t_tkd3a) 2017年5月31日
Leaky ReLU 負側傾き 0.5
BN LeakyReLU 0.5 pic.twitter.com/7CEpvvdFB2
— t-tkd3a (@t_tkd3a) 2017年5月31日
考察
-
dyingReLU よりも BNの効果を見た感あるけども、これはこれで。
-
MNISTでは 隠れ層1のシンプルなNNでも、98%程の正解率がでている。残りの2%の誤る要因は、BNを入れる事で解消できる性質のものではなさそう。
-
今回は、Adamを用いたが、SGDでの挙動もみてみたくなってきた。
-
BNの効果は、CIFAR-10, CIFAR-100 で CNNを用いてのもう少し深いネットワークで見てみます。