バッチ正規化とは?深層学習の学習を安定させる技術

バッチ正規化とは?深層学習の学習を安定させる技術

AIを知りたい

ニューラルネットワークのコードで「BatchNorm」というのをよく見るのですが、何をしているんですか?

AIエンジニア

バッチ正規化(Batch Normalization)は各層の入力を正規化するテクニックです。ミニバッチごとに平均0、分散1に標準化します。これにより学習が安定・高速化し、深いネットワークでも効率的に学習できるようになります。2015年の提案以降、ほぼ全てのCNNで使われています。

AIを知りたい

なぜ正規化すると学習が安定するのですか?

AIエンジニア

深いネットワークでは、ある層のパラメータが更新されると次の層の入力の分布が変わります。これを内部共変量シフト(Internal Covariate Shift)と呼びます。各層が常に変化する入力に適応し続けなければならないので学習が不安定になります。バッチ正規化は各層の入力分布を安定させることでこの問題を緩和します。

バッチ正規化(Batch Normalization, BatchNorm)とは、ニューラルネットワークの各層の入力をミニバッチ単位で正規化する手法です。

2015年にSergey IoffeとChristian Szegedyが提案しました。学習の高速化、高い学習率の使用、初期値への依存度低減、正則化効果など多くのメリットがあり、現代のディープラーニングの標準テクニックです。

バッチ正規化の計算手順

AIを知りたい

具体的にどんな計算をしているんですか?

AIエンジニア

4つのステップです。1)ミニバッチの平均μを計算。2)ミニバッチの分散σ²を計算。3)平均0、分散1に正規化(x̂ = (x-μ)/√(σ²+ε))。4)学習可能なパラメータγとβでスケール・シフト(y = γx̂ + β)。最後のステップにより、モデルが正規化の効果を調整できます。

AIを知りたい

γとβは何のためにあるのですか?

AIエンジニア

正規化だけだと表現力が制限される可能性があるので、学習可能なパラメータでスケールとシフトを調整します。γ=σ、β=μに学習されれば元の分布に戻せるので、正規化が害になる場合はモデルが自動的に無効化できる仕組みです。

バッチ正規化のメリット

AIを知りたい

バッチ正規化のメリットをまとめて教えてください。

AIエンジニア

主なメリットは4つです。学習率を大きくできるので学習が速くなります。初期値に対するロバスト性が向上し、重みの初期化への依存が減ります。正則化効果があり、ミニバッチのランダム性がDropoutに似た効果を生みます。そして勾配消失/爆発を緩和して深いネットワークの学習を可能にします。

AIを知りたい

デメリットや注意点はありますか?

AIエンジニア

バッチサイズが小さいと不安定になります。少数のサンプルで平均・分散を推定するので統計量がブレます。また推論時は学習時に記録した移動平均・分散を使うため、学習と推論で挙動が異なる点に注意が必要です。RNNには不向きで、代わりにLayer Normalizationが使われます。

正規化手法 正規化の単位 適する場面
Batch Normalization バッチ方向 CNN(バッチサイズ大)
Layer Normalization 特徴方向 RNN、Transformer
Instance Normalization 各サンプル・チャネル スタイル変換
Group Normalization チャネルグループ バッチサイズ小

まとめ

バッチ正規化は深層学習の学習を安定・高速化する必須テクニックです。各層の入力を正規化することで、高い学習率の使用、勾配消失/爆発の緩和、正則化効果を実現します。CNNではBatchNorm、TransformerではLayerNormというように、タスクに応じた正規化手法を選択することが重要です。

関連記事