バッチ正規化
読み: ばっちせいきか
ミニバッチ単位で各層の入力を正規化し、学習の安定化と高速化を実現するニューラルネットワークの手法。
バッチ正規化 (Batch Normalization) は、ニューラルネットワークの各層への入力をミニバッチ単位で平均 0 ・分散 1 に正規化する手法である。2015 年に Ioffe と Szegedy によって提案され、深層ネットワークの学習を劇的に安定化・高速化させた。内部共変量シフト (層の入力分布が学習中に変動する現象) を軽減することが当初の動機とされた。
正規化後にスケールパラメータ γ とシフトパラメータ β を学習可能なパラメータとして適用し、ネットワークが必要に応じて元の分布を復元できるようにする。推論時にはミニバッチ統計量の代わりに、学習中に蓄積した移動平均と移動分散を使用する。
- 学習率の許容範囲拡大: 正規化により勾配の大きさが安定するため、より大きな学習率を使用でき、収束が速くなる。学習率のチューニングも容易になる
- 正則化効果: ミニバッチの統計量にノイズが含まれるため、軽度の正則化効果がある。Dropout との併用は冗長になる場合がある
- 配置位置: 畳み込み層や全結合層の直後、活性化関数の前に配置するのが一般的。ただし活性化関数の後に配置する方が良い場合もあり、タスクに依存する
バッチサイズが小さい場合や系列データでは統計量が不安定になるため、Layer Normalization、Instance Normalization、Group Normalization などの代替手法が使い分けられる。画像生成ではスタイル情報を注入する Adaptive Instance Normalization (AdaIN) も重要な技術である。