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

Regularization

正則化は、ノイズを記憶するのではなく汎化できるよう、学習中のモデルに制約を加えます。L1、L2、重み減衰、ドロップアウト、早期終了を解説します。

正則化とは、新しいデータに対する誤差を下げることを目的としたモデルの学習方法に対するあらゆる変更であり、学習データ上の誤差が増えても適用されます。これは、十分な容量を持つモデルが、見たことのある例のノイズや特異性を記憶してしまう過学習を抑えます。正則化では、大きな重みへのペナルティ、ノイズの注入、多様なデータの追加、早期終了などにより、モデルの実効的な複雑さを制限します。バイアスと分散の観点では、分散を大きく下げる代わりに、多少のバイアス増加を受け入れます。

L1およびL2ペナルティ#

古典的な形式では、損失関数に重みへのペナルティを加えます。合計損失 = データ損失 + λ × ペナルティです。L2正則化は、重みの二乗和Σw²にペナルティを課します。これにより、各重みは大きさに比例してゼロへ近づき、線形モデルではリッジ回帰と呼ばれます。L1正則化は、重みの絶対値の和にペナルティを課します。一定の力で重みを縮小するため、多くの重みが正確にゼロになり、ラッソとも呼ばれるL1ペナルティ付き線形回帰は特徴量選択も兼ねます。Elastic Netは両方を組み合わせます。ペナルティの強さλは、scikit-learnではalphaと呼ばれるハイパーパラメーターです。小さすぎるとモデルは依然として過学習し、大きすぎると学習不足になります。正弦波から得たノイズを含む12点に9次多項式を当てはめると、両方の失敗例が見られます。

import numpy as np
from sklearn.linear_model import Ridge
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures

rng = np.random.default_rng(0)

# 12 noisy training points from a sine wave, plus clean test points
x_train = rng.uniform(0, 1, (12, 1))
y_train = np.sin(2 * np.pi * x_train[:, 0]) + rng.normal(0, 0.2, 12)
x_test = np.linspace(0, 1, 200)[:, None]
y_test = np.sin(2 * np.pi * x_test[:, 0])

# The same degree-9 polynomial, fit with a growing L2 penalty on its coefficients
for alpha in (0.0, 1e-4, 1e-2, 1.0):
    model = make_pipeline(PolynomialFeatures(9), Ridge(alpha=alpha)).fit(x_train, y_train)
    train_mse = np.mean((model.predict(x_train) - y_train) ** 2)
    test_mse = np.mean((model.predict(x_test) - y_test) ** 2)
    weight_norm = np.linalg.norm(model[-1].coef_)
    print(f"alpha {alpha:g}: train MSE {train_mse:.4f}, test MSE {test_mse:.4f}, |w| {weight_norm:.1f}")

ペナルティがない場合、多項式はノイズに沿って曲がります。係数ノルムは約425,000に達し、学習誤差は0.0148、テスト誤差は0.1859です。ペナルティを0.0001にすると、係数ノルムは20.8まで縮小し、学習誤差が0.0334に増える一方で、テスト誤差は11分の1の0.0170になります。alphaを1にすると、ペナルティが支配的になり、テスト誤差が0.3998となってモデルは学習不足になります。

ニューラルネットワークにおけるWeight DecayとDropout#

ニューラルネットワークでは、L2正則化は通常、weight decayとして適用されます。各更新時に、それぞれの重みを値の小さな割合だけ縮小します。通常の確率的勾配降下法では、この2つは同等です。Adamなどの適応型オプティマイザーでは、勾配に加えたL2項がAdamのパラメーターごとのスケーリングで割られるため、勾配の大きな重みにはほとんど正則化がかかりません。分離型weight decayは、代わりに縮小を直接適用します。この方法を使うAdamWオプティマイザーは、Transformerの標準的な選択肢です。

Dropout層は、学習ステップごとに確率pで各ユニットの出力をゼロにし、残った出力を1/(1 − p)倍します。これにより、ネットワークが特定のユニットだけに依存できなくなり、重みを共有する多数の縮小サブネットワークを実質的に学習します。推論時には、すべてのユニットが有効になります。元の実験では、隠れユニットのドロップ確率を0.5にすると、幅広いネットワークとタスクでほぼ最適でした。

Ultralytics YOLOの学習では、両方の設定を利用できます。weight_decayはデフォルトで0.0005で、畳み込み層と線形層の重みにのみ適用され、バイアスと正規化層のパラメーターは対象外です。dropoutはデフォルトで0.0で、YOLO26の分類モデルにおいて、最後の線形層の直前に適用されます。

from ultralytics import YOLO

# 事前学習済みのYOLO26n分類モデルを読み込みます
model = YOLO("yolo26n-cls.pt")

# 分類ヘッドにDropoutを適用し、weight decayを強めて学習します
results = model.train(data="mnist160", epochs=10, dropout=0.2, weight_decay=0.001)

その他の正則化手法#

  • データ拡張: 反転、クロップ、スケーリング、色調変更、モザイクによって学習画像の多様性を広げ、元のデータセットに含まれる以上に多様な条件下で各物体をモデルに見せます。
  • ラベルスムージング: one-hot形式の分類ターゲットをわずかに平滑化したものに置き換え、モデルがロジットを極端な確信度へ押し上げるのを防ぎます。
  • 暗黙的な正則化: 小規模バッチ学習に伴う勾配ノイズと、バッチ正規化に伴うバッチ間のノイズは、どちらも明示的な項を追加することなく正則化として働きます。

早期終了は、学習時間を制限することで正則化します。エポックごとにモデルを検証データで評価し、patienceと呼ばれる所定のエポック数にわたってスコアが改善しなければ学習を停止します。その時点までに得られた最良の重みを保持します。

  • 正規化: 入力または活性化を再スケーリングして、学習を高速化し、安定させます。バッチ正規化には、副次的な効果として正則化の働きもあります。
  • ハイパーパラメーター調整: λ、Dropout確率、patienceなどの正則化設定に加え、その他すべてのハイパーパラメーターについて適切な値を探索します。
  • モデルアンサンブル: 独立して学習した複数のモデルの予測を平均することで、分散を低減します。Dropoutは、1つのネットワーク内でアンサンブルを近似します。学習時には指数関数的な数の縮小サブネットワークからサンプリングし、テスト時にはすべてのユニットを有効にしたネットワークを実行することで、それらすべての予測の平均を近似します。

ソリューションを見る

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

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

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の未来を一緒に築きましょう!

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