เข้าใจ Training, Validation และ Testing ใน Machine Learning

คู่มืออธิบายครบวงจรตั้งแต่การเรียนรู้จนถึงประเมินผลจริง**

ในงาน Machine Learning หรือ Deep Learning การเข้าใจความแตกต่างของ Training, Validation, และ Testing ถือเป็นพื้นฐานที่สำคัญที่สุด เพราะทั้งสามส่วนนี้ทำให้โมเดล:

  • เรียนรู้ได้ดี
  • ปรับแต่งได้เหมาะสม
  • ทดสอบความสามารถจริงได้อย่างแม่นยำ

บทความนี้จะพาคุณเข้าใจกระบวนการทั้งหมด — ตั้งแต่การฝึกโมเดล การตรวจสอบว่าโมเดลกำลังเรียนดีหรือไม่ ไปจนถึงการประเมินผลขั้นสุดท้ายก่อนใช้งานจริง


🔥 ส่วนที่ 1 — Training: ขั้นตอนที่โมเดล “เรียนรู้จริง”

Training คือกระบวนการที่โมเดลเรียนรู้รูปแบบจากข้อมูล

ภายใน 1 Epoch:

  1. โมเดลทำ Forward Pass เพื่อทำนาย
  2. คำนวณค่า Loss
  3. ใช้ Backpropagation เพื่อหาค่า Gradient
  4. Optimizer อัปเดตน้ำหนัก
  5. ทำซ้ำหลายร้อยหรือหลายพันรอบ

✔ เป้าหมายของ Training

  • เรียนรู้รูปแบบข้อมูล
  • ปรับน้ำหนักให้เหมาะสม
  • ลดค่า Loss บน Training Set

✔ ตัวอย่าง PyTorch

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

Training คือเหตุผลที่โมเดล “ฉลาดขึ้น” เมื่อผ่านหลาย ๆ Epoch


🔍 ส่วนที่ 2 — Validation: ตรวจสอบการเรียนรู้ระหว่างทาง

Validation ไม่ใช่การฝึก
โมเดลจะไม่อัปเดตน้ำหนัก แต่ใช้เพื่อวัดว่าโมเดลกำลังเรียนรู้ได้ดีหรือไม่

Validation ช่วยให้เราตอบคำถามว่า:

  • โมเดลกำลัง Overfitting หรือไม่?
  • ต้องปรับ Learning Rate / Dropout หรือไม่?
  • โมเดล Epoch ไหนที่ดีที่สุด?

ระหว่าง Validation:

  • ใช้ model.eval()
  • ใช้ torch.no_grad() (ไม่มี Gradient → ไม่เรียนรู้)
  • คำนวณ Validation Loss
  • ติดตามค่า Accuracy

✔ ตัวอย่าง PyTorch

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

✔ ทำไม Validation สำคัญ?

  • ป้องกัน Overfitting
  • ช่วยเลือกโมเดลที่ดีที่สุด
  • มีผลต่อการปรับ Hyperparameters
  • ไม่พึ่งพา Training Loss เพียงอย่างเดียว

⭐ ส่วนที่ 3 — “Validate ทุก Epoch → บันทึกโมเดลที่ดีที่สุด”

ทุกครั้งที่จบ Epoch เราจะทดสอบโมเดลกับ Validation Set

ถ้า Validation Loss “ดีที่สุดตั้งแต่เริ่มเทรน” → บันทึกโมเดลไว้

ตัวอย่าง:

Epoch Train Loss Val Loss Action
1 0.50 0.42 save
2 0.40 0.36 save
3 0.32 0.30 save
4 0.28 0.35 skip
5 0.26 0.31 skip

โมเดลที่ดีที่สุดคือ Epoch 3 แม้ว่า Epoch 5 จะเทรนนานกว่า

นี่ช่วยป้องกันโมเดลที่ Overfit ใน Epoch หลัง ๆ


⚙️ ส่วนที่ 4 — Early Stopping (หยุดเทรนเมื่อไม่มีพัฒนาการ)

เราใช้ Early Stopping เพื่อประหยัดเวลาและหลีกเลี่ยง Overfitting

ตัวอย่าง:

patience = 5

แปลว่า:

👉 ถ้า Val Loss ไม่ดีขึ้นภายใน 5 Epoch ติดต่อกัน → หยุดเทรนเลย

ทำให้เราไม่ต้องเสียเวลาเทรนไปเรื่อย ๆ โดยไม่จำเป็น


🧪 ส่วนที่ 5 — Testing: การประเมินผลขั้นสุดท้าย

Test Set ใช้ เพียงครั้งเดียว หลังจากเลือกโมเดลที่ดีที่สุดแล้ว

ใช้เพื่อวัด:

  • ความแม่นยำจริง
  • ความสามารถในการ Generalize
  • ประสิทธิภาพในโลกจริง

⚠️ กฎสำคัญ

ห้าม ปรับโมเดลโดยดูผลจาก Test Set
เพราะ Test Set ต้อง “ไม่เคยถูกใช้มาก่อน”


📊 ส่วนที่ 6 — Workflow ทั้งหมด (Mermaid.js Diagram)

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{Best Validation<br>Performance?}
    E -->|"ใช่"| F[Save Best Model Checkpoint]
    E -->|"ไม่ใช่"| G[Skip Saving]

    F --> H[Continue Training]
    G --> H[Continue Training]

    H --> I{Training Finished<br>or Early Stopping?}
    I -->|"ไม่จบ"| C
    I -->|"จบแล้ว"| J[Load Best Checkpoint]

    J --> K[Test Set Evaluation]
    K --> L[Final Performance]

ไดอะแกรมนี้แสดงขั้นตอนทั้งหมดตั้งแต่เริ่มเทรนจนถึงประเมินผลจริง


🧠 สรุปสั้น ๆ

ขั้นตอน หน้าที่ เรียนรู้?
Training เรียนรู้จากข้อมูล ✔ ใช่
Validation ตรวจสอบระหว่างเทรน เลือกโมเดลที่ดีที่สุด ❌ ไม่
Testing ประเมินผลขั้นสุดท้าย ❌ ไม่

Workflow ทองคำของ ML:

เทรน → วาลิเดต → บันทึกโมเดลดีที่สุด → เทสครั้งเดียว

Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products