ข้ามไปยังเนื้อหาหลัก

Overfitting vs. Underfitting: คู่มือเชิงปฏิบัติในการวินิจฉัยโมเดล

ไกด์ละเอียดเกี่ยวกับ overfitting และ underfitting ใน Machine Learning ครอบคลุมวิธีระบุสาเหตุ ทำไมถึงเกิด และวิธีแก้ผ่านสมดุล bias-variance
อัปเดตแล้ว 12 มิ.ย. 2569  · 12 นาที อ่าน

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

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

สองทิศทางนั้นคือ overfitting และ underfitting ต้องรู้ก่อนว่ากำลังเจอกับอะไรจึงจะแก้ได้ถูกทาง

ในบทความนี้ ฉันจะพาไปดูวิธีสังเกต overfitting และ underfitting ทำไมมันถึงเกิดขึ้น และขั้นตอนเชิงปฏิบัติที่จะช่วยให้หาจุดสมดุลได้

Underfitting คืออะไร?

Underfitting เกิดขึ้นเมื่อโมเดลง่ายเกินไปที่จะอธิบายสิ่งที่เกิดขึ้นจริงในข้อมูล

ลองนึกภาพว่าจะทำนายราคาบ้านด้วยกฎเดียวว่า "บ้านทุกหลังราคา $300,000" กฎนี้จะผิดแทบทุกที่ มองไม่เห็นทำเล พื้นที่ใช้สอย จำนวนห้องนอน ที่จอดรถ หรือปีที่สร้าง โมเดลไม่มีความยืดหยุ่นพอที่จะตามรูปแบบจริงได้

วิธีสังเกต underfitting เหมือนกันทุกครั้ง ความแม่นยำบนชุดฝึกต่ำ และความแม่นยำบนชุดทดสอบก็ตำ่ด้วย ทั้งสองตัวเลขแย่ แต่ประเด็นคือมันแย่ไปด้วยกัน

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

ตัวอย่าง Underfitting

ตัวอย่าง Underfitting

Overfitting คืออะไร?

Overfitting เป็นปัญหาตรงข้าม โมเดลซับซ้อนเกินไป

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

ข้อดีของ overfitting คือสังเกตได้ง่าย ความแม่นยำบนชุดฝึกดูดีมาก แต่ความแม่นยำบนชุดทดสอบย่ำแย่

นึกถึงนักเรียนที่ท่องจำคำตอบข้อสอบแบบคำต่อคำ แต่ไม่เข้าใจเนื้อหา ทำคะแนนสอบซ้อมได้ดีและมีแนวโน้มตกข้อสอบจริง

ตัวอย่าง Overfitting

ตัวอย่าง Overfitting

เปรียบเทียบ Overfitting vs Underfitting: ความต่างสำคัญ

เมื่อเห็นทั้งสองแบบแล้ว ความต่างจะยิ่งชัด Underfitting ทำงานกับข้อมูลที่เคยเห็นก็ยังไม่ดี ส่วน Overfitting ทำงานกับข้อมูลที่ไม่เคยเห็นไม่ได้

ลักษณะระหว่างการฝึกต่างกันดังนี้:

  • Underfitting จะเห็นเป็นผลงานแบน ๆ ปานกลางไปหมด — โมเดลแทบไม่เรียนรู้อะไรจากไหนเลย
  • Overfitting จะเห็นเป็นช่องว่างที่คะแนนฝึกเพิ่มขึ้นเรื่อย ๆ ขณะที่คะแนนทดสอบหยุดนิ่งหรือแย่ลงตามเวลา

สาเหตุก็สะท้อนกัน Underfitting มาจากการทำให้น้อยไป: โมเดลง่ายไป คุณลักษณะไม่พอ Overfitting มาจากการทำให้มากไป: โมเดลซับซ้อนเกิน คุณลักษณะมากเกิน

สรุปทั้งสองแบบโดยย่อ:

เปรียบเทียบ Underfitting กับ Overfitting

เปรียบเทียบ Underfitting กับ Overfitting

วิธีระบุ Overfitting และ Underfitting

การรู้ภาพรวมเชิงทฤษฎีเป็นอย่างหนึ่ง การจับให้ได้ในโมเดลของตัวเองเป็นอีกอย่างหนึ่ง

วิธีง่ายสุดคือเปรียบเทียบความคลาดเคลื่อนของชุดฝึกกับชุดทดสอบ และดูเส้นโค้งการเรียนรู้

ความคลาดเคลื่อนชุดฝึก vs ชุดทดสอบ

ตรวจเร็วสุดด้วยการแบ่งข้อมูลเป็นชุดฝึกและชุดทดสอบ ฝึกโมเดล แล้วดูความคลาดเคลื่อนของแต่ละชุด

สำหรับ underfitting ทั้งสองความคลาดเคลื่อนจะสูง โมเดลเรียนรู้ข้อมูลฝึกได้ไม่ดี และยิ่งไม่ดีบนข้อมูลที่ไม่เคยเห็น ผลลัพธ์แย่ทั้งสองด้าน

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

ภาพเปรียบเทียบความคลาดเคลื่อนชุดฝึกกับชุดทดสอบ

ภาพเปรียบเทียบความคลาดเคลื่อนชุดฝึกกับชุดทดสอบ

วิเคราะห์ช่องว่างระหว่างสองตัวเลขนี้ ช่องว่างเล็กแต่ความคลาดเคลื่อนสูง บ่งชี้ underfitting ช่องว่างใหญ่โดยความคลาดเคลื่อนฝึกต่ำแต่ทดสอบสูง บ่งชี้ overfitting ช่องว่างเล็กและค่าคลาดเคลื่อนต่ำทั้งคู่คือเป้าหมาย แปลว่าโมเดลเรียนรู้ตัวแทนข้อมูลจริงได้

เส้นโค้งการเรียนรู้

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

ในโมเดลที่ underfit ทั้งสองเส้นจะราบเร็วที่ค่าคลาดเคลื่อนสูง การเติมข้อมูลไม่ช่วย เพราะโมเดลแทนรูปแบบไม่ได้ตั้งแต่แรก เส้นทั้งสองจึงยังสูง

เส้นโค้งของโมเดลที่ Underfit

เส้นโค้งของโมเดลที่ Underfit

ในโมเดลที่ overfit เส้นชุดฝึกจะลดลงเกือบศูนย์ ขณะที่เส้นชุดตรวจสอบยังสูง ช่องว่างระหว่างกันกว้างขึ้นเมื่อฝึกต่อไป นั่นคือภาพของ overfitting บนกราฟ

เส้นโค้งของโมเดลที่ Overfit

เส้นโค้งของโมเดลที่ Overfit

โมเดลที่สุขภาพดีคือทั้งสองเส้นลดลงและมาบรรจบกันที่ความคลาดเคลื่อนต่ำ โดยมีช่องว่างเล็ก

ทำไม Overfitting และ Underfitting จึงเกิดขึ้น

เมื่อรู้วิธีสังเกตแล้ว คำถามถัดไปคือทำไมมันถึงเกิด ทั้งสองมาจากความไม่สอดคล้องระหว่างโมเดลกับปัญหา แต่ไปคนละทิศทาง

สาเหตุของ underfitting

Underfitting มักย้อนกลับไปหาเหตุหลักสามข้อ

  • โมเดลง่ายเกินไป: โมเดลเชิงเส้นไม่สามารถแทนความสัมพันธ์ที่โค้งได้ โมเดลขาดศักยภาพที่ปัญหาต้องการจริง
  • คุณลักษณะไม่เพียงพอ: ต่อให้โมเดลเก่งก็ยัง underfit ได้ถ้าให้ข้อมูลนำเข้าผิด ๆ ทำนายราคาบ้านจากรหัสไปรษณีย์อย่างเดียวไม่สมเหตุผล และพลาดข้อมูลสำคัญอย่างพื้นที่ใช้สอย ห้องนอน สภาพ อายุ และขนาดที่ดิน โมเดลจึงไม่มีอะไรที่ใช้การได้
  • ฝึกไม่พอ: โมเดลยังไม่มีความลึก รอบการฝึก อีพอค หรือการปรับ learning rate เพียงพอให้ได้วิธีแก้ที่ดี การฝึกหยุดเร็วเกินไป

สาเหตุของ overfitting

Overfitting มาจากให้เสรีภาพกับโมเดลมากเกินกว่าที่ข้อมูลต้องการ

  • โมเดลซับซ้อนเกินไป: โครงข่ายประสาทลึกที่มีพารามิเตอร์นับล้านแต่ฝึกกับชุดข้อมูลเล็ก มีพื้นที่ให้ท่องจำมากมาย ศักยภาพเกินกว่าที่ปัญหาต้องการ
  • คุณลักษณะมากเกินไป: เมื่อมีคุณลักษณะมากกว่ารูปแบบที่มีนัยสำคัญในข้อมูล โมเดลจะเรียนรู้ความสัมพันธ์ที่บังเอิญมีในชุดฝึก แต่ไม่สามารถทั่วไปได้
  • ชุดข้อมูลเล็กเกินไป: เมื่อข้อมูลฝึกจำกัด แม้โมเดลไม่ซับซ้อนมากก็สามารถท่องจำทั้งชุดได้ ตัวอย่างมีไม่พอให้โมเดลเรียนรู้ให้ทั่วไป
  • ฝึกนานเกินไป: โมเดลยังคงปรับน้ำหนักหลังจากเรียนรู้รูปแบบจริงแล้ว และเริ่มฟิตกับสัญญาณรบกวน แทนที่จะช่วย กลับยิ่งทำให้แย่ลง

สมดุล Bias-Variance

สมดุลระหว่าง bias และ variance อธิบายว่าทำไมประสิทธิภาพของโมเดลจึงขึ้นอยู่กับการหาจุดหวาน ที่โมเดลทั่วไปได้ดีกับข้อมูลที่ไม่เคยเห็น โดยไม่ง่ายเกินไปหรือฟิตกับชุดฝึกเกินไป

Bias สูง

Bias คือความคลาดเคลื่อนจากสมมติฐานของโมเดลต่อข้อมูล โมเดลที่มี bias สูงจะมีสมมติฐานที่แข็งและง่ายเกินไป ไม่สามารถแทนความซับซ้อนจริงในข้อมูลได้

นี่แหละคือ underfitting โมเดลแข็งตัวเกินไปที่จะฟิตกับรูปแบบ จึงทำนายคลาดเคลื่อน ไม่ว่าจะให้ข้อมูลมากแค่ไหน

ถ้าฝึกโมเดลที่มี bias สูง 100 ครั้งบนตัวอย่างต่างกัน ทั้ง 100 รุ่นจะทำผิดคล้าย ๆ กัน การทำนายกระจุกอยู่รอบคำตอบที่ผิด

Variance สูง

Variance คือความคลาดเคลื่อนจากที่โมเดลไวต่อข้อมูลฝึกมากเกินไป โมเดลที่มี variance สูงจะเก็บทุกรูปแบบเล็ก ๆ ซึ่งมักเป็นสัญญาณรบกวน

นี่คือ overfitting โมเดลฟิตกับชุดฝึกอย่างใกล้ชิด แต่เปลี่ยนข้อมูลฝึกนิดเดียว การทำนายก็เปลี่ยนมาก

ถ้าฝึกโมเดลที่มี variance สูง 100 ครั้งบนตัวอย่างต่างกัน คุณจะได้ 100 โมเดลที่ต่างกันมาก การทำนายกระจัดกระจาย แม้ป้อนข้อมูลเดียวกัน

สมดุลที่ต้องแลก

ไม่สามารถกำจัด bias หรือ variance ได้หมด มีแต่ขยับสมดุลระหว่างกัน

ลด bias ด้วยการทำโมเดลให้ซับซ้อนขึ้น จะทำให้ variance สูงขึ้น ลด variance ด้วยการทำโมเดลให้เรียบง่ายขึ้น จะทำให้ bias สูงขึ้น เป้าหมายคือตรงกลางที่ความผิดพลาดรวมต่ำสุด

ตัวอย่างสมดุล Bias-Variance

ตัวอย่างสมดุล Bias-Variance

วิธีแก้ Underfitting

เมื่อวินิจฉัยได้ว่าเป็น underfitting มีหลายวิธีแก้ที่ช่วยเพิ่มศักยภาพของโมเดลให้แทนรูปแบบในข้อมูลได้ดีขึ้น

  • เพิ่มความซับซ้อนของโมเดล: ขยับไปใช้โมเดลที่ยืดหยุ่นขึ้น จากการถดถอยเชิงเส้นไปสู่พหุนาม หรือจากต้นไม้ตื้นไปเป็นต้นไม้ลึกขึ้น
  • เพิ่มคุณลักษณะ: เพิ่มอินพุตที่มีคุณค่า สร้างตัวแปรปฏิสัมพันธ์ คุณลักษณะพหุนาม หรือคุณลักษณะเฉพาะโดเมนที่โมเดลยังไม่เข้าถึง
  • ฝึกให้นานขึ้น: โมเดลอาจยังไม่มีเวลาพอให้ลู่เข้า เพิ่มอีพอคหรือปรับกำหนดการเรียนรู้
  • ลดการทำให้เป็นปกติ (regularization): การทำให้เป็นปกติทำให้โมเดลง่าย ซึ่งตรงข้ามกับสิ่งที่ underfitting ต้องการ ลดความแรงของ regularization หรือตัดออก เพื่อให้โมเดลมีอิสระมากขึ้น

คุณลักษณะที่ดีไม่กี่ตัวมักมีผลมากกว่าการเปลี่ยนสถาปัตยกรรม ลองตรงนี้ก่อนเปลี่ยนตัวโมเดล

วิธีแก้ Overfitting

การแก้ overfitting ต้องทำตรงข้าม ต้องจำกัดโมเดลเพื่อหยุดการท่องจำข้อมูลฝึก

  • เก็บข้อมูลเพิ่ม: ชุดข้อมูลใหญ่ขึ้นทำให้โมเดลท่องจำได้ยากขึ้น ตัวอย่างที่มากขึ้นบังคับให้หาลวดลายที่ใช้ได้ทั้งชุด ไม่ใช่แค่ไม่กี่แถว
  • ใช้ regularization: L1 และ L2 regularization เพิ่มโทษสำหรับน้ำหนักที่ใหญ่ ช่วยกันไม่ให้โมเดลพึ่งกับคุณลักษณะใดเพียงตัวเดียวมากเกินไป วิธีนี้เชื่อถือได้มาก
  • ลดความซับซ้อนของโมเดล: ถ้าโมเดลใหญ่เกินสำหรับข้อมูล ให้ย่อลง ใช้พารามิเตอร์น้อยลง ต้นไม้ตื้นลง หรือเครือข่ายเล็กลง
  • ใช้การตรวจสอบไขว้ (cross-validation): Cross-validation ให้ภาพที่ตรงไปตรงมามากขึ้นว่าโมเดลจะทำงานกับข้อมูลที่ไม่เคยเห็นอย่างไร โดยได้ชุดแบ่งฝึก-ทดสอบหลายแบบจากชุดข้อมูลเดียว
  • ใช้ dropout สำหรับโครงข่ายประสาท: Dropout ปิดการทำงานของนิวรอนบางส่วนแบบสุ่มระหว่างการฝึก บังคับให้เครือข่ายเรียนรู้ตัวแทนซ้ำซ้อน ลดการพึ่งพานิวรอนตัวใดตัวหนึ่ง
  • หยุดฝึกก่อนเวลา (early stopping): เฝ้าดูความคลาดเคลื่อนชุดตรวจสอบและหยุดเมื่อเริ่มเพิ่มขึ้น แม้ความคลาดเคลื่อนชุดฝึกยังลดลง วิธีนี้เรียกว่า early stopping และทำได้ง่าย

Regularization และ early stopping มักเป็นสิ่งแรกที่ควรลอง ไม่เสียค่าใช้จ่ายและมักช่วยได้เสมอ

Overfitting และ Underfitting ในโมเดลต่าง ๆ

ตระกูลโมเดลต่าง ๆ แสดง underfitting และ overfitting ในแบบของตนเอง ต่อไปนี้คือสามกลุ่มที่พบบ่อยและวิธีที่ล้มเหลวได้ทั้งสองทิศทาง

โมเดลเชิงเส้น

  • Underfit: โมเดลเชิงเส้นสมมติความสัมพันธ์เป็นเส้นตรง เมื่อรูปแบบจริงเป็นเส้นโค้ง โมเดลจะตามไม่ทัน ไม่ว่ามีข้อมูลมากแค่ไหน
  • Overfit: เมื่อเพิ่มพอของพหุนามหรือตัวแปรปฏิสัมพันธ์ แม้การถดถอยเชิงเส้นก็ท่องจำสัญญาณรบกวนได้ วิธีอย่าง Ridge และ Lasso มีไว้จัดการเรื่องนี้เป็นหลัก

ต้นไม้ตัดสินใจ

  • Underfit: ต้นไม้ตื้นทำได้ไม่กี่การแบ่ง ด้วยการตัดสินใจสองสามครั้ง จึงแทนรูปแบบที่ต้องใช้ความละเอียดอ่อนไม่ได้
  • Overfit: ต้นไม้ลึกมีแนวโน้ม overfit ต้นไม้ที่แบ่งไปเรื่อยจนแต่ละใบมีเพียงตัวอย่างฝึกหนึ่งจุด จะได้ความแม่นยำชุดฝึกสมบูรณ์แบบแต่ชุดทดสอบแย่ นี่จึงมีพารามิเตอร์อย่าง max_depth, min_samples_split และการตัดแต่ง (pruning)

โครงข่ายประสาทเทียม

  • Underfit: เครือข่ายที่เล็กเกินไปสำหรับปัญหาจะ underfit เช่นเดียวกับกรณีฝึกหยุดเร็วเกินไป หรือตัวปรับเหมาะ (optimizer) ติดจุดติด
  • Overfit: พบบ่อยกว่าในดีปเลิร์นนิง เครือข่ายที่มีพารามิเตอร์นับล้านสามารถท่องจำได้แม้ชุดข้อมูลใหญ่ หากมีอีพอคมากพอ Dropout, weight decay, data augmentation และ early stopping ถูกสร้างมาเพื่อป้องกันสิ่งนี้

ตัวอย่างเพิ่มเติมของ Overfitting vs Underfitting

ต่อไปจะพาผ่านสองตัวอย่างคลาสสิกพร้อมโค้ด เพื่อให้เห็นรูปแบบเหล่านี้ชัดเจน

การถดถอยพหุนาม

คลื่นไซน์ที่มีสัญญาณรบกวนเป็นกรณีทดสอบที่ดี เมื่อฟิตพหุนามระดับต่างกัน จะเห็นพฤติกรรมของโมเดลเปลี่ยนไป

import numpy as np

# Data
np.random.seed(7)
X = np.linspace(0, 1, 30)
y_true = np.sin(2 * np.pi * X)
y = y_true + np.random.normal(0, 0.2, X.shape)

# Fit polynomials of three degrees
X_smooth = np.linspace(0, 1, 300)
degrees = [1, 3, 15]

for degree in degrees:
    coefs = np.polyfit(X, y, deg=degree)
    y_pred = np.polyval(coefs, X_smooth)

ตัวอย่างการถดถอยพหุนาม

ตัวอย่างการถดถอยพหุนาม

ดีกรี 1 เป็นเส้นตรงซึ่ง underfit ตามโค้งไม่ได้เลย ดีกรี 3 แทนรูปร่างจริง ซึมซับสัญญาณรบกวนบ้างแต่ยังใกล้ความจริง ดีกรี 15 overfit เพราะส่ายผ่านทุกจุดฝึกและเกิดการสั่นไหวใหญ่ระหว่างจุด

ต้นไม้ตัดสินใจที่ระดับความลึกต่างกัน

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

import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# Data
np.random.seed(11)
X = np.linspace(0, 10, 250).reshape(-1, 1)
y = np.sin(X).ravel() + np.random.normal(0, 0.3, 250)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=0
)

depths = range(1, 21)
train_errors = []
test_errors = []

for depth in depths:
    tree = DecisionTreeRegressor(max_depth=depth, random_state=0)
    tree.fit(X_train, y_train)
    train_errors.append(mean_squared_error(y_train, tree.predict(X_train)))
    test_errors.append(mean_squared_error(y_test, tree.predict(X_test)))

ตัวอย่างต้นไม้ตัดสินใจ

ตัวอย่างต้นไม้ตัดสินใจ

ความผิดพลาดชุดฝึกลดลงเมื่อความลึกมากขึ้น จนเข้าใกล้ศูนย์เมื่อแต่ละใบมีจุดฝึกเพียงจุดเดียว ความผิดพลาดชุดทดสอบลดลงช่วงแรกเมื่อจับความสัมพันธ์จริงได้ แล้วเพิ่มขึ้นอีกเมื่อการแบ่งลึกเริ่มฟิตกับสัญญาณรบกวน ค่าต่ำสุดอยู่ที่ความลึกซึ่งสร้างสมดุลระหว่างสองด้าน

ข้อผิดพลาดที่พบบ่อยเมื่อวินิจฉัยประสิทธิภาพโมเดล

แม้เลือกเมตริกถูก ก็ยังสรุปผิดได้ง่าย นี่คือสิ่งที่ไม่ควรทำเมื่อประเมินประสิทธิภาพโมเดล:

  • ดูเฉพาะความแม่นยำชุดฝึก: ความแม่นยำชุดฝึกบอกแค่ว่าโมเดลฟิตกับข้อมูลที่เคยเห็นได้ดีแค่ไหน ไม่ได้บอกว่าจะทำงานกับอินพุตใหม่อย่างไร ควรวัดบนชุดแยกเสมอ ก่อนสรุปใด ๆ
  • มองข้ามข้อมูลตรวจสอบ (validation): ข้อมูลตรวจสอบใช้ปรับแต่งตัวเลือกของโมเดล เช่น สถาปัตยกรรม ไฮเปอร์พารามิเตอร์ และจุดหยุดฝึก โมเดลจะ overfit ทั้งชุดฝึกและชุดทดสอบได้หากใช้ซ้ำมากเกินไป
  • คิดว่าความซับซ้อนมากกว่าย่อมดีกว่าเสมอ: โมเดลใหญ่กว่าไม่ได้แปลว่าเก่งกว่าอัตโนมัติ หากข้อมูลมีขนาดเล็กหรือความสัมพันธ์เรียบง่าย ความซับซ้อนจะยิ่งลดประสิทธิภาพ เริ่มจากของง่าย และเพิ่มศักยภาพเฉพาะเมื่อการวินิจฉัยบ่งชี้ว่าต้องการ
  • สับสนระหว่างสัญญาณรบกวนกับสัญญาณจริง: ไม่ใช่ทุกรูปแบบในข้อมูลฝึกที่ควรเรียนรู้ ความผันผวนแบบสุ่ม อคติจากการสุ่มตัวอย่าง ค่าผิดปกติ และสิ่งแปลกปลอมจากการเก็บข้อมูล อาจดูมีความหมายสำหรับโมเดลที่ยืดหยุ่น หากอธิบายไม่ได้ว่าทำไมความสัมพันธ์นั้นควรมีอยู่ จงระวังไว้ก่อน

ควรตรวจทั้งสี่ข้อเสมอ ก่อนตัดสินใจใช้โมเดล ความล้มเหลวในการผลิตส่วนใหญ่เกี่ยวข้องกับเรื่องเหล่านี้อย่างน้อยหนึ่งข้อ

สรุป

Underfitting และ overfitting คือสองวิธีที่โมเดลล้มเหลวในการทั่วไป แบบหนึ่งง่ายเกินไปจนเรียนรู้รูปแบบไม่ได้ อีกแบบพยายามเรียนรู้ทุกจุดในชุดข้อมูล

เป้าหมายจริงของการฝึกคือหาจุดกึ่งกลางที่ bias และ variance สมดุล และความผิดพลาดรวมต่ำสุด

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

ต้องการเรียนรู้แนวคิดดาต้าไซน์ขั้นสูงและพร้อมทำงานในปี 2026 หรือไม่? ลงทะเบียนใน Machine Learning Engineer track เพื่อก้าวจากพื้นฐานสู่ MLOps

FAQs

ความแตกต่างระหว่าง overfitting และ underfitting คืออะไร?

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

จะรู้ได้อย่างไรว่ามี overfitting หรือ underfitting?

เปรียบเทียบความคลาดเคลื่อนชุดฝึกกับชุดทดสอบ หากทั้งสองสูง แสดงว่า underfitting หากความคลาดเคลื่อนชุดฝึกต่ำมากแต่ชุดทดสอบสูง แสดงว่า overfitting เส้นโค้งการเรียนรู้ก็ช่วยได้ เพราะโมเดลที่ overfit จะมีเส้นฝึกกับตรวจสอบแยกจากกัน ขณะที่โมเดลที่ underfit เส้นทั้งสองจะแบนที่ค่าคลาดเคลื่อนสูง

สมดุลระหว่าง bias กับ variance คืออะไร?

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

การเก็บข้อมูลเพิ่มจะแก้ overfitting ได้ไหม?

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

ใช้ early stopping เพื่อป้องกัน overfitting ในโครงข่ายประสาทได้ไหม?

ได้ และเป็นหนึ่งในวิธีที่ทำง่ายที่สุด เฝ้าดูความคลาดเคลื่อนชุดตรวจสอบระหว่างฝึก และหยุดเมื่อเริ่มคงที่หรือเพิ่มขึ้น แม้ว่าความคลาดเคลื่อนชุดฝึกจะยังลดลง วิธีนี้จะจับจุดที่โมเดลเรียนรู้รูปแบบจริงแล้วและกำลังเริ่มฟิตกับสัญญาณรบกวน เฟรมเวิร์กดีปเลิร์นนิงส่วนใหญ่มี callback สำหรับ early stopping มาให้

หัวข้อ

เรียนกับ DataCamp

Courses

Feature Engineering for Machine Learning in Python

4 ชม.
38.8K
Create new features to improve the performance of your Machine Learning models.
ดูรายละเอียดRight Arrow
เริ่มหลักสูตร
ดูเพิ่มเติมRight Arrow