機械学習やディープラーニングの話で出てくる「過学習」という言葉。英語では「オーバーフィッティング(overfitting)」と呼ばれます。
AIにとって「たくさん学ぶ」ことはよいことのように思えますが、実は学びすぎも問題になることがあります。
この記事では、過学習とは何かを身近な例で説明し、なぜ問題なのか、どう対処するのかをやさしく解説します。
過学習は「テストの答えだけ丸暗記してしまう」状態
過学習をひと言で説明すると、学習用のデータに合いすぎてしまい、新しいデータにうまく対応できなくなる状態です。
学校のテスト勉強にたとえるとわかりやすいです。
過去の問題集の答えだけを丸暗記した生徒がいるとします。過去問はスラスラ解けますが、少し問題の聞き方が変わると途端に答えられなくなります。本当に理解しているのではなく、答えのパターンだけを覚えてしまったからです。
AIでも同じことが起きます。学習用データの特徴を覚えすぎてしまい、本番で使う新しいデータに対して正しく判断できなくなるのです。
過学習が起きるとどうなるか
過学習が起きたAIの典型的な症状を見てみましょう。
- 学習データでは正解率99% → とても優秀に見える
- 新しいデータでは正解率60% → 実際の性能はかなり低い
学習中の成績が良いのに、本番では使い物にならない。これが過学習の厄介なところです。テストの練習では満点なのに、本番のテストで点が取れない生徒のような状態です。
なぜ過学習は起きるのか
過学習が起きる主な原因は、いくつかあります。
学習データが少なすぎる
データが少ないと、AIはその少ないデータの細かい特徴まで覚えてしまいます。たとえば、犬の写真が10枚しかなければ、「犬はみんな茶色い」と覚えてしまうかもしれません。白い犬や黒い犬が来たら、犬と認識できなくなります。
モデルが複雑すぎる
AIの構造が必要以上に複雑だと、データの本質的なパターンだけでなく、ノイズ(たまたま含まれている無関係な特徴)まで学習してしまいます。
学習回数が多すぎる
同じデータで何度も何度も学習を繰り返すと、データの細部まで記憶してしまいます。料理で言えば、同じレシピだけを何百回も作って、そのレシピの分量を1グラム単位で暗記しているような状態です。
過学習を防ぐための工夫
過学習は、AI開発では常に気をつけるべき問題です。防ぐためのいくつかの工夫を紹介します。
- データを増やす — 多様なデータで学習させると、特定のパターンに偏りにくくなる
- データを分けてテストする — 学習用データと検証用データを別にして、本番の性能を確認する
- モデルをシンプルにする — 必要以上に複雑なAIを使わない
- 学習を途中で止める — 検証データでの性能が下がり始めたら、学習を打ち切る
- ドロップアウト — 学習中にわざと一部のノードを無効にして、特定のパターンに頼りすぎないようにする
ここは少し専門的な内容ですが、まずは「学習データと本番データの両方で性能を確認することが大切」と覚えておけば大丈夫です。
過学習の反対は「未学習」
過学習の反対の問題もあります。「未学習(アンダーフィッティング)」と呼ばれ、学習が足りずにデータのパターンすら掴めていない状態です。
テスト勉強にたとえれば、教科書をまったく読まずにテストを受けるような状態です。過学習とは逆に、学習データに対しても新しいデータに対しても性能が低くなります。
ちょうどよいバランスの学習が、もっとも良い結果を生みます。
覚えておきたい3つのポイント
- 過学習は、学習データに合いすぎて新しいデータに対応できなくなる問題
- データが少ない、モデルが複雑すぎる、学習しすぎなどが原因で起きる
- データの分割やモデルの調整で防ぐことができる
過学習は機械学習やディープラーニングのどちらでも起こりうる問題です。これらの記事もあわせて読むと理解が深まります。
あわせて読みたい記事
- 機械学習とは何か — データから学ぶAIの基本
- ディープラーニングとは何か — 深い層で学ぶAIの技術


Comment