Underfitting
機械学習におけるアンダーフィッティングの特定と解決方法を学びます。その原因、指標、およびより高い精度を得るためにUltralytics YOLO26モデルを最適化する方法を探りましょう。
Underfitting(未学習)は、machine learningモデルがシンプルすぎる場合や、training data内の基本的なトレンドやパターンを捉える能力が不足している場合に発生します。概念的には、明確な曲線を描くデータポイントに対して直線を当てはめようとするようなものであり、モデルは入力と出力の関係性の複雑さを把握できません。モデルがデータを効果的に学習していないため、トレーニングセットだけでなく、未見のvalidation dataでもパフォーマンスが低下し、予測accuracyが低くなります。この現象は多くの場合、アルゴリズムがターゲット関数に対して過度に単純な仮定を行う、AIにおける高いbias in AIが原因で発生します。
原因と指標#
モデルがunderfittingを引き起こす要因はいくつかあります。最も一般的な原因は、非線形データにlinear regressionを適用するなど、直面しているタスクに対して十分な複雑さを持たないモデルアーキテクチャを使用することです。また、モデルが収束するのに十分なepochsが与えられない不十分なトレーニング時間も、適切な学習を妨げます。さらに、通常は反対の問題を防ぐために使用される技術である過度なregularizationは、モデルを過度に制約し、重要な特徴の捕捉を妨げる可能性があります。
エンジニアは、トレーニング中にloss functionsをモニタリングすることでunderfittingを特定できます。トレーニングエラーとバリデーションエラーの両方が高いままで大幅に減少しない場合、モデルはunderfittingを起こしている可能性が高いです。モデルがデータを理解するのを助ける効果的なfeature engineeringとは対照的に、提供する特徴量が少なすぎると、モデルに必要な情報が不足することもあります。
アンダーフィッティング対オーバーフィッティング#
underfittingをその対概念であるoverfittingと区別することが極めて重要です。これら2つの概念は、bias-variance tradeoffの両極端を表しています。
- Underfitting(高バイアス): モデルが硬直的すぎます。基本的なシグナルを学習していないため、トレーニングデータとtest dataの両方でパフォーマンスが低下します。
- Overfitting(高バリアンス): モデルが柔軟すぎます。ノイズを含めてトレーニングデータを記憶してしまい、トレーニング中は抜群のパフォーマンスを発揮するものの、新しい例に対してgeneralizeすることに失敗します。
これら2つの極端な状態の間にある「スイートスポット」を見つけることが、model optimizationの主な目標です。
実社会での応用#
アンダーフィッティングを理解することは、さまざまな業界で信頼性の高いAIシステムを開発するために不可欠です。
- 自動運転: autonomous vehiclesの文脈において、underfittingを起こした物体検出モデルは、複雑な都市環境において歩行者と街灯を区別できない場合があります。モデルには微細な視覚的差異を学習するためのパラメータが不足しているため、AI safetyが危うくなります。
- 医療診断: 腫瘍などの異常を検出するためにmedical image analysisを適用する場合、過度にシンプルなモデルでは小さく不規則な増殖を見落とす可能性があります。ニューラルネットワークが浅すぎると、高いsensitivity and specificityに必要な複雑なテクスチャを学習できず、診断の聴き逃しにつながります。
コードによるアンダーフィッティングへの対処#
computer visionにおいて、underfittingは、タスクの難易度に対して小さすぎるモデルバリアントを使用している場合(高解像度のドローン画像での小さなオブジェクトの検出など)によく発生します。次のPythonの例は、潜在的なunderfittingを解決するために、ultralyticsライブラリを使用して、より小さめのモデルから、より大きく性能の高いモデルに切り替える方法を示しています。
from ultralytics import YOLO
# If 'yolo26n.pt' (Nano) is underfitting and yielding low accuracy,
# upgrade to a model with higher capacity like 'yolo26l.pt' (Large).
model = YOLO("yolo26l.pt")
# Train the larger model.
# Increasing epochs also helps the model converge if it was previously underfitting.
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)より大型のUltralytics YOLO26モデルに移行し、十分なトレーニング時間を確保することで、複雑なパターンを学習するために必要なパラメータがシステムに備わり、underfittingが効果的に軽減されます。モデルがもはやunderfittingを起こしていないことを確認するには、常にロバストなtest datasetに対して評価を行ってください。underfittingを早期に発見するためにデータセットを管理し、実験を追跡するため、Ultralytics Platformは視覚化と分析のための包括的なツールを提供しています。






