バッチ正規化は、ディープラーニングにおいて各層の入力をミニバッチごとに平均0、分散1に正規化する技術です。内部共変量シフトを抑えることで、学習速度の劇的な向上や初期値への依存性低減、勾配消失の防止といったメリットをもたらします。CNNをはじめとする多くのニューラルネットワークモデルで標準的に採用されています。
バッチ正規化とは
バッチ正規化とは、ディープラーニングのモデルにおいて、ニューラルネットワークの各層の入力をミニバッチごとに平均0、分散1に正規化する技術です。これにより、学習の高速化や初期値への依存低減、高い安定性を実現できます。
詳しく解説
ディープラーニングの深層ネットワークでは、学習が進むにつれて前方の層のパラメータが変わることで、後方の層への入力分布が大きく変化する現象(内部共変量シフト)が発生し、学習が不安定になる課題がありました。バッチ正規化は、各レイヤーの活性化関数の直前または直後に、データを平均が0、分散が1になるようにスケーリングとシフトを行い、これを解決します。この処理により勾配消失や勾配爆発が抑制され、より高い学習率を設定することが可能になります。また、パラメータの初期値に対する依存性も低下します。
具体例・使われ方
畳み込みニューラルネットワークを用いた画像認識モデルの学習において広く利用されています。例えば、数万枚の画像を学習させる際、32枚や64枚といった「ミニバッチ」単位でデータを入力し、その都度バッチ正規化を適用することで、モデル全体の学習速度が数倍から十数倍に向上します。
似た用語との違い
バッチ正規化と混同されやすい技術に「レイヤー正規化」があります。バッチ正規化が同一バッチ内の異なるデータ間で正規化を行うのに対し、レイヤー正規化は単一データ内の異なる特徴量間で正規化を行います。バッチ正規化はミニバッチのサイズに依存するため、バッチサイズが極端に小さい場合や、自然言語処理のような系列長が変化するデータにはレイヤー正規化の方が適しています。
注意点
ミニバッチのサイズが1や2などの極端に小さい場合には、統計的な平均や分散の計算が不安定になり、学習の精度が著しく低下するという制限があります。また、学習時と推論時で処理が異なる点にも注意が必要です。推論時にはミニバッチが存在しないため、学習時における平均と分散の移動平均を固定値として使用します。さらに、正則化としての効果があるため過学習を抑制しますが、完全にドロップアウトなどの代替になるわけではありません。