Training・Validation・Test を理解する

モデルが学習・調整・評価される仕組みを完全ガイド**

機械学習・ディープラーニングを学ぶ上で最も重要な基礎のひとつが、
Training(学習)・Validation(検証)・Testing(テスト) の違いと役割を正しく理解することです。

この3つのプロセスを正しく使い分けることで、
モデ ルはただ「暗記する」のではなく、
実際のデータにも対応できる「汎化性能の高い」モデルになります。

この記事では、これら3つのステップをわかりやすく解説し、
実際のMLプロジェクトでどのように活用するかを完全に理解できるようにまとめています。


🔥 第1章 — Training:モデルが実際に「学習」するフェーズ

Training(学習)は、モデルがデータからパターンを学び、
重み(weights)を更新していくプロセスです。

1つのエポック(Epoch)では:

  1. Forward Pass:モデルが予測を行う
  2. Loss 計算:誤差を求める
  3. Backpropagation:勾配を計算
  4. Optimizer が重みを更新
  5. これを何十〜何百エポックも繰り返す

✔ Training の目的

  • データの特徴を学習する
  • 重みを調整して精度を上げる
  • Training Loss を下げる

✔ PyTorch の例:

model.train()
for x, y in train_loader:
    optimizer.zero_grad()
    preds = model(x)
    loss = criterion(preds, y)
    loss.backward()
    optimizer.step()

Training は、モデルが「賢くなっていく」フェーズです。


🔍 第2章 — Validation:学習途中の性能をチェックする

Validation(検証)は 学習ではありません
重みを更新せず、ただ「どれくらい良く学習できているか」を確認するフェーズです。

Validation では:

  • model.eval() を使用
  • torch.no_grad()(勾配なし → 重み更新なし)
  • Validation Loss を計測
  • Accuracy や F1-score を計算
  • 最も性能が良いモデルを判定

これにより、以下が判断できます:

  • モデルが 過学習(Overfitting) していないか
  • ハイパーパラメータ(LR、ドロップアウトなど)が適切か
  • どのエポックのモデルが「ベスト」なのか

✔ PyTorch の例

model.eval()
with torch.no_grad():
    for x, y in val_loader:
        preds = model(x)
        val_loss += criterion(preds, y).item()

Validation は、モデル選択のために不可欠なプロセスです。


⭐ 第3章 — 「各エポックで Validation → 最良モデルを保存」

Training と Validation を毎エポック繰り返すことで、
どのエポックのモデルが最も良い性能を持つか判断できます。

例:

エポック Train Loss Val Loss 動作
1 0.50 0.42 保存
2 0.40 0.36 保存
3 0.32 0.30 保存
4 0.28 0.35 保存しない
5 0.26 0.31 保存しない

最良のモデルは エポック3 です。
これは、後半で過学習が進んでも「良い時点」を残しておくためです。


⚙️ 第4章 — Early Stopping:改善が止まったら自動で学習停止

Early Stopping を使うと、Validation Loss が一定期間改善されないと
自動的に学習を終了することができます。

例:

patience = 5

意味:

👉 5エポック連続で改善しなければストップ

これにより:

  • 無駄な学習を防ぐ
  • 過学習を抑える
  • トレーニング時間を短縮

🧪 第5章 — Testing:最終的な性能を確認する「期末試験」

Test(テスト)は 1回だけ 行います。
最良モデル(Validation が最も良かったもの)を用いて評価します。

Test Set の目的:

✔ 最終的な汎化性能を測る
✔ 現実のデータでどれくらい通用するか確認
✔ モデル間の比較

⚠️ 最重要ルール

Test の結果を使ってモデルを調整してはいけない。
→ それはもはやテストではなくなる。


📊 第6章 — 全体のワークフロー(Mermaid.js)

flowchart TD

    A[Dataset] --> B[Split Train / Validation / Test]

    B --> C[Training Loop<br>Forward + Backprop + Update]
    C --> D[Validation Loop<br>No Gradient]

    D --> E{"Validation がベスト?"}
    E -->|"はい"| F["最良モデルを保存"]
    E -->|"いいえ"| G["保存しない"]

    F --> H["学習を継続"]
    G --> H["学習を継続"]

    H --> I{"Early Stopping または学習終了?"}
    I -->|"続く"| C
    I -->|"終了"| J[ベストモデルをロード]

    J --> K[Test Evaluation]
    K --> L[最終性能の取得]

この図が、ML モデル学習の全体像そのものです。


🧠 まとめ

フェーズ 役割 学習する?
Training 重みを更新し学習する ✔ はい
Validation モデル選択・過学習チェック ❌ いいえ
Testing 最終性能評価 ❌ いいえ

✨ 黄金ワークフロー:

Training → Validation → 最良モデル保存 → Test 1回

これにより、安定して汎化性能の高いモデルが手に入ります。


Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products