訓練誤差と汎化誤差 ─ カンニング野郎は本番に弱い
この記事の目的
「このモデル、訓練誤差は低いけど汎化誤差が高いね」
会議でデータサイエンティストがそう言った。あなたは「ふむふむ」と頷いたけど、正直、何が問題なのかピンとこなかった。
この記事を読めば、その一言が**「やばい」**という意味だとわかるようになる。
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