YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

過学習

機械学習における過学習の原因と症状を探求しましょう。Ultralytics YOLO26を使用して、高い分散を防ぎ、汎化性能を向上させる方法を学びます。

機械学習における過学習は、モデルがトレーニングデータを過度に学習し、根底にあるデータ分布ではなく、ノイズやランダムな変動を取り込んでしまうときに発生します。新しい未知のデータに適用される一般的なパターンを学習する代わりに、過学習したモデルはトレーニングセット内の特定の例を効果的に記憶してしまいます。これにより、トレーニングデータでは優れたパフォーマンスを発揮しますが、実世界のシナリオへの汎化性能は低下します。これはしばしば「高い分散」と表現され、モデルの予測がトレーニングに使用された特定のデータセットによって大きく変動することを意味します。

過学習が起きる理由

過学習の主な原因は、利用可能なデータ量に対してモデルの複雑さが過度であることです。ニューラルネットワークが大きすぎる、つまり層やパラメータが多すぎる場合、トレーニング例を簡単に記憶してしまいます。その他の要因としては以下が挙げられます。

  • 不十分なトレーニングデータ: 小規模なデータセットには、より広範な母集団には存在しない偽の相関が含まれている可能性があります。限られたデータでトレーニングされたモデルは、これらの偶発的なパターンを学習する傾向があります。
  • データノイズと外れ値: トレーニングデータに高レベルのノイズや代表的でない外れ値が含まれていると、モデルが誤解され、真の信号ではなく異常に適合するように内部パラメーターを調整してしまう可能性があります。
  • 長時間のトレーニング期間: 過剰なエポック数でトレーニングを行うと、モデルはトレーニングセット内のノイズに適合するまで重みを調整し続けます。これは通常、検証データを使用して監視されます。

過学習 vs. 学習不足

過学習と未学習を区別することが重要です。過学習が(ノイズを含む)詳細を学習しすぎることを指すのに対し、未学習はモデルがデータの根底にある構造を全く捉えられないほど単純である場合に発生します。未学習のモデルは、トレーニングデータと新しいデータの両方でパフォーマンスが低く、しばしば高いバイアスをもたらします。これら二つの極端な状態のバランスを取ることは、バイアス-バリアンスのトレードオフとして知られています。

過学習の防止

エンジニアは、過学習を軽減し、モデルの堅牢性を向上させるために、いくつかの手法を使用します。

  • 正則化: L1/L2正則化やドロップアウト層の追加などの手法は、トレーニング中にペナルティやランダム性を導入し、モデルが特定の機能に過度に依存するのを防ぎます。
  • 早期停止: 検証セットでの損失関数を監視することで、学習精度が上昇し続けていても、未見データでの性能改善が停止した時点で学習を停止できます。
  • データ拡張: データ拡張を使用してトレーニングセットのサイズと多様性を人工的に増やすことで、モデルが正確な画像を記憶することをより困難にします。
  • 交差検証: k分割交差検証のような手法を使用することで、モデルがデータの異なるサブセットでテストされることが保証され、その性能のより信頼性の高い推定値が提供されます。

実世界の例

AIを本番環境に展開する際、過学習は深刻な結果をもたらす可能性があります。

  • 医療診断: ヘルスケアAIにおいて、皮膚がんをdetectするように訓練されたモデルは、訓練画像に存在する照明条件や定規の目盛りに過学習する可能性があります。異なる照明や機器が使用されている診療所で導入された場合、モデルは無関係な背景の手がかりに依存していたため、悪性病変を正しく識別できない可能性があります。
  • 財務予測: 株価予測モデルは、特定の再現性のないイベント(一度限りの経済危機など)によって引き起こされた過去の市場トレンドに過学習する可能性があります。このようなモデルは、根本的な市場ダイナミクスを学習するのではなく、過去の異常値を記憶したため、将来の株価変動を正確に予測できない可能性が高いでしょう。

コード例: YOLO26による早期停止

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)

関連概念

  • 汎化: モデルが新しい、これまでに見たことのないデータに適応し、良好な性能を発揮する能力であり、過学習の反対です。
  • 交差検証: 統計分析の結果が独立したデータセットにどれだけ汎化するかを評価するための手法。
  • 正則化: 与えられたトレーニングセットに適切に関数を適合させ、過学習を避けることでエラーを減らすために使用される手法。

共にAIの未来を築きましょう!

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