📌

訓練誤差と汎化誤差 ─ カンニング野郎は本番に弱い

に公開

この記事の目的

「このモデル、訓練誤差は低いけど汎化誤差が高いね」

会議でデータサイエンティストがそう言った。あなたは「ふむふむ」と頷いたけど、正直、何が問題なのかピンとこなかった。

この記事を読めば、その一言が**「やばい」**という意味だとわかるようになる。


TL;DR(30秒まとめ)

用語 意味 覚え方
訓練誤差 練習問題での点数 「カンニングできる試験」
汎化誤差 本番試験での点数 「初見の問題で勝負」
ホールドアウト法 一発勝負で本番力を測る 「ホールド=取っておく」
クロスバリデーション 何回も本番を繰り返して平均を取る 「クロス=交代で」

訓練誤差と汎化誤差を「カンニング」で理解する

あなたのクラスに、こんな生徒がいたとする。

山田くん:過去問を丸暗記するタイプ。答えを覚えているので、同じ問題なら100点。でも初見の問題には弱い。

佐藤さん:本質を理解するタイプ。過去問は80点くらいだけど、初見の問題でも80点取れる。


訓練誤差:「答えを知ってる問題」での成績

【訓練誤差のイメージ】

    過去問(答えを知ってる)
    ┌─────────────────────┐
    │ Q1: 1+1=?          │
    │ Q2: 2×3=?          │
    │ Q3: 10÷2=?         │
    └─────────────────────┘

    山田くん:100点(丸暗記してるから当然)
    佐藤さん:80点(計算ミスもある)

訓練誤差は、学習に使ったデータでの成績。

山田くんは訓練誤差が低い(成績が良い)。でもそれ、答えを知ってるからでしょ?という話。


汎化誤差:「初めて見る問題」での成績

【汎化誤差のイメージ】

    本番試験(初見の問題)
    ┌─────────────────────┐
    │ Q1: 3+4=?          │  ← 見たことない!
    │ Q2: 5×6=?          │  ← 見たことない!
    │ Q3: 20÷4=?         │  ← 見たことない!
    └─────────────────────┘

    山田くん:40点(丸暗記が通用しない...)
    佐藤さん:78点(本質を理解してるから対応できる)

汎化誤差は、学習に使っていない新しいデータでの成績。

これが本当の実力。AIの世界では、汎化誤差が低いモデルこそ「使える」モデルだ。


なぜ訓練誤差だけ見るとダメなのか

┌─────────────────────────────────────────────────────┐
│                                                     │
│    「訓練誤差が低い!優秀!」                        │
│                 ↓                                   │
│    本番で使ってみる                                  │
│                 ↓                                   │
│    「全然当たらないじゃん...」                       │
│                                                     │
│    = 過学習(オーバーフィッティング)               │
│                                                     │
└─────────────────────────────────────────────────────┘

これが過学習。訓練データを「暗記」しすぎて、新しいデータに対応できなくなる現象。

山田くん状態のAIは、実務で役に立たない。


汎化誤差をどうやって測る?

ここからが本題。

「初見の問題での成績」を測りたい。でも本番データはまだない。どうする?

答え:手持ちのデータの一部を「本番用」として隠しておく

その方法が2つある。


ホールドアウト法:「一発勝負」

やり方

手持ちのデータを「訓練用」と「テスト用」に分ける。シンプル。

【ホールドアウト法】

手持ちデータ 100件
┌──────────────────────────────────────────────────┐
│ ████████████████████████████████░░░░░░░░░░░░░░░│
│ ←───── 訓練用 70件 ─────→←── テスト用 30件 ──→ │
└──────────────────────────────────────────────────┘

   訓練用で学習 → テスト用で「本番力」を測定

語呂合わせ:「ホールド=取っておく」

ホールドアウト → テスト用データを取っておく

「ちょっとこれ、後で使うから触らないで」と一部を確保しておくイメージ。

メリット・デメリット

  • メリット:シンプル、計算が速い
  • デメリット:分け方で結果がブレる(運次第)

クロスバリデーション法:「全員が本番を経験」

やり方

データをK個のグループに分けて、全員がテスト役を経験する

【5分割クロスバリデーション(K=5)】

手持ちデータを5等分

1回目:[テスト][訓練][訓練][訓練][訓練] → 誤差A
2回目:[訓練][テスト][訓練][訓練][訓練] → 誤差B
3回目:[訓練][訓練][テスト][訓練][訓練] → 誤差C
4回目:[訓練][訓練][訓練][テスト][訓練] → 誤差D
5回目:[訓練][訓練][訓練][訓練][テスト] → 誤差E

最終的な汎化誤差 = (A+B+C+D+E) ÷ 5

全員が1回ずつテスト役をやる。まるで日直当番みたいに。

語呂合わせ:「クロス=交代で」

クロスバリデーション → 交代でテスト役

「今日は君がテスト役ね」「明日は俺の番か」と役割を交代するイメージ。

メリット・デメリット

  • メリット:結果が安定する(運に左右されにくい)
  • デメリット:計算に時間がかかる(K回学習するから)

図解:2つの方法を比較

┌───────────────────────────────────────────────────────┐
│                  ホールドアウト法                      │
│                   「一発勝負」                         │
├───────────────────────────────────────────────────────┤
│                                                       │
│   [████████████████████][░░░░░░░░]                   │
│        訓練用              テスト用                   │
│                              ↓                        │
│                          1回だけ測定                  │
│                                                       │
│   特徴:速い、でも運次第                              │
└───────────────────────────────────────────────────────┘

┌───────────────────────────────────────────────────────┐
│              クロスバリデーション法                    │
│                「交代で本番」                          │
├───────────────────────────────────────────────────────┤
│                                                       │
│   1回目 [░░][██][██][██][██] → 誤差A                 │
│   2回目 [██][░░][██][██][██] → 誤差B                 │
│   3回目 [██][██][░░][██][██] → 誤差C                 │
│   4回目 [██][██][██][░░][██] → 誤差D                 │
│   5回目 [██][██][██][██][░░] → 誤差E                 │
│                    ↓                                  │
│              平均を取る                               │
│                                                       │
│   特徴:安定、でも時間かかる                          │
└───────────────────────────────────────────────────────┘

ちょっとブラックなたとえ話

ホールドアウト法 = 「面接1回で採用決定」

履歴書(訓練データ)は立派。面接(テスト)は1回だけ。

たまたまその日、面接官との相性が良ければ採用。悪ければ不採用。運の要素が大きい

クロスバリデーション = 「5人の面接官と順番に面接」

5人の面接官が、それぞれ違う質問をする。

1人が「この人いいね」と言っても、残り4人が「うーん...」なら、平均的には微妙という評価になる。より公平。


どっちを使う?判断基準

            スタート
               │
               ▼
    ┌─────────────────────┐
    │ データ量は十分ある? │
    └─────────────────────┘
               │
       ┌───────┴───────┐
       │               │
      YES              NO
       │               │
       ▼               ▼
┌────────────┐   ┌────────────────────┐
│ 計算時間は  │   │ クロスバリデーション│
│ 気にする?  │   │(少ないデータを     │
└────────────┘   │  有効活用)         │
       │         └────────────────────┘
   ┌───┴───┐
   │       │
  YES      NO
   │       │
   ▼       ▼
┌──────┐ ┌────────────────────┐
│ホール│ │ クロスバリデーション│
│ドアウ│ │(精度重視)         │
│ト法  │ └────────────────────┘
└──────┘

迷ったらクロスバリデーション。結果が安定するから。


まとめ

用語 一言で 覚え方
訓練誤差 カンニングできる試験の点数 答え知ってりゃ誰でも取れる
汎化誤差 初見の問題での点数 これが本当の実力
ホールドアウト法 データを分けて一発勝負 ホールド=取っておく
クロスバリデーション 交代でテストして平均 クロス=交代で

最後に

AIの評価で大事なのは、訓練誤差ではなく汎化誤差

「練習では100点だけど本番で40点」のAIより、「練習で80点、本番でも78点」のAIの方が信頼できる。

次にAIの話になったら、こう聞いてみよう。

「それ、汎化誤差はどうやって測りました?」

その一言で、あなたは「分かってる人」になれる。


語呂合わせ総まとめ

  • 訓練誤差 → カンニング野郎の点数(当てにならない)
  • 汎化誤差 → 初見勝負の点数(これが本番)
  • ホールドアウトホールド(取っておく)=一部を本番用にキープ
  • クロスバリデーションクロス(交代で)=みんなで本番を経験

この記事が役に立ったら、フォローしていただけると励みになります。

Discussion