YOLO Vision 2025にご期待ください!
2025年9月25日
10:00 — 18:00(英国夏時間)
ハイブリッドイベント
Yolo Vision 2024
用語集

バッチ正規化

バッチ正規化で深層学習のパフォーマンスを向上させましょう!この手法がAIモデルの学習速度、安定性、精度をどのように高めるかを学びます。

バッチ正規化(BatchNormと略されることが多い)は、深層ニューラルネットワークで使用される技術であり、学習プロセスを安定化および加速するために使用されます。Sergey IoffeとChristian Szegedyが2015年の論文で発表したもので、データの各ミニバッチについて、各レイヤーへの入力を正規化することで機能します。これにより、「内部共変量シフト」として知られる現象、つまり、前のレイヤーのパラメータが変化するにつれて、各レイヤーの入力の分布が学習中に変化する現象が軽減されます。入力のより安定した分布を維持することにより、バッチ正規化により、深層ネットワークのより高速で安定した学習が可能になります。

バッチ正規化の仕組み

モデルトレーニングプロセス中、データはバッチと呼ばれる小さなグループでネットワークを通過します。通常、畳み込みレイヤーまたは全結合レイヤーの後、活性化関数の前に挿入されるバッチ正規化レイヤーは、各バッチに対して主に次の2つのステップを実行します。

  1. 正規化: 現在のバッチ内のアクティベーションの平均と分散を計算します。次に、これらの統計を使用してアクティベーションを正規化し、平均をゼロ、分散を1にします。このステップにより、次のレイヤーへの入力が一貫したスケールになることが保証されます。
  2. スケーリングとシフト: アクティベーションを正規化すると、レイヤーの表現力が制限される可能性があります。これに対抗するために、レイヤーは2つの学習可能なパラメーター(スケーリングファクター(ガンマ)とシフトファクター(ベータ))を導入します。これらのパラメーターにより、ネットワークは次のレイヤーへの入力に最適なスケールと平均を学習し、ネットワークが最適であると判断した場合に正規化を効果的に元に戻すことができます。

推論中、モデルはバッチではなく、単一のサンプルを処理します。したがって、バッチ固有の平均と分散は利用できません。代わりに、モデルはトレーニングデータセット全体から計算された集約平均と分散を使用します。これらはトレーニング段階で計算および保存されます。これにより、モデルの出力が確定的で一貫性のあるものになります。

バッチ正規化の利点

深層学習モデルにバッチ正規化を実装すると、いくつかの重要な利点があります。

  • より高速なトレーニング: BatchNormは、入力分布を安定化することにより、はるかに高い学習率を使用できるようになり、モデルの収束が大幅に高速化されます。
  • 内部共変量シフトの軽減:これは、Batch Normalizationが解決するために設計された主要な問題です。初期のレイヤーのパラメータの変化が、後続のレイヤーへの入力の分布をシフトさせ、トレーニングをより困難にするという問題を軽減します。
  • 正則化効果: バッチ正規化は、バッチベースの統計により、各レイヤーのアクティベーションにわずかなノイズを加えます。このノイズは一種の正則化として機能し、過学習を防ぎ、ドロップアウトなどの他の手法の必要性を減らす可能性があります。
  • 初期化への依存を軽減:ネットワークの初期重みに対する感度を低下させ、トレーニングプロセスをより堅牢にします。

実際のアプリケーション

バッチ正規化は、コンピュータビジョンモデル、特にUltralytics YOLOのような最先端アーキテクチャにおいて、ほぼ遍在的なコンポーネントです。

  • 画像分類: ImageNetのような大規模なデータセットでトレーニングされたモデルでは、バッチ正規化は、勾配消失のような問題を回避することにより、ResNetのような非常に深いネットワークをトレーニングするために重要です。 これにより、写真内のオブジェクトの分類などのタスクで、より高い精度が可能になります。
  • 医療画像解析: 腫瘍検出またはMRIまたはCTスキャンからの臓器のセグメント化のためにモデルをトレーニングする場合、バッチ正規化により、異なるマシンおよび患者間の画像強度の変動がトレーニングに悪影響を与えないようにします。これにより、医療におけるAIのためのより信頼性が高く堅牢な診断ツールが実現します。

関連する概念と区別

バッチ正規化を他の関連概念と区別することが重要です。

  • データ正規化: 一般的なデータ正規化は、トレーニング開始に入力データに適用される前処理ステップです。対照的に、バッチ正規化は、トレーニング中にネットワーク内部で発生する動的なプロセスであり、レイヤー間の活性化を正規化します。
  • その他の正規化レイヤー: Layer NormalizationInstance NormalizationGroup Normalizationのような他の手法も存在します。主な違いは、正規化の範囲です。BatchNormはバッチ次元全体で正規化しますが、Layer Normalizationは単一のトレーニング例の特徴全体で正規化するため、バッチサイズに依存しません。これらの代替手段は、NLPのようなドメインや、小さなバッチサイズが必要な場合によく使用されます。

考慮事項と実装

バッチ正規化の重要な考慮事項は、トレーニング中のミニバッチサイズへの依存です。バッチ統計が母集団統計のノイズの多い推定値になるため、バッチサイズが小さすぎる(たとえば、1または2)場合、パフォーマンスが低下する可能性があります。標準的な深層学習フレームワーク(例: PyTorch (torch.nn.BatchNorm2d)と TensorFlow (tf.keras.layers.BatchNormalization)は、堅牢な実装を提供します。代替手段があるにもかかわらず、バッチ正規化は、多くの最新の深層学習モデルを効果的にトレーニングするための基本的なテクニックであり続けています。次のようなプラットフォームを使用して、このようなテクニックを組み込んだモデルを管理およびトレーニングできます。 Ultralytics HUB.

Ultralyticsコミュニティに参加しませんか?

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加
クリップボードにコピーしました