1 背景と動機
1.1 内部共変量シフトの問題
深層ニューラルネットワークでは、各層の入力分布が前層のパラメータ更新によって絶えず変化する。この現象を内部共変量シフトと呼ぶ。分布の変動により、後段の層は変動する入力に常に適応する必要が生じ、学習が非効率になる。特に勾配消失や爆発の原因ともなり、低い学習率や慎重な初期化が要求される要因となっていた。
1.2 従来の解決策との比較
内部共変量シフトへの従来の対策として、入力を事前に白色化する方法や、注意深い重み初期化(Xavier初期化など)、低い学習率の設定、ドロップアウトによる正則化などが存在した。しかし、白色化は計算コストが高く、学習中に毎回適用するのは非現実的であった。バッチ正規化はミニバッチ単位での簡易な標準化により、これらの問題をより効率的に緩和する。
2 アルゴリズムの定義
2.1 順伝播の計算式
2.1.1 ミニバッチ統計量の算出
ミニバッチ \( \mathcal{B} = \{x_1, \dots, x_m\} \) に対して、平均 \( \mu_{\mathcal{B}} \) と分散 \( \sigma^2_{\mathcal{B}} \) を次式で算出する。 \[ \mu_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^m x_i,\quad \sigma^2_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^m (x_i - \mu_{\mathcal{B}})^2 \]
2.1.2 標準化とスケール・シフト
各入力 \( x_i \) を標準化した後、学習可能なパラメータ \( \gamma \)(スケール)と \( \beta \)(シフト)で線形変換する。 \[ \hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma^2_{\mathcal{B}} + \epsilon}},\quad y_i = \gamma \hat{x}_i + \beta \] ここで \( \epsilon \) はゼロ除算を防ぐ微小な定数である。
2.2 逆伝播の勾配計算
2.2.1 パラメータの更新式
逆伝播では、損失 \( L \) に対する \( \gamma \) と \( \beta \) の勾配を計算する。 \[ \frac{\partial L}{\partial \gamma} = \sum_{i=1}^m \frac{\partial L}{\partial y_i} \hat{x}_i,\quad \frac{\partial L}{\partial \beta} = \sum_{i=1}^m \frac{\partial L}{\partial y_i} \]
2.2.2 統計量の影響
標準化操作は \( \mu_{\mathcal{B}} \) と \( \sigma^2_{\mathcal{B}} \) にも依存するため、逆伝播ではこれらを通じた勾配も考慮する。具体的には、\( \frac{\partial L}{\partial x_i} \) を計算する際に、バッチ全体の統計量の影響を連鎖律で伝播する必要がある。これにより、各入力の勾配がバッチ内の他のサンプルにも間接的に依存する。
3 実装の詳細
3.1 学習時と推論時の挙動の違い
3.1.1 学習時の統計量利用
学習時には各ミニバッチの統計量 \( \mu_{\mathcal{B}}, \sigma^2_{\mathcal{B}} \) を直接用いて標準化を行う。これはバッチサイズに依存する挙動であり、分布の推定を動的に行う。
3.1.2 推論時の移動平均利用
推論時には、学習中に計算した全ミニバッチの統計量の移動平均(または全データの平均・分散)を固定値として使用する。これにより、単一サンプルでも安定した正規化が可能となる。
3.2 畳み込み層への適用
畳み込み層では、各チャネルごとに独立した \( \gamma, \beta \) を持ち、空間次元(高さ・幅)とバッチ次元をまとめて標準化する。具体的には、ミニバッチ内のすべての空間位置とサンプルを一括して統計量を計算する。これにより、チャネル間の表現力を保ちつつ正規化する。
3.3 バッチサイズの影響
バッチサイズが小さい場合、ミニバッチの統計量の推定誤差が大きくなり、学習が不安定になる。一般的にバッチサイズが 32 以上であれば良好に動作するが、それより小さい場合は他の正規化手法(グループ正規化など)が推奨される。
4 効果と利点
4.1 学習速度の向上
内部共変量シフトの低減により、各層の入力分布が安定し、勾配の流れが滑らかになる。その結果、より高い学習率が使用可能となり、収束が大幅に加速される。従来のネットワークと比較して、数分の一から十分の一のエポック数で同等の精度に達することが報告されている。
4.2 正則化効果
バッチ正規化は各ミニバッチの統計量に依存するため、訓練データにノイズのような変動を導入する。このランダム性が弱い正則化として機能し、ドロップアウトの必要性を低減する。ただし、過度に強い正則化効果は期待せず、あくまで補助的な役割である。
4.3 高い学習率の許容
標準化により活性化値が適切な範囲に保たれ、勾配爆発や消失が抑制される。これにより、従来は不可能だった高い学習率(例えば 0.1 以上)でも安定した学習が可能となる。学習率の調整が容易になり、ハイパーパラメータ探索の手間を軽減する。
5 バリエーションと類似手法
5.1 レイヤ正規化
レイヤ正規化は、バッチ次元ではなく特徴量次元(同一サンプル内の全ユニット)に対して統計量を計算する。これによりバッチサイズに依存せず、再帰型ネットワークやトランスフォーマーなどで広く用いられる。バッチ正規化と異なり、推論時に移動平均が不要である。
5.2 インスタンス正規化
インスタンス正規化は、各サンプル・各チャネルごとに独立して平均・分散を計算する。画像のスタイル変換などのタスクで、コントラストや明るさの正規化に効果的。バッチ内のサンプル間の情報を混ぜない点が特徴。
5.3 グループ正規化
グループ正規化は、チャネルを複数のグループに分割し、各グループ内で統計量を計算する。バッチサイズが小さい状況でも安定した性能を示す。例えば、グループ数 32 などがよく用いられる。バッチ正規化の代替として多くのタスクで利用可能。
5.4 その他の適応型正規化
スイッチ正規化(Switchable Normalization)は、バッチ・レイヤ・インスタンス正規化をデータに応じて動的に切り替える手法。また、バッチ正規化の後続改良として、バッチ再正規化(Batch Renormalization)は、ミニバッチ統計量と移動平均の差を緩和することで小バッチでも安定性を向上させる。
6 限界と注意点
6.1 小バッチサイズでの不安定性
バッチサイズが 8 や 4 など極端に小さい場合、ミニバッチの統計量が真の分布を適切に近似できず、学習が不安定になる。特に分散の推定誤差が大きく、勾配のノイズが増加する。そのため、GPUメモリが限られる状況ではグループ正規化などの代替手法が推奨される。
6.2 再帰型ネットワークへの適用困難
再帰型ネットワーク(RNN)では、時系列の長さに応じて時間ステップごとに異なる統計量を計算する必要がある。バッチ正規化をRNNに適用すると、時間方向の依存関係が統計量に影響し、学習が不安定になる。レイヤ正規化や重み正規化のほうが適している。
6.3 メモリ消費の増加
バッチ正規化は、順伝播時に各層のミニバッチ統計量を保持する必要があるため、追加のメモリを消費する。特に大規模ネットワークでは、活性化値の保存に加えて統計量の保存がメモリ制約となる場合がある。ただし、現代のフレームワークでは効率的に実装されており、実用上の問題は限定的である。