Yolo 深圳
深セン
今すぐ参加
用語集

正規化

正規化がモデルの学習と精度を向上させる仕組みを探る。最小値・最大値スケーリング、Zスコア標準化、Ultralytics におけるその役割について学ぶ。

正規化はデータ前処理における基本技術であり、数値属性を標準範囲に再スケーリングする手法である。機械学習(ML)の文脈では、データセットにはしばしば異なる尺度を持つ特徴量が含まれる——例えば年齢範囲(0~100)と所得水準(0~100,000)などである。 こうした不均衡を放置すると、 最適化アルゴリズムが大きな値に偏り、 収束が遅くなり、性能が低下する可能性があります。 データを正規化することで、エンジニアは 各特徴量が最終結果に比例して寄与することを保証し、 ニューラルネットワークがより効率的に学習できるようにします。

一般的な正規化テクニック

データを変換する標準的な方法はいくつかあり、それぞれが異なる分布やアルゴリズムの要件に適しています。

  • 最小値-最大値スケーリング: これは最も直感的な正規化手法である。データを固定範囲(通常[0, 1])に再スケーリングする。 この変換は、最小値を引いた値を範囲(最大値から最小値を引いた値)で除算することで実行される。 画像処理において広く用いられており、 ピクセル輝度が0から255の間に制限されていることが知られている。
  • Zスコア標準化 標準化は正規化と混同されがちだが、 特にデータの平均を0、標準偏差を1に変換する手法である。 これはデータがガウス分布に従う場合に特に有用であり、 サポートベクターマシン(SVM)など 正規分布を前提とするアルゴリズムには不可欠である。
  • 対数スケーリング: 極端な外れ値を含むデータやべき則に従うデータに対して対数変換を適用すると、 値の範囲を圧縮できます。これにより、分布がより扱いやすくなり、 推論エンジンが巨大な値の急上昇に歪められることなく 効果的に解釈できるようになります。

実際のアプリケーション

正規化は、様々な産業における高性能AIシステムのパイプラインにおける標準的なステップである。

  1. コンピュータビジョン(CV): 物体検出や 画像分類などのタスクでは、デジタル画像は0から255までのピクセル値で構成される。これらの大きな整数を直接ネットワークに入力すると、勾配降下の速度が低下する可能性がある。 標準的な前処理ステップとして、 ピクセル値を255.0で除算し[0, 1]の範囲に正規化します。この手法により、 YOLO26などの高度なモデルへの入力が一貫性を保ち、 Ultralytics トレーニング安定性が向上します。
  2. 医療画像解析:医療用スキャン(医療分野におけるAIで使用されるものなど)は、 異なる装置で撮影され、輝度スケールが異なる場合が多い。 正規化処理により、MRIやCTスキャンのピクセル輝度が 異なる患者や装置間で比較可能となる。この一貫性は 腫瘍の正確な検出に不可欠であり、 モデルが輝度の変動ではなく構造的異常を認識できるようにする。

関連概念の区別

深層学習で見られる類似の前処理やアーキテクチャ用語と正規化を区別することが重要である。

  • バッチ正規化との比較: データ正規化は、ネットワークに入る前の生の入力データセットに適用される前処理ステップである 一方、バッチ正規化はモデル学習中にネットワーク全体で層間の内部処理として動作する。 学習プロセスを安定化させるため、前の活性化層の出力を正規化する。
  • 画像拡張との比較: 正規化がピクセル値のスケールを変更するのに対し、拡張は画像の内容や形状(例:反転、回転、色変更)を変更してデータセットの多様性を高めます。拡張にはAlbumentationsなどのツールが使用され、 正規化は数学的なスケーリング操作です。

実施例

コンピュータビジョンでは、正規化はパイプラインの最初のステップとなることが多い。以下の Python 例は、NumPy を用いて画像データを手動で正規化する方法を示しています。この処理は、Ultralytics データローダー内ではトレーニング時に自動的に行われます。

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()}")

Ultralytics コミュニティに参加する

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

今すぐ参加