機械学習における過学習の原因と症状を探求しましょう。Ultralytics YOLO26を使用して、高い分散を防ぎ、汎化性能を向上させる方法を学びます。
機械学習における過学習は、モデルがトレーニングデータを過度に学習し、根底にあるデータ分布ではなく、ノイズやランダムな変動を取り込んでしまうときに発生します。新しい未知のデータに適用される一般的なパターンを学習する代わりに、過学習したモデルはトレーニングセット内の特定の例を効果的に記憶してしまいます。これにより、トレーニングデータでは優れたパフォーマンスを発揮しますが、実世界のシナリオへの汎化性能は低下します。これはしばしば「高い分散」と表現され、モデルの予測がトレーニングに使用された特定のデータセットによって大きく変動することを意味します。
過学習の主な原因は、利用可能なデータ量に対してモデルの複雑さが過度であることです。ニューラルネットワークが大きすぎる、つまり層やパラメータが多すぎる場合、トレーニング例を簡単に記憶してしまいます。その他の要因としては以下が挙げられます。
過学習と未学習を区別することが重要です。過学習が(ノイズを含む)詳細を学習しすぎることを指すのに対し、未学習はモデルがデータの根底にある構造を全く捉えられないほど単純である場合に発生します。未学習のモデルは、トレーニングデータと新しいデータの両方でパフォーマンスが低く、しばしば高いバイアスをもたらします。これら二つの極端な状態のバランスを取ることは、バイアス-バリアンスのトレードオフとして知られています。
エンジニアは、過学習を軽減し、モデルの堅牢性を向上させるために、いくつかの手法を使用します。
AIを本番環境に展開する際、過学習は深刻な結果をもたらす可能性があります。
Ultralytics Platformまたはローカルトレーニングスクリプトを使用すると、早期停止の許容エポック数を設定することで過学習を防ぐことができます。これは、設定されたエポック数の間、検証の適合度が改善しない場合にトレーニングを停止します。
from ultralytics import YOLO
# Load the YOLO26 model (latest generation)
model = YOLO("yolo26n.pt")
# Train with early stopping enabled (patience=50 epochs)
# If validation metrics don't improve for 50 epochs, training stops.
results = model.train(data="coco8.yaml", epochs=100, patience=50)

未来の機械学習で、新たな一歩を踏み出しましょう。