Batch normalization(バッチ正規化)の役割
-
Batch normalization(バッチ正規化)
- ミニバッチ毎に、平均0分散1になるよう正規化を行う
→出力が適度に分散され、勾配消失などの問題が起こりにくくなり、ネットワークの学習プロセスを全体的に安定化させて学習速度を高める - ディープラーニングでは、レイヤを何層にも積み重ねるため、パラメータが変わるとそのアウトプットが変わり、レイヤのインプットの分布が大きく変わることがある(Internal Covariate Shift)
→ミニバッチごとの統計量を使って、ミニバッチごとにに正規化し、解決する - 毎回違うバッチごとの平均・分散で正規化するため、ノイズを生み、ネットワークを汎化させる正則化の効果がある
→ドロップアウトの必要性を減らせる - 推論時は学習時とは違い、バッチ毎の平均ではなく、学習データのバッチ毎の平均と分散の期待値を使用して、各次元の学習済みパラメータγ、βを用いて変換を行っていく
- 深めのネットワークを作ったときに、フィルタや重みの演算とバイアスの演算の後、活性化関数の前などに数カ所挟むのが良い
- ミニバッチ毎に、平均0分散1になるよう正規化を行う
-
Batch normalizationのメリット
- 大きな学習係数が使える
- 正則化効果がある
- 初期値にそれほど依存しない
- 学習が安定する。
- ドロップアウトの必要性を減らすことができる
-
Batch normalizationのデメリット
- パラメータが多くなりメモリや演算量が多くなる
参考サイト