1 背景と概要
1.1 内部共変量シフトの問題
深層学習において、多層のニューラルネットワークを学習する際、各層の入力分布は前の層のパラメータ更新に伴って変化する。この現象を内部共変量シフトと呼ぶ。内部共変量シフトが生じると、各層は変化する入力分布に常に適応する必要が生じ、学習が不安定になり、収束が遅くなる原因となる。また、勾配消失や発散のリスクも高まる。従来は学習率を低く設定したり、注意深い初期化を行うことで対処していたが、根本的な解決には至らなかった。
1.2 Batch Normalizationの提案と影響
2015年、GoogleのSergey IoffeとChristian Szegedyは、内部共変量シフトを抑制する手法としてBatch Normalization(バッチ正規化)を提案した。各ミニバッチごとに層の入力を正規化し、さらに学習可能なスケール・シフトパラメータを導入することで、正規化の効果を維持しつつ表現力を保持する。この提案は、深層学習コミュニティに大きな影響を与え、特に畳み込みニューラルネットワークにおいて標準的な要素となった。Batch Normalizationにより、より高い学習率の使用、初期化への依存度低減、ドロップアウトの必要性低減などの利点がもたらされた。
2 基本原理
2.1 正規化の計算手順
Batch Normalizationは、ミニバッチ内の各サンプルについて、各特徴チャンネルごとに独立に正規化を行う。具体的には、ミニバッチ全体の平均μと分散σ²を計算し、各入力xに対して(x - μ) / √(σ² + ε)を計算する。ここでεはゼロ除算を防ぐ小さな定数である。この正規化により、各層の入力は平均0、分散1に標準化される。
2.2 スケール・シフトパラメータ
正規化により表現力が低下するのを防ぐため、正規化後の値に対して学習可能なスケールパラメータγとシフトパラメータβを導入する。最終的な出力はγ * x̂ + βとなる。これにより、ネットワークが正規化の強度やオフセットをデータに応じて調整できるようになる。γとβは誤差逆伝播法により学習される。
2.3 訓練時と推論時の動作の違い
訓練時は各ミニバッチの統計量(平均、分散)を用いて正規化を行うが、推論時は訓練データ全体から得られた移動平均(ランニング平均)を使用する。これは、推論時には単一の入力に対して正規化を行う必要があり、バッチ統計量が利用できないためである。多くのフレームワークでは、訓練中にこれらの移動平均を自動的に計算・保持する。
3 アルゴリズム詳細
3.1 ミニバッチ統計量の算出
ミニバッチのサイズをm、入力テンソルをx₁, x₂, ..., xₘとする。まず、各特徴次元(チャンネル)ごとに平均μ = (1/m) Σᵢ xᵢ、分散σ² = (1/m) Σᵢ (xᵢ - μ)²を計算する。これらの統計量はミニバッチ内の全サンプルにわたって算出される。
3.2 正規化と線形変換
算出された平均μと分散σ²を用いて、各入力xᵢをx̂ᵢ = (xᵢ - μ) / √(σ² + ε)に正規化する。次に、学習可能なパラメータγ, βを用いてyᵢ = γ x̂ᵢ + βを出力する。この変換はすべて要素ごとに(ブロードキャストにより)適用される。
3.3 逆伝播における勾配計算
逆伝播時には、出力に対する損失Lの勾配∂L/∂yが与えられたとき、パラメータγ, βの勾配は∂L/∂γ = Σᵢ (∂L/∂yᵢ · x̂ᵢ)、∂L/∂β = Σᵢ ∂L/∂yᵢと計算される。また、入力xに対する勾配は、正規化の計算を考慮して∂L/∂xᵢ = (1/m) γ (∂L/∂yᵢ - (1/m) Σⱼ ∂L/∂yⱼ - (1/m) x̂ᵢ Σⱼ (∂L/∂yⱼ · x̂ⱼ)) / √(σ²+ε)のように導出される。この計算は、ミニバッチ全体の勾配を考慮するため、実装上は自動微分に委ねられることが多い。
4 実装と応用
4.1 畳み込み層への適用
畳み込みニューラルネットワークでは、各チャンネルごとに正規化を行う。具体的には、ミニバッチ内のすべての空間位置(高さ、幅)および全サンプルにわたってチャンネル単位の平均・分散を計算する。このため、出力特徴マップの形状は(batch, channel, height, width)であり、正規化はチャンネル軸に対して行われる。畳み込み層の直後にBatch Normalizationを挿入するのが一般的である。
4.2 全結合層への適用
全結合層では、各ニューロン(出力ユニット)ごとに正規化を行う。ミニバッチ内の全サンプルにわたって各ユニットの平均・分散を計算し、正規化する。全結合層の出力活性化関数の前に適用されることが多い。
4.3 フレームワーク(PyTorch, TensorFlow)での利用例
主要な深層学習フレームワークでは、Batch Normalizationが標準的なレイヤーとして実装されている。PyTorchではtorch.nn.BatchNorm1d(1次元データ)、torch.nn.BatchNorm2d(2次元画像データ)、torch.nn.BatchNorm3d(3次元ボリュームデータ)が用意されている。TensorFlowではtf.keras.layers.BatchNormalizationで同様の機能を提供する。使用時には訓練モードと推論モードを適切に切り替える必要があるが、フレームワークが自動的に管理する。
5 派生手法とバリエーション
5.1 Layer Normalization
Layer Normalizationは、ミニバッチではなく、単一サンプル内の全特徴(層の全ユニット)にわたって正規化を行う手法である。RNNやTransformerなど、バッチサイズが小さい場合や系列長が可変の場合に有効。Batch Normalizationとは異なり、推論時も訓練時と同じ統計量を用いる。
5.2 Instance Normalization
Instance Normalizationは、各サンプル・各チャンネルごとに独立に正規化を行う(空間次元のみで統計量を計算)。画像スタイル変換などのタスクで広く用いられ、コントラストの正規化に寄与する。チャンネル間の依存関係を排除するため、Batch Normalizationとは異なる振る舞いを示す。
5.3 Group Normalization
Group Normalizationは、チャンネルを複数のグループに分割し、各グループ内で正規化を行う手法である。バッチサイズが極端に小さい場合(例:1枚の画像)でも安定して動作する。バッチサイズに依存しないという利点があり、物体検出・セグメンテーションなどでよく使われる。
5.4 その他の正規化手法との比較
これら以外にも、Batch NormalizationのバリエーションとしてBatch Renormalization(ミニバッチ統計量とランニング統計量の補間)、Switchable Normalization(複数の正規化手法を学習可能な重みで切り替える)などが提案されている。各手法は、タスクやアーキテクチャ、バッチサイズに応じて適切に選択される。Batch Normalizationはバッチサイズが十分大きい場合に最も効果的であるが、バッチサイズが小さいと推定精度が低下するため、他の正規化手法が好まれる場合がある。
6 利点と課題
6.1 学習速度の向上と過学習抑制
Batch Normalizationにより、内部共変量シフトが軽減されるため、より高い学習率を設定できるようになり、収束が大幅に加速される。また、正規化が一種のノイズ(ミニバッチごとの統計量の揺らぎ)として働くため、正則化効果が生まれ、過学習が抑制される。その結果、ドロップアウトなどの他の正則化手法の必要性が低減される。
6.2 ハイパーパラメータへの頑健性
Batch Normalizationは、初期化や学習率などのハイパーパラメータに対する感度を下げる効果がある。これにより、モデル開発者は過度に注意深い調整を必要とせず、より安定した学習を実現できる。また、活性化関数の飽和領域を正規化により回避できるため、勾配消失の問題も緩和される。
6.3 バッチサイズ依存性と注意点
Batch Normalizationの性能はミニバッチサイズに強く依存する。バッチサイズが小さすぎると、ミニバッチ統計量の推定が不正確になり、学習が不安定になる。推論時の移動平均もバッチサイズの影響を受けるため、極端に小さいバッチ(例:1)では使用できない。また、訓練時と推論時の振る舞いが異なるため、モデル配備時に正しいモード切り替えが必要である。メモリ消費がやや増加する点も考慮すべきである。
7 参考文献と関連研究
- Ioffe, S., & Szegedy, C. (2015). Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. *ICML*.
- Ba, J. L., Kiros, J. R., & Hinton, G. E. (2016). Layer Normalization. *arXiv preprint arXiv:1607.06450*.
- Ulyanov, D., Vedaldi, A., & Lempitsky, V. (2016). Instance Normalization: The Missing Ingredient for Fast Stylization. *arXiv preprint arXiv:1607.08022*.
- Wu, Y., & He, K. (2018). Group Normalization. *ECCV*.
- Ioffe, S. (2017). Batch Renormalization: Towards Reducing Minibatch Dependence in Batch-Normalized Models. *NeurIPS*.
- Luo, P., Ren, J., & Peng, Z. (2018). Differentiable Learning-to-Normalize via Switchable Normalization. *ICLR*.