LoginSignup
28
14

More than 3 years have passed since last update.

深層学習/バッチ正規化

Posted at

1.はじめに

 今回は、バッチ正規化についてまとめます。

2.バッチ正規化 (Batch Normalization)

 バッチ正規化は、学習時のミニバッチ毎に各チャンネルを平均0分散1になるように正規化することで、学習の安定化や速度アップが出来る必須のテクニックです。
スクリーンショット 2020-04-16 17.32.02.png
 しかし、以下の弱点もあります。
1)高解像度の画像を扱うことでメモリが不足しバッチサイズが小さくなると、平均・分散の推定が不安定になり上手く学習が進まない。
2)1)の対策として複数のGPUで対応すると、高価なハードウエアが必要で実装や最適化が複雑になる。
3)ビデオの隣接フレームといった相関がある画像の場合、平均・分散の推定が不安定になり上手く学習が進まない。
 そのため、これらの弱点を補う様々なバリエーションが登場しています。

3.バッチ正規化のバリエーション

スクリーンショット 2020-04-16 17.20.16.png
1) Layer Normalization
 全チャンネルにまたがって平均・分散をとる方法。大局的すぎて、特に重要ではないチャンネルが画像全体に渡って高い値を示した場合に他のチャンネルが抑制されてしまう問題点あり。

2)Instance Normalization
 各チャンネル独立に画像の縦横方向についてのみ平均・分散をとる方法。複数のチャンネルの組み合わせによって表現される特徴を歪めてしまう問題点あり。

3)Group Normalization
 チャンネルをG個にグルーピングして Layer Normalization と Instance Normalization の中間的な処理をする方法。画像分類などのタスクで Batch Normalization に匹敵する精度を実現しています。

4.バッチ正規化を入れる場所

1)全結合層
スクリーンショット 2020-04-16 18.14.16.png
2)畳み込み層
スクリーンショット 2020-04-16 18.14.28.png

28
14
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
28
14