YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

バッチ正規化

バッチ正規化がディープラーニングモデルをどのように安定させるかを探ります。Ultralytics YOLO26がBatchNormを使用して学習を加速し、AI精度を向上させる方法を学びましょう。

バッチ正規化は、BatchNormと頻繁に呼ばれ、深層学習(DL)において人工ニューラルネットワークの訓練を安定させ、加速するために使用される手法です。これは、前の層のパラメータが更新されるにつれて層への入力の分布が連続的に変化する「内部共変量シフト」の問題を解決するために導入されました。BatchNormは、各ミニバッチに対して層への入力を標準化します。層の入力を平均ゼロ、標準偏差1に正規化し、その後学習可能なパラメータでスケーリングおよびシフトすることにより、この方法はネットワークがより高い学習率を使用し、初期化に対する感度を低減することを可能にします。

バッチ正規化の仕組み

標準的な畳み込みニューラルネットワーク(CNN)では、データは各層が変換を実行する層を流れます。正規化なしでは、出力値のスケールが大きく変動し、最適化アルゴリズムが最適な重みを見つけるのが困難になります。バッチ正規化は通常、活性化関数(ReLUやSiLUなど)の直前に適用されます。

トレーニング中、このプロセスには2つの主要なステップが含まれます。

  1. 正規化:この層は、現在のバッチサイズ内のアクティベーションの平均と分散を計算します。その後、バッチ平均を減算し、バッチ標準偏差で割ります。
  2. スケーリングとシフト: ネットワークが複雑な関数を依然として表現できるようにするため、2つの学習可能なパラメータ(ガンマとベータ)が導入されます。これらにより、最適なデータ分布が標準正規分布でない場合でも、ネットワークは正規化を元に戻すことができます。

このメカニズムは正則化の一形態として機能し、トレーニング中に活性化に少量のノイズを追加することで、ドロップアウト層のような他の手法への必要性をわずかに減らします。

AIトレーニングにおける主な利点

ResNetや最新の物体検出器のようなアーキテクチャにバッチ正規化を統合することは、いくつかの明確な利点をもたらします。

  • 収束の高速化: 正規化により勾配が小さくなりすぎたり大きくなりすぎたりするのを防ぐため、モデルは著しく高速にトレーニングされ、勾配消失問題を効果的に解決します。
  • 安定性: これにより、ネットワークは初期重みの特定の選択やハイパーパラメータチューニングに対する感度が低くなり、モデルトレーニングプロセスがより堅牢になります。
  • 汎化性能の向上: 最適化ランドスケープを平滑化することで、BatchNormはモデルが未知のテストデータに対してより良く汎化するのを助けます。

実際のアプリケーション

バッチ正規化は、現代のほぼすべてのコンピュータービジョン(CV)システムにおいて不可欠な要素です。

  1. 自動運転: 自動運転車システムでは、Ultralytics YOLO26のようなモデルがビデオフレームを処理し、歩行者、車両、標識をdetectします。BatchNormは、照明強度や気象条件の変化に関わらず、object detection層が安定した状態を保ち、高い平均平均精度 (mAP)を維持することを保証します。
  2. 医療画像: 医療画像における腫瘍detectを行う際、スキャンデータは異なるMRIやCT装置間で大きく異なることがあります。BatchNormはこれらの特徴を内部的に正規化するのに役立ち、AIがピクセル強度の違いではなく構造的異常に焦点を当てることを可能にし、ヘルスケアAIソリューションにおける診断精度を向上させます。

バッチ正規化 vs. データ正規化

バッチ正規化を標準的なデータ正規化と区別することは、その理解を深める上で役立ちます。

  • データ正規化は、トレーニング開始前に生の入力データセットに適用される前処理ステップです(例:画像のサイズ変更やピクセル値を0-1にスケーリング)。この段階では、Albumentationsのようなツールがよく使用されます。
  • バッチ正規化は、学習プロセス中にニューラルネットワーク層の内部で行われます。データが流れるにつれて、ネットワークの内部値を動的に調整します。

実施例

PyTorchのような深層学習フレームワークには、バッチ正規化の最適化された実装が含まれています。Ultralytics YOLOアーキテクチャでは、これらの層は畳み込みブロックに自動的に統合されます。

以下の通りである。 Python このコードスニペットは、モデルを検査してどこで...かを確認する方法を示しています。 BatchNorm2d 層はアーキテクチャ内に配置されています。

from ultralytics import YOLO

# Load the YOLO26n model (nano version)
model = YOLO("yolo26n.pt")

# Print the model structure to view layers
# You will see 'BatchNorm2d' listed after 'Conv2d' layers
print(model.model)

これらのレイヤーがどのように相互作用するかを理解することは、開発者がUltralytics Platformを使用してカスタムデータセットでモデルをファインチューニングする際に役立ち、限られたデータでもトレーニングが安定することを保証します。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。