#1.はじめに
今回は、バッチ正規化についてまとめます。
#2.バッチ正規化 (Batch Normalization)
バッチ正規化は、学習時のミニバッチ毎に各チャンネルを平均0分散1になるように正規化することで、学習の安定化や速度アップが出来る必須のテクニックです。
しかし、以下の弱点もあります。
1)高解像度の画像を扱うことでメモリが不足しバッチサイズが小さくなると、平均・分散の推定が不安定になり上手く学習が進まない。
2)1)の対策として複数のGPUで対応すると、高価なハードウエアが必要で実装や最適化が複雑になる。
3)ビデオの隣接フレームといった相関がある画像の場合、平均・分散の推定が不安定になり上手く学習が進まない。
そのため、これらの弱点を補う様々なバリエーションが登場しています。
#3.バッチ正規化のバリエーション
1) Layer Normalization
全チャンネルにまたがって平均・分散をとる方法。大局的すぎて、特に重要ではないチャンネルが画像全体に渡って高い値を示した場合に他のチャンネルが抑制されてしまう問題点あり。
2)Instance Normalization
各チャンネル独立に画像の縦横方向についてのみ平均・分散をとる方法。複数のチャンネルの組み合わせによって表現される特徴を歪めてしまう問題点あり。
3)Group Normalization
チャンネルをG個にグルーピングして Layer Normalization と Instance Normalization の中間的な処理をする方法。画像分類などのタスクで Batch Normalization に匹敵する精度を実現しています。