広告・PR:この記事にはアフィリエイト広告を含みます。
過学習は、学習用データの細かな特徴に合わせすぎて、新しいデータでうまく予測できなくなる状態です。未学習との違いと、検証・テストの役割を身近な例で整理します。
定義の参考:Google Machine Learning Crash Course: Overfitting。以下の身近な例は説明用に作成したものです。
目次
練習問題の答えを覚える例で考える
架空の分類器に、20枚の猫と犬の写真を覚えさせたとします。猫の写真はたまたま全部青い背景、犬は全部白い背景でした。背景だけで答えるモデルなら、この20枚では高得点でも、白い背景の猫には対応できないかもしれません。
これは学習時の成績だけでは判断できない理由を示す例です。ただし、背景への依存だけで過学習の原因が一つに決まるわけではありません。データ収集の偏りや本番との分布の違いも関係します。実際には、未使用データでの誤りや学習曲線を調べます。
適合不足と過学習を比べる
適合不足(アンダーフィッティング)では、学習用データの傾向すら十分に捉えられていません。モデルが単純すぎたり、学習が足りなかったりする場合があります。過学習では、学習用の結果は良いのに、同じ用途の新しいデータでの結果が悪くなります。
たとえば、架空の得点が学習50点・検証48点なら、まず学習の不足や特徴の不適切さを疑います。学習99点・検証60点なら、学習と検証の差を調べます。数字だけで確定診断はできませんが、どこを調べるかの手掛かりになります。
訓練・検証・テストの3つを使い分ける
訓練データはモデルを調整するため、検証データは設定や学習の止め時などを選ぶため、テストデータは選び終えたモデルを評価するために使います。テスト結果を見ながら何度も設定を変えると、そのテストに合わせた選択になり、独立した評価ではなくなります。
同じ人物のほぼ同じ写真を訓練とテストの両方に入れるなど、情報が漏れる分け方にも注意が必要です。未来を予測する仕事では時系列を尊重した分割が必要になることもあります。単にランダムに分ければ、どの用途にも正しいとは限りません。
対策は「学習回数を減らす」だけではない
代表性のあるデータを増やす、モデルの複雑さを調整する、正則化を使う、検証成績を見て早めに学習を止める、といった対策があります。どれが有効かは原因と用途によって違います。学習不足のモデルを早く止めれば、かえって性能が下がることもあります。
検証用データも少なすぎれば、設定の良し悪しを偶然で選びやすくなります。複数の分割で確認する交差検証などもありますが、同じ人・同じ場所・時間のつながりがあるデータでは、その構造を考えて分けます。
現実の失敗を全部、過学習と呼ばない
本番で入力が壊れていた、正解ラベルの定義が変わった、利用者層が変わった、といった問題も予測を悪くします。過学習は有力な候補の一つであり、失敗全般の別名ではありません。機械学習の流れと合わせて、どの段階で差が生まれたかを確かめると理解しやすくなります。
関連する言葉から理解を広げる
AI・コンピュータの用語16選では、関連する概念を具体例と一緒に比較できます。
過学習と未学習を、訓練側の結果で比べる
過学習では訓練データにはよく合う一方、新しいデータへの性能が悪くなります。未学習では訓練データの規則も十分に捉えていません。テストの成績が悪いという結果だけでは両者を区別できないため、訓練・検証の結果を合わせて見ます。評価データへの漏洩も別に点検します。
| 用語 | 注目すること | 例・注意点 |
|---|---|---|
| 未学習 | 訓練データにも十分合わない | 練習用のメールの特徴も捉えきれない |
| 過学習 | 訓練にはよく合うが新しいデータに弱い | 練習用メールの偶然の特徴まで覚える |