Normalization
正規化(ノーマライゼーション)がモデルのトレーニングと精度をどのように向上させるかを探求します。Min-Maxスケーリング、Zスコア標準化、およびUltralytics YOLO26プロジェクトにおけるその役割について学びましょう。
正規化は、data preprocessingにおける基本的な手法であり、数値属性を標準的な範囲にスケーリングし直す処理を含みます。machine learning (ML)の文脈では、データセットには年齢の範囲(0〜100)と所得のレベル(0〜100,000)のように、スケールが異なる特徴量が含まれていることがよくあります。これらをそのまま放置すると、optimization algorithmがより大きな値に偏る原因となり、収束の遅延やパフォーマンスの低下を招きます。データを正規化することで、エンジニアはすべての特徴量が最終結果に対して均等に寄与することを保証し、neural networksがより効率的に学習できるようにします。
一般的な正規化手法#
データを変換するための標準的な手法にはいくつかの種類があり、それぞれ異なる分布やアルゴリズムの要件に適しています。
- Min-Max Scaling: これは最も直感的な正規化の形式です。データを固定された範囲(通常は [0, 1])にスケーリングします。この変換は、最小値を引き、範囲(最大値から最小値を引いたもの)で割ることで実行されます。ピクセル強度が0から255の間に収まることが分かっているimage processingで広く使用されています。
- Z-Score Standardization: 正規化と混同されて使用されることが多いですが、標準化は特にデータの平均を0、標準偏差を1にする変換を行います。これは、データがGaussian distributionに従う場合に特に有用であり、正規分布データを前提とするSupport Vector Machines (SVM)などのアルゴリズムにとって不可欠です。
- Log Scaling: 極端な外れ値を含むデータや、べき乗則に従うデータに対しては、対数変換を適用することで値の範囲を圧縮できます。これにより、巨大な値のスパイクによって歪められることなく、inference engineが効果的に解釈できるよう、分布をより扱いやすくすることができます。
実社会での応用#
正規化は、さまざまな業界における高性能なAIシステムのパイプラインにおいて標準的なステップです。
-
Computer Vision (CV): object detectionやimage classificationなどのタスクでは、デジタル画像は0から255の範囲のピクセル値で構成されます。これらの大きな整数をそのままネットワークに入力すると、gradient descentが遅くなる可能性があります。標準的な前処理ステップでは、ピクセル値を255.0で割って [0, 1] の範囲に正規化します。このプラクティスにより、YOLO26のような高度なモデルに対する一貫した入力が確保され、Ultralytics Platform上での学習の安定性が向上します。
-
Medical Image Analysis: AI in healthcareで使用されるような医療スキャンは、異なる強度スケールを持つ異なる機器から取得されることがよくあります。正規化により、MRIやCTスキャンのピクセル強度が異なる患者や機器の間で比較可能になります。この一貫性は、正確なtumor detectionにとって極めて重要であり、モデルが明るさの変動ではなく構造的異常に集中できるようにします。
関連概念の区別#
ディープラーニングにおいて、正規化と類似した前処理やアーキテクチャ上の用語を区別することは重要です。
- vs. Batch Normalization: データ正規化は、ネットワークに入力される前の生データセットに適用される前処理ステップです。対照的に、Batch Normalizationは、model training中にネットワーク内のレイヤー間で内部的に動作します。これは、学習プロセスを安定させるために、前の活性化レイヤーの出力を正規化します。
- vs. Image Augmentation: 正規化がピクセル値のスケールを変更するのに対し、アグメンテーションはデータセットの多様性を高めるために画像のコンテンツやジオメトリを変更します(例:反転、回転、色の変更など)。Albumentationsのようなツールがアグメンテーションに使用される一方、正規化は数学的なスケーリング操作です。
実装例#
コンピュータービジョンにおいて、正規化はパイプラインの最初のステップであることがよくあります。次のPythonの例は、NumPy libraryを使用して画像データを手動で正規化する方法を示しています。この処理は、学習中のUltralytics YOLO26データローダー内で自動的に行われます。
import numpy as np
# Simulate a 2x2 pixel image with values ranging from 0 to 255
raw_image = np.array([[0, 255], [127, 64]], dtype=np.float32)
# Apply Min-Max normalization to scale values to [0, 1]
# This standardizes the input for the neural network
normalized_image = raw_image / 255.0
print(f"Original Range: {raw_image.min()} - {raw_image.max()}")
print(f"Normalized Range: {normalized_image.min()} - {normalized_image.max()}")





