過学習
機械学習における過学習を特定、防止、および対処する方法について学びます。モデルの汎化性能と実世界でのパフォーマンスを向上させるためのテクニックを発見してください。
過学習は、機械学習(ML)における基本的な概念であり、モデルがトレーニングデータの詳細やノイズを過度に学習し、新しい未知のデータに対するモデルのパフォーマンスに悪影響を与える場合に発生します。本質的に、モデルは基礎となるパターンを学習する代わりに、トレーニングセットを暗記してしまいます。その結果、トレーニングに使用したデータに対しては高い精度を達成するものの、実世界のデータには汎化できず、実用的なアプリケーションには信頼できないモデルとなります。優れた汎化を達成することは、AI開発における主要な目標です。
過学習を特定する方法
過学習は通常、トレーニングプロセス中にトレーニングデータセットと別の検証データセットの両方に対するモデルのパフォーマンスを監視することによって特定されます。過学習の一般的な兆候は、トレーニングセットの損失関数の値が減少し続ける一方で、検証セットの損失が増加し始める場合です。同様に、トレーニング精度が向上し続ける一方で、検証精度がその後のエポックで停滞または悪化する場合、モデルは過学習している可能性があります。TensorBoardのようなツールは、これらのメトリクスを視覚化し、そのような問題を早期に診断するのに非常に役立ちます。Ultralytics HUBのようなプラットフォームも、実験を追跡し、モデルを評価して過学習を検出するのに役立ちます。
過学習 vs. 学習不足
過学習と学習不足は、機械学習においてモデルの汎化能力の欠如を示す2つの一般的な問題であり、本質的に対照的な問題です。
- 過学習: モデルがデータに対して複雑すぎます(分散が大きい)。トレーニングデータ内のノイズやランダムな変動を捉えてしまうため、トレーニング中は優れたパフォーマンスを発揮しますが、テストデータではパフォーマンスが低下します。
- Underfitting(過少適合): モデルが単純すぎて、データの根本的な構造を捉えられません(高いバイアス)。関連するパターンを学習できないため、トレーニングデータとテストデータの両方でパフォーマンスが低下します。
深層学習における課題は、適切なバランスを見つけることであり、これはバイアス-バリアンスのトレードオフによって説明されることが多い概念です。
過学習の現実世界の例
- 自動運転車の物体検出: 晴れた日の条件下でのみ画像を含むデータセットを使用して、自動運転車用のUltralytics YOLOモデルをトレーニングすることを想像してみてください。モデルは、明るい光の中で歩行者や車を検出することに特化するかもしれませんが、夜間や雨天、霧の多い天気では劇的に失敗する可能性があります。これは、トレーニングデータの特定の照明や気象条件に過剰適合(オーバーフィット)しているためです。Argoverseのような多様なデータセットを使用することで、これを防ぐことができます。
- 医用画像解析:あるCNNモデルが、単一の病院から提供されたMRIスキャンから腫瘍を検出するように学習されたとします。そのモデルは、その病院の特定のMRI装置に特有のアーチファクトやノイズパターンを、腫瘍の存在と関連付けて学習してしまう可能性があります。異なる病院の異なる装置で撮影されたスキャンでテストした場合、元のトレーニングセットのノイズに過剰適合してしまい、腫瘍の実際の生物学的マーカーを学習していないため、パフォーマンスが大幅に低下する可能性があります。これは、医療におけるAIなどの分野で重要な問題です。
過学習を防ぐには
過学習を抑制し、より堅牢なモデルを構築するために、いくつかの手法を採用できます。
- Get More Data: トレーニングデータセットのサイズと多様性を増やすことは、過学習を防ぐ最も効果的な方法の1つです。より多くのデータは、モデルがノイズではなく、真の基になるパターンを学習するのに役立ちます。さまざまなUltralyticsデータセットを調べて、プロジェクトを強化できます。
- データ拡張:これには、既存のデータの修正されたコピーを作成することにより、トレーニングデータセットを人為的に拡大することが含まれます。ランダムな回転、スケーリング、トリミング、色のシフトのような手法が適用されます。Ultralytics YOLOデータ拡張テクニックは、モデルの堅牢性を向上させるために組み込まれています。
- モデルアーキテクチャの簡素化:場合によっては、モデルが与えられたデータセットに対して複雑すぎる場合があります。パラメーターの少ないより単純なアーキテクチャを使用すると、データを記憶することを防ぐことができます。たとえば、より小さなデータセットには、YOLOv8nとYOLOv8xのような、より小さなモデルバリアントを選択すると有益な場合があります。
- 正則化:この手法では、モデルの複雑さに基づいて損失関数にペナルティを追加し、大きなモデルの重みを抑制します。一般的な手法はL1正則化とL2正則化であり、詳細はこちらをご覧ください。
- ドロップアウト: 正則化の特定の一形態で、各トレーニングステップ中にニューロンのランダムな割合を無視します。これにより、ネットワークは冗長な表現を学習し、単一のニューロンが過度に影響力を持つことを防ぎます。ドロップアウトの概念の詳細はこちらで説明されています。
- Early Stopping(早期打ち切り): これは、検証セットでのモデルのパフォーマンスを監視し、トレーニングのパフォーマンスがまだ向上している場合でも、検証のパフォーマンスが低下し始めたらすぐにトレーニングプロセスを停止することを含みます。詳細については、KerasでのEarly Stoppingの説明をご覧ください。
- 交差検証:K-分割交差検証のような手法を使用することにより、データは複数のフォールドに分割され、モデルは異なるサブセットでトレーニングおよび検証されます。これにより、モデルの汎化能力をより堅牢に推定できます。
- モデルのプルーニング:これは、トレーニング済みのネットワークから、パフォーマンスへの影響がほとんどないパラメータまたは接続を削除し、複雑さを軽減することを含みます。Neural Magicのような企業は、効率的な展開のためにモデルをプルーニングすることを専門とするツールを提供しています。