
7. 機械学習の基本
7.5 過学習と汎化性能
機械学習の目標は、「見たことがないデータ」に対しても安定して良い予測ができることにある。この力を汎化性能と呼ぶ。一方、学習に使ったデータにだけ極端に強くなり、未知データでは急に成績が悪くなることがある。これが過学習である。過学習は、訓練データの偶然の癖やノイズまで“暗記”してしまうことで起き、汎化性能を落としてしまう。汎化性能とは、訓練に使った集合以外のデータでも正しく分類・予測できる能力のことで、実運用で最も重視すべき指標である。[1][2][3]
過学習はどうして起こるのか。理由はシンプルで、モデルが「複雑すぎる」か「データが少なすぎる」か、またはその両方である。複雑なモデルは、わずかなノイズの違いにも合わせられてしまうため、訓練データでは誤差ゼロに近づく一方、未知データでは外す。データが少ない場合も、偶然の偏りに強く影響を受けるため、同様の現象が起きやすい。過学習の結果として、訓練精度だけが高く、検証・テスト精度が伸びない、あるいは途中から下がり始める、といった兆候が表れる。[4][5][6]
この現象を理解するために役立つ考え方が「バイアス・バリアンスのトレードオフ」である。モデルの誤差は、おおまかに「バイアス(モデルが単純すぎて見落としている系統誤差)」と「バリアンス(データの取り方による出力のばらつき)」に分けられる。単純なモデルはバイアスが大きく、複雑なモデルはバリアンスが大きくなりがちで、両者は“あちらを立てればこちらが立たず”の関係にある。未知データでの誤差(汎化誤差)を最小にするには、このバランス点を探す必要がある。[7][8][9]
では、過学習をどう見抜き、どう防ぐか。実務では次の3段階で臨むのが堅実である。第一に、正しい評価の設計で早期に気づく。学習用とは別に検証用・評価用データを用意し、訓練と独立に性能を測る。最も基本はホールドアウト(訓練/検証/評価の分割)で、より安定させたいときはクロスバリデーション(k分割の平均)を用いる。時系列では必ず時間順を保つ分割を使い、未来情報の混入を防ぐ。訓練では下がるのに、検証損失が下がらなくなる、あるいは上がり始める場合、過学習のサインと読める。第二に、モデルや学習の工夫で過学習を抑える。代表策は正則化(L1/L2など)、モデルを適度にシンプルにする、特徴量を選ぶ、データ拡張やノイズ付加でデータの多様性を増やす、といったものだ。第三に、学習の運転術を磨く。早期終了やドロップアウトの活用、アンサンブル、適切なハイパーパラメータ探索が効く。[10][11][12][13][1]
代表的な防止策を具体的に示す。正則化は、モデルの複雑さに“罰則”を与えて過度な当て込みを抑える方法で、L2正則化(重みの二乗和に罰則)は重みを適度に小さく保ち、なめらかな解を促す。L1正則化(重みの絶対値に罰則)は不要な重みをゼロに押し込み、特徴選択の効果も得られる。強さ(λ)は強すぎても弱すぎても性能を損なうため、クロスバリデーションで程よい値を選ぶのが定石である。ドロップアウトは、学習中にランダムに一部のユニットを無効化し、特定の経路に依存しすぎるのを防ぐ深層学習の定番手法だ。これにより仮想的に多様な“サブモデル”を平均する効果が生まれ、汎化が改善しやすい。早期終了は、検証損失が改善しない状態が続いた時点で学習を打ち切る方法で、訓練の継続で“暗記”に傾く前に止める考え方である(ただし問題によっては挙動が複雑な場合もある)。データ拡張は、画像や音、時系列などでラベルを保ったまま入力を多様化し、実世界のばらつきを先取り学習させる実践的手段である。さらに、複数モデルの平均や多数決で安定化させるアンサンブルも過学習の抑制と精度向上に有効だ。[3][11][14][12][4][10]
過学習の早期発見には、可視化と指標の運用も重要である。学習曲線(エポックに対する訓練・検証の損失と精度)を常に描き、二つの曲線が乖離し始めたら対策を打つ。分類では、正解率だけに頼らず、再現率・適合率・F1、そして不均衡に強いPR曲線(AUPRC)を重視する。これにより訓練だけ“良さそう”に見える錯覚を避けられる。しきい値はPRやコスト前提で決め、検証セットで一貫して最適化する。[5][1][3]
「汎化性能を上げる」とは、何を増やし、何を抑えることか。核心は二つある。ひとつは、現実の多様性を訓練の中へ持ち込むこと(データ量・多様性・適切な拡張)。もうひとつは、モデルの自由度を適正化すること(正則化・アーキテクチャ・ドロップアウト・早期終了)。前者は“知らない状況を減らす”、後者は“暗記しすぎないようにする”。この二本柱を、正しい検証設計でチューニングし続けることが、汎化性能の実質的な向上である。[2][12][3]
最後に、現場でのチェックリストを簡潔に挙げる。分割は訓練・検証・評価を厳格に分け、前処理(標準化など)は訓練で学び検証・評価に適用する(情報漏えいの防止)。学習曲線を常時監視し、検証損失の悪化で早期終了を検討。正則化(L2/L1)とドロップアウトを初期状態から有効にし、強さはクロスバリデーションで探索。特徴量は必要十分に保ち、冗長なものは削る。データ拡張やノイズ付加で、運用時のばらつきを取り込む。最終モデルは独立テストで一度だけ評価し、その後は運用データの分布変化をモニタして再学習計画を回す。これらの実践は、教科書的な概念にとどまらず、現実の過学習を抑え、安定した汎化性能へつながる基本作法である。[12][13][1] [1] https://datawokagaku.com/holdout/
[2] https://www.netattest.com/generalization-performance-2024_mkt_tst [3] https://book.st-hakky.com/data-science/what-is-generalization-performance-in-machine-learning [4] https://fullvalue.co.jp/media/ai-34/ [5] https://liskul.com/over_fitting-167529 [6] https://www.tryeting.jp/column/6846/ [7] https://henry-lee.hatenablog.com/entry/2025/06/02/174543 [8] https://jitera.com/ja/insights/41944 [9] https://atmarkit.itmedia.co.jp/ait/articles/2009/09/news025.html [10] https://dx-consultant-fast-evolving.com/dropout_and_early_stopping/ [11] https://note.com/digisapo/n/n37793b944fd1 [12] https://aismiley.co.jp/ai_news/regularization/ [13] https://ai.reinforz.co.jp/916 [14] https://shion.blog/the-9th-machine-learning-workshop_2/ [15] https://note.com/mindful_otaku/n/n99d73bc4798b [16] https://data-viz-lab.com/overfitting [17] https://ai-compass.weeybrid.co.jp/learning/generalization-performance-handling-unknown-data/ [18] https://ai999.careers/navi/4131/ [19] https://qiita.com/tetsuro731/items/c57f54bec202f5352420 [20] https://ai-kenkyujo.com/artificial-intelligence/algorithm/kagakushu/※本ページは、AIの活用や研究に関連する原理・機器・デバイスについて学ぶために、個人的に整理・記述しているものです。内容には誤りや見落としが含まれている可能性もありますので、もしお気づきの点やご助言等ございましたら、ご連絡いただけますと幸いです。
※本ページの内容は、個人的な学習および情報整理を目的として提供しているものであり、その正確性、完全性、有用性等についていかなる保証も行いません。本ページの情報を利用したこと、または利用できなかったことによって発生した損害(直接的・間接的・特別・偶発的・結果的損害を含みますが、これらに限りません)について、当方は一切責任を負いません。ご利用は利用者ご自身の責任でお願いいたします。