バッチ正規化とは
バッチ正規化(Batch Normalization、バッチノーム)は、2015年にIoffeとSzegedyによって提案された、ニューラルネットワークの学習を安定化・高速化するための正規化手法です。各ミニバッチ内で各層の入力の平均を0、分散を1に正規化し、さらに学習可能なスケーリングパラメータとシフトパラメータで変換を行います。
内部共変量シフトの軽減
ディープラーニングでは、前の層のパラメータが更新されるたびに次の層への入力分布が変化する「内部共変量シフト」が学習を困難にします。バッチ正規化は各層の入力分布を安定させることで、この問題を軽減します。これにより、より大きな学習率の使用が可能になり、収束速度が向上します。
バッチ正規化の実装
訓練時には、ミニバッチの平均と分散を用いて正規化を行います。推論時には訓練中に計算された移動平均と移動分散を使用します。正規化後にスケールパラメータγとシフトパラメータβを適用し、ネットワークが最適な出力分布を学習できるようにします。これらのパラメータにより、必要であれば正規化の効果を元に戻すことも可能です。
バッチ正規化の注意点と代替手法
バッチ正規化はバッチサイズに依存するため、小さなバッチサイズでは統計量の推定が不安定になります。この問題に対処するため、レイヤー正規化、インスタンス正規化、グループ正規化などの代替手法が提案されています。特にTransformerではレイヤー正規化が標準的に使用されています。