Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Batch Normalization

バッチ正規化は、ミニバッチ内の各チャネルを標準化し、学習可能なパラメーターで再スケーリングします。数式、推論時の挙動、限界を解説します。

バッチ正規化(BatchNorm)は、入力の各チャネルを現在のミニバッチの平均と分散で正規化し、その結果を学習可能な2つのパラメーターで再スケーリングするニューラルネットワークの層です。Sergey Ioffe氏とChristian Szegedy氏が2015年に発表し、これにより同氏らのInception 画像分類器は、14分の1の学習ステップ数で同じ精度を達成しました。BatchNormはより高い学習率を可能にし、重み初期化への学習の感度を下げ、ResNetなどの畳み込みニューラルネットワーク(CNN)における標準的な構成要素となりました。

バッチ正規化の仕組み#

畳み込み層では、BatchNormはチャネルごとに平均μと分散σ²を1つずつ計算し、バッチ内のすべての画像とすべての空間位置を対象に集約します。各活性化値xには、次の2つの処理を適用します。

  1. 正規化: x̂ = (x − μ) / √(σ² + ε)。PyTorchではデフォルトで1e-5となる小さなεにより、ゼロ除算を防ぎます。
  2. スケーリングとシフト: y = γ·x̂ + β。γとβはチャネルごとに学習されます。これにより、次の層に適した平均とばらつきをネットワークが復元でき、正規化を完全に取り消すこともできます。

BatchNormは通常、畳み込み層と活性化関数の間に配置されます。βがチャネルごとのオフセットをすでに加えるため、前段の畳み込み層のバイアスは冗長であり、通常は無効にします。

学習と推論#

学習中は、各順伝播でバッチ統計量の指数移動平均として、移動平均と移動分散も更新されます。PyTorchのBatchNorm2dは、デフォルトでは各新規バッチに向かって10%移動します(momentum=0.1)。推論時には、代わりにこれらの移動平均を使って層を正規化するため、1枚の画像の予測が、同じバッチに含まれるほかの画像に左右されなくなります。model.train()とmodel.eval()で、これら2つの動作を切り替えます。

import torch

torch.manual_seed(0)
bn = torch.nn.BatchNorm2d(num_features=3)

# A batch of 8 three-channel feature maps with mean 5 and standard deviation 2
x = 5 + 2 * torch.randn(8, 3, 16, 16)

# Training mode normalizes with this batch's per-channel mean and variance
out = bn(x)
print(f"train mode: output mean {out.mean():.3f}, std {out.std():.3f}")

# The same call nudges the running averages 10% of the way toward the batch statistics
print(f"running mean {bn.running_mean[0]:.3f}, running var {bn.running_var[0]:.3f}")

# Eval mode normalizes with the running averages instead of the batch statistics
bn.eval()
out = bn(x)
print(f"eval mode:  output mean {out.mean():.3f}, std {out.std():.3f}")

学習モードでは、入力の平均が5であっても、出力の平均は0.000、標準偏差は1.000になります。1バッチ処理した後も、移動平均は0から0.496へ、移動分散は1から1.294へ変化しただけなので、評価モードの出力平均は3.920になります。移動平均が収束するには数十バッチが必要です。誤ったモードで評価したモデルや、統計量が安定する前に評価したモデルのスコアは、本来の精度を大きく下回ります。

推論時のBatchNormはチャネルごとの固定線形変換であるため、前段の畳み込み層に統合できます。畳み込みの重みにγ/√(σ² + ε)を乗算し、バイアスをβ − γμ/√(σ² + ε)にします。YOLO26の標準的な畳み込みブロックは、バイアスなしの畳み込み層にBatchNormとSiLU活性化関数を続けた構成です。Ultralyticsでは、予測とエクスポートの前にBatchNorm層をそれぞれ畳み込み層へ統合するため、同じ出力を保ちながら層を取り除けます。

バッチ正規化が効果を発揮する理由#

原著論文では、BatchNormの効果を内部共変量シフトの軽減、つまり前段の層が更新される際に各層の入力分布が変化する現象の軽減に帰していました。その後、BatchNorm層の後にランダムな分布シフトを注入した実験では、学習への影響はほとんど見られず、効果の原因はより滑らかな損失曲面と予測しやすい勾配にあるとされました。これにより、オプティマイザーはより大きく安定したステップを取れます。活性化前の値を平均0、分散1付近に保つことで、飽和する活性化関数が平坦な領域に入るのも防ぎ、勾配消失の抑制にも役立ちます。

各サンプルはランダムに選ばれたバッチの統計量で正規化されるため、BatchNormはノイズも加えます。このノイズは弱い正則化として働き、原著論文では場合によってドロップアウトが不要になることも報告されました。

制限事項#

  • 小さなバッチ: 各デバイスに保持する画像が少ないと、バッチ統計量のノイズが大きくなります。GPUあたり2枚の画像を使った場合、画像ごとにチャネル群全体の統計量を計算するグループ正規化は、ResNet-50でBatchNormよりImageNetのエラー率を10.6%低減しました。
  • マルチGPU学習: 層をSyncBatchNormに変換しない限り、各GPUはバッチのうち自身に割り当てられた部分で正規化します。SyncBatchNormは通信コストを伴う代わりに、デバイス間で統計量を集約します。
  • 系列モデル: 可変長系列とバッチ依存の統計量は相性がよくないため、Transformerでは代わりにレイヤー正規化を使います。
  • データ正規化: 前処理時に、たとえばピクセル値を255で割るなどして、生の入力を一度だけ再スケーリングします。BatchNormは、すべての層および学習ステップで中間活性化値を正規化します。
  • レイヤー正規化: 各サンプルについて、そのサンプル自身の特徴量にわたって正規化するため、学習時と推論時で同じ動作をし、バッチサイズにも依存しません。平均の減算を省いたシンプルな派生手法であるRMSNormは、大規模言語モデルで一般的に使われます。
  • グループ正規化: 各画像のチャネルを複数のグループに分割し、グループごとに正規化します。小さなバッチで学習する物体検出モデルやセグメンテーションモデルに適しています。
  • インスタンス正規化: 画像ごとに各チャネルを個別に正規化し、画像単位のコントラストを取り除きます。学習時とテスト時の両方でBatchNormをインスタンス正規化に置き換えたところ、高速なニューラルスタイル変換の品質が大幅に向上しました。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

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

機械学習の未来に向けた歩みを始めましょう