Explore how [batch normalization](https://www.ultralytics.com/glossary/batch-normalization) stabilizes training, prevents vanishing gradients, and boosts accuracy for models like [YOLO26](https://docs.ultralytics.com/models/yolo26/).
バッチ正規化(BatchNorm)は、深層学習(DL)において人工ニューラルネットワークの学習を安定化・高速化するために用いられる手法である。内部共変量シフトの問題——前層のパラメータ更新に伴い層への入力分布が継続的に変化する現象——を解決するために導入されたバッチ正規化は、各ミニバッチごとに層への入力を正規化する。 層への入力データを平均0・標準偏差1に正規化し、学習可能なパラメータを用いてスケーリングとシフトを行うことで、この手法はネットワークがより高い学習率を使用できるようにし、初期化への依存性を低減します。
標準的な畳み込みニューラルネットワーク(CNN)では、データは各層で変換処理を行う層を通過します。正規化を行わない場合、出力値のスケールが大きく変動し、最適化アルゴリズムが最適な重みを発見することが困難になります。バッチ正規化は通常、活性化関数(ReLUやSiLUなど)の直前に適用されます。
トレーニング中のプロセスには、主に二つのステップが含まれます:
このメカニズムは正則化の一形態として機能し、学習中の活性化関数に微量のノイズを加えることで、 ドロップアウト層などの他の手法への依存度をやや低減します。
バッチ正規化をResNetや最新の物体検出器などのアーキテクチャに統合することで、 いくつかの明確な利点が得られる:
バッチ正規化は、ほぼすべての現代的な コンピュータビジョン(CV)システムにおいて基本技術となっている。
バッチ正規化と標準的なデータ正規化を区別することは有益である。
PyTorchのような深層学習フレームワーク 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 を使用してカスタムデータセット上でモデルを微調整する際に役立ち、データが限られている場合でもトレーニングが安定して継続されることを保証します。