用語集

バッチ・ノーマライゼーション

バッチ正規化でディープラーニングのパフォーマンスを向上!このテクニックがAIモデルの学習速度、安定性、精度をどのように向上させるかを学びましょう。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

バッチ正規化は、学習プロセスを安定させ、必要な学習エポック数を大幅に削減するために、ディープ・ニューラル・ネットワーク(DNN)の学習で使用されるテクニックである。Sergey IoffeとChristian Szegedyが2015年の論文「Batch Normalization」で紹介した:Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift(バッチ正規化:内部共変量シフトの低減によるディープネットワーク学習の高速化)」においてSergey IoffeとChristian Szegedyによって紹介され、ネットワークの深い層への入力分布が学習中に変化し、収束が遅くなるという問題に対処する。各レイヤーへの入力を正規化することで、バッチ正規化はより安定した分布を維持し、より高速で信頼性の高いトレーニングにつながります。

バッチ正規化の仕組み

トレーニング中、バッチ正規化は各ミニバッチのレイヤーへの入力を標準化する。これはデータの平均が0、標準偏差が1になるように調整することを意味する。具体的には、ミニバッチ内の各特徴について、平均と分散を計算し、これらを使って特徴を正規化する。しかし、単に正規化するだけでは、レイヤーの表現力が制限される可能性がある。これに対抗するため、バッチ正規化では、各特徴に対して学習可能な2つのパラメータを導入する:スケールパラメータ(ガンマ)とシフトパラメータ(ベータ)である。これらのパラメータにより、ネットワークは正規化された入力の最適なスケールと平均を学習することができ、正規化が有益かどうか、またどの程度正規化するのが有益かを、効果的にネットワークに決定させることができる。推論中、バッチ正規化は学習中に収集された統計量(平均と分散の移動平均など)を使用し、決定論的な出力を保証します。

バッチ正規化の利点

バッチ正規化を適用することで、ディープラーニングモデルのトレーニングにいくつかの重要な利点がもたらされる:

  • トレーニングの高速化:より高い学習率を使用できるため、モデル学習時の収束プロセスが大幅にスピードアップします。
  • 学習を安定させる:内部の共変量シフト(レイヤーの入力分布の変化)を減らすことで、学習プロセスをより安定させ、予測しやすくする。これは特に非常に深いネットワークで役立つ。
  • 正則化効果:バッチ正規化はわずかな正則化効果を追加し、ドロップアウトのような他の正則化テクニックの必要性を減らすことがあります。ミニバッチ統計によって導入されたノイズは、正則化の役割を果たします。
  • 初期化の影響を受けにくい:バッチ正規化を使ったネットワークは、初期重みの影響を受けにくく、初期化プロセスが簡単になります。

応用と実例

バッチ正規化は、特にCNN(Convolutional Neural Network:畳み込みニューラルネットワーク)を含むコンピュータ・ビジョンのタスクで広く使われている。

  1. 画像分類: ResNetのようなアーキテクチャは、ImageNetのようなベンチマークで最先端の精度を達成しているが、非常に深いネットワークの学習を可能にするために、畳み込み層の後のバッチ正規化に大きく依存している。Ultralytics モデルは、BNがロバストなパフォーマンスに貢献する画像分類タスクをサポートします。
  2. 物体の検出:以下のようなモデル Ultralytics YOLOなどのモデルは、そのバックボーンとネック構造にバッチ正規化を組み込んでいます。これにより、学習が安定し、モデルの物体を正確かつ迅速に検出する能力が向上します。これは、自律走行車やリアルタイムの監視などのアプリケーションにとって非常に重要です。

考察と代替案

非常に効果的ではあるが、バッチ正規化の性能はバッチサイズに依存する可能性があり、バッチサイズが非常に小さいとバッチ統計量の推定が不正確になる可能性がある。また、バッチ正規化の動作は訓練フェーズと推論フェーズで異なるため、実行統計量の取り扱いに注意が必要である。レイヤー正規化インスタンス正規化グループ正規化などの代替手段は、これらの制限のいくつかに対処しており、特にリカレントニューラルネットワーク(RNN)やバッチサイズが小さい場合など、さまざまな文脈で使用されている。以下のような一般的なフレームワークで実装されています。 PyTorchTensorFlow.

全体として、バッチ正規化は、現代のディープラーニングモデルの学習ダイナミクスと性能に大きな影響を与える、基本的で広く採用されているテクニックである。

すべて読む