バッチ正規化でディープラーニングのパフォーマンスを向上!このテクニックがAIモデルの学習速度、安定性、精度をどのように向上させるかを学びましょう。
バッチ正規化は、学習プロセスを安定させ、ディープニューラルネットワークの学習を大幅に高速化するために、ディープラーニングで広く使用されているテクニックである。Sergey IoffeとChristian Szegedyが2015年の論文「Batch Normalization」で紹介した:Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift(バッチ正規化:内部共変量シフトの低減によるディープネットワーク学習の高速化)」で紹介され、内部共変量シフトとして知られる、ネットワークの深い層への入力の分布が学習中に変化する問題に対処する。ミニバッチごとに各層への入力を正規化することで、バッチ正規化は活性化値のより安定した分布を維持し、よりスムーズで高速な収束につながります。
トレーニング中、バッチ正規化は各ミニバッチのレイヤへの入力を標準化します。これは、ミニバッチ全体の活性化の平均と分散を計算し、これらの活性化を正規化します。重要なのは、このテクニックは、活性化チャンネルごとに学習可能な2つのパラメータ(スケール(ガンマ)パラメータとシフト(ベータ)パラメータ)を導入することである。これらのパラメータにより、ネットワークは正規化された入力の最適なスケールと平均を学習することができる。このプロセスは、活性を合理的な範囲に保つことで、消失勾配や 爆発勾配のような問題に対処するのに役立つ。推論中、平均と分散は、通常、学習中に推定された母集団の統計量を使用して固定されます。
ニューラルネットワークにバッチ正規化を適用すると、いくつかの重要な利点がある:
バッチ正規化は、特にコンピュータ・ビジョンにおいて、多くの最先端のディープラーニング・モデルの定番コンポーネントである。
バッチ正規化は広く使用されているが、関連する正規化技術がいくつか存在し、それぞれが異なるシナリオに適している:
バッチ正規化の重要な考慮点は、学習中のミニバッチサイズに依存することです。バッチサイズが小さすぎる場合(例えば、1や2)、バッチ統計量が母集団統計量のノイズの多い推定値になるため、性能が低下する可能性があります。さらに、訓練(バッチ統計量を使用)と推論(推定母集団統計量を使用)で動作が異なる。標準的なディープラーニングフレームワーク PyTorch (torch.nn.BatchNorm2d
そして TensorFlow (tf.keras.layers.BatchNormalization
)がロバストな実装を提供している。代替手段があるにもかかわらず、バッチ正規化は、多くの最新のディープラーニングモデルを効果的にトレーニングするための基本的なテクニックであり続けている。