過学習
機械学習における過学習の原因と症状を探る。Ultralytics を用いて、高い分散を防止し汎化性能を向上させる方法を学ぶ。
機械学習において過学習は、モデルが訓練データを過剰に学習し、基礎となるデータ分布ではなくノイズやランダムな変動を捉えてしまう場合に発生する。 過学習したモデルは、新規の未見データに適用できる一般的なパターンを学習する代わりに、
訓練セット内の特定の例を事実上暗記してしまう。その結果、訓練データでは優れた性能を発揮するが、
実世界のシナリオへの汎化性能は低下する。これはしばしば「高分散」と表現され、
訓練に使用した特定のデータセットによってモデルの予測が大きく変動することを意味する。
過学習が起きる理由
過学習の主な原因は、利用可能なデータ量に対してモデルの複雑さが過剰であることである。ニューラルネットワークが大きすぎる場合——つまり層やパラメータが多すぎる場合——は、学習例を容易に記憶してしまう。その他の要因には以下が含まれる:
-
訓練データの不足:小規模なデータセットには、より広範な母集団には存在しない偽の相関が含まれている可能性がある。限られたデータで訓練されたモデルは、こうした偶然のパターンを学習しやすい。
-
データノイズと外れ値:
トレーニングデータ内の高レベルのノイズや代表性のない外れ値は、
モデルを誤った方向に導く可能性があり、
その結果、モデルは真の信号ではなく異常値に適合するよう内部パラメータを調整してしまう。
-
学習時間の延長:学習エポック数を過剰に設定すると、
モデルは学習データセット内のノイズに適合するまで
重みを微調整し続ける。この現象は検証データを用いて
監視されることが多い。
過学習 vs. 学習不足
過学習と過少学習を区別することが重要です。過学習は細部(ノイズを含む)を過剰に学習する現象である一方、過少学習はモデルが単純すぎてデータの根本的な構造を全く捉えられない場合に発生します。過少学習モデルは学習データと新規データの両方で性能が低く、しばしば高いバイアスを引き起こします。この二つの極端な状態のバランスを取ることは、バイアス・分散のトレードオフとして知られています。
過学習の防止
エンジニアは過学習を軽減しモデルの頑健性を向上させるために、いくつかの手法を用いる:
-
正則化:L1/L2正則化やドロップアウト層の追加といった手法は、学習中にペナルティやランダム性を導入し、モデルが特定の特徴量に過度に依存するのを防ぎます。
-
早期終了:検証データセットにおける損失関数を監視することで、未見データに対する性能向上が止まった時点で学習を停止できる。たとえ学習中の精度が上昇し続けていても同様である。
-
データ拡張:データ拡張を用いて訓練セットの規模と多様性を人工的に増加させることで、
モデルが正確な画像を記憶することが難しくなる。
-
交差検証:
k分割交差検証などの手法を用いることで、
モデルが異なるデータ部分集合でテストされ、その性能のより信頼性の高い推定値が得られる。
実世界の例
過学習は、AIを本番環境に導入する際に深刻な結果をもたらす可能性があります:
-
医療診断:
医療分野におけるAIでは、皮膚癌detect
訓練されたモデルがdetect
訓練画像に存在する照明条件や定規の目盛りに過学習する可能性がある。
異なる照明や機器が使用される診療現場に導入された場合、
モデルは関連性のない背景情報に依存していたため、
悪性病変を正しく識別できなくなる恐れがある。
-
財務予測:株価予測モデルは、特定の再現不可能な事象(例えば一時的な経済危機)によって引き起こされた過去の市場動向に過学習する可能性がある。このようなモデルは、市場の基本的な力学を学習するのではなく過去の異常値を記憶したため、将来の株価変動を正確に予測できない可能性が高い。
コード例: YOLO26を用いた早期停止
Ultralytics ローカルのUltralytics スクリプトを使用すると、
早期停止閾値を設定することで過学習を防止できます。これにより、検証用適合度が設定されたエポック数分間
改善しない場合にトレーニングが停止します。
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)
関連概念
-
一般化:モデルが新しい、これまで見たことのないデータに適応し、良好な性能を発揮する能力。
これは過学習とは反対の性質である。
-
交差検証:統計分析の結果が独立したデータセットにどの程度一般化されるかを評価する手法。
-
正則化:与えられた学習データセットに対して関数を適切に適合させ、過学習を回避することで誤差を低減する手法。