FE EXAM

過学習(オーバーフィッティング)

訓練データに適合しすぎて未知データへの予測精度が下がる現象

INTERACTIVE VISUALIZATION
訓練誤差
検証誤差
訓練誤差
0.161
検証誤差
0.362
現在の状態
ちょうどよい(汎化)
モデルの複雑度(次数)4
単純複雑
プリセット
ちょうどよい(汎化)訓練データにも未知データにもバランス良く対応できている理想的な状態。複雑度を上げると訓練誤差は下がり続けますが、検証誤差はU字を描き、ちょうどよい点(次数4付近)を超えると再び増えていきます。
訓練誤差 vs 検証誤差
誤差複雑度 →最適
多項式フィッティング(曲線の当てはまり)
入力 x →
白い点が観測データ。複雑度が低いと曲線が直線的すぎてデータの傾向を捉えきれず(未学習)、高すぎるとすべての点を無理に通ろうとして波打ち(過学習)ます。
解説

📉
過学習とは

過学習(波打ち)ちょうどよい

過学習(オーバーフィッティング)とは、モデルが訓練データ(=学習に使ったデータ)に合わせすぎてしまい、まだ見たことのない未知のデータに対する予測精度が下がってしまう現象のことです。

身近な例で言うと、過去問の答えを丸暗記した受験生に似ています。過去問(訓練データ)は完璧に解けるのに、少し角度を変えた本番の問題(未知データ)になると途端に解けなくなる。これはパターンの「本質」ではなく、過去問特有の細かい特徴やノイズまで覚えてしまったからです。

上のツールで複雑度のスライダーを上げてみてください。訓練誤差(青)はどんどん下がるのに、検証誤差(赤)はある点を境に逆に増えていきます。下の曲線も、複雑度が高いとすべての点を無理に通ろうとして不自然に波打つのが分かります。これが過学習の正体です。

🔍
発生する原因

少ないデータ+複雑すぎるモデル過学習

過学習は、モデルの表現力に対してデータが足りないときに起きやすくなります。主な原因は次のとおりです。

モデルが複雑すぎる:パラメータ(重み)が多すぎて、データの本質ではなく細部やノイズまで覚えてしまう
訓練データが少ない:少ない例だけだと、たまたまの偏りを「ルール」だと勘違いする
学習させすぎ(エポック過多):同じデータで繰り返し学習しすぎると、その細部に過剰適応する
ノイズの多いデータ:誤差や例外まで丸ごと学んでしまう

ポイントは「訓練データだけで性能を測ってはいけない」ということです。だからこそ、学習に使わない検証データ(または訓練/テスト分割)で性能を確かめます。訓練データの正解率は高いのにテストデータで低い、という状況は過学習のサインと考えてよいでしょう。

🛡️
対策(正則化・データ拡張等)

正則化データ拡張Dropout早期終了過学習を抑える代表的な手法

過学習を防ぐには、モデルが細部を覚えすぎないように適度な制約をかけるか、学習に使えるデータを実質的に増やすのが基本方針です。代表的な対策は次のとおりです。

正則化:重みが大きくなりすぎないよう損失に罰則を加える(L1/L2 正則化)。曲線が滑らかになる
データ拡張:画像を回転・反転・拡大するなどして訓練データを水増しし、多様なパターンを学ばせる
ドロップアウト:学習中にノードをランダムに無効化し、特定の経路に頼りすぎないようにする
早期終了(アーリーストッピング):検証誤差が増え始めたら学習を止める
モデルを単純にする:パラメータ数や層を減らす、データ量を増やす

上のグラフの「最適」の縦線が、検証誤差が最小になる「ちょうどよい複雑度」です。これらの対策は、この最適点付近にモデルを留めるための工夫だと考えると理解しやすいです。特に正則化は次の「正則化」のページでさらに詳しく扱います。

関連コンテンツ

過学習 | Vizigo