Overfitting Underfitting วิธีหลีกเลี่ยงและการป้องกันทั้ง 7

Image placeholder
แวะมาทักทายกันได้


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

หลายๆคนน่าจะรู้จักคำว่า overfitting และ underfitting กันมาบ้างแล้ว 

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

คำว่า Underfitting หมายถึง ถ้านำ Model หรือ AI ไปทำนาย ผลลัพท์ที่ได้จะไม่ถูกต้อง ไม่ใกล้เคียงกับค่าที่เฉลยและไม่ตรงกับคำตอบที่แท้จริงเลย

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

ดังนั้นเวลาที่สอน AI หรือ Model นั้นจะต้องมีข้อมูลที่ถูกแบ่งออกเป็นอย่างน้อย 2 ชุด คือ Traning Datasets และ Test Datasets หรือ เทคนิคในการป้องกันบางเทคนิคจะใช้ ข้อมูล 3 ชุด คือ Traning Datasets Test Datasets และ Validation Datasets


เทคนิควิธีป้องกัน Overfitting และ Underfitting

1. Hold Out

อย่างที่ได้เกริ่นไปคร่าวๆ แล้วสำหรับเทคนิคนี้ คือ การแบ่งข้อมูลออกเป็น 2 ชุด หรือ 3 ชุด คือ Traning Datasets Test Datasets และ Validation Datasets โดยเมื่อ Model ที่ถูกฝึกด้วย Training Datasets เรียบร้อยแล้วนั้นจะต้องมาทดสอบความผิดพลาดจากชุดข้อมูล Test Datasets โดยที่ Model ที่สามารถทำงานได้ดีนั้น บนชุดข้อมูลทดสอบที่ Model ไม่เคยเห็น นั่นแสดงว่า Model มีความเป็น Generalization มากพอที่จะทำงานกับข้อมูลที่ไม่เคยเห็นได้ แสดงให้เห็นว่า Model จะไม่เกิด Overfitting กับข้อมูลจริง

2. Cross Validation 

เป็นเทคนิคการแบ่งข้อมูลเช่นเดียวกันกับวิธี Hold out แต่ซับซ้อนกว่า คือ ชุดข้อมูลจะถูกแบ่งออกเป็นชุดย่อยๆ จำนวน K ชุดและทำงานทั้งหมด K รอบ โดยในแต่ละรอบชุดข้อมูลทุกส่วนจะมีโอกาส เป็นทั้งชุด Training Dataset และ Test Datasets วิธีการนี้สามารถหลีกเลี่ยงการ Overfitting ได้เพราะจะไม่ยึดติดข้อมูลชุดใดชุดหนึ่งเป็นหลัก

3. Data Augmentation

อีกหนึ่งวิธีที่จะช่วยลดการ Overfitting คือ การเพิ่มจำนวนของชุดข้อมูลสอน (Training Datasets) เพื่อเพิ่มความหลากหลายในการเรียนรู้ของ Model ซึ่งจะลดโอกาสที่จะเกิด Overfitting ลดการจำของ Model ส่วนใดส่วนหนึ่งมากเกินไป แต่ในความเป็นจริง เราอาจจะไม่สามารถหาชุดข้อมูลสอนมาเพิ่มเติมได้ เพราะข้อจำกัด ในการเก็บข้อมูล เนื่องจากความยากและใช้เวลามาก ทั้งต้นทุนในการจัดเก็บหรือใช้วิธีต่างๆ ที่ต้องใช้เงินทุน ซึ่งอีกแนวทางหนึ่งคือ การ Mocking Data หรือ การทำ Data Augmentation ขึ้นมาโดยการจำลองข้อมูลที่ใกล้เคียงกับข้อมูลจริงขึ้นมาแล้วเพิ่มเข้าไปในข้อมูลชุดสอน เช่น การปรับแต่งข้อมูลเดิมในรูปถ่ายโดยการ กลับรูปภาพ การหมุนรูปภาพ ปรับขนาด เท่านี้ก็จะมีจำนวนข้อมูลเพิ่มขึ้นเพื่อนำมาฝึก Model ของเราได้แล้ว

4. Feature Seletion 

ถ้าจำนวนข้อมูลที่สอนนั้นมีน้อยแต่ในขณะเดียวกันนั้นกลับมี Feature ที่มาก (จำนวน Feature หมายถึง จำนวน Column ในตารางที่ใช้เก็บข้อมูล) ซึ่งจะทำให้มีความเสี่ยงสูงอยู่ 2 ประเภท คือ ประเภทแรก Model ไม่สามารถเรียนรู้ได้เนื่องจากข้อมูลมีน้อยเกินไป ไม่สามารถหาความสัมพันธ์ ภายในข้อมูลได้อย่างมีประสิทธิภาพ และประเภทที่สอง Model พยายามจำรูปแบบมากเกินไป จากจำนวนข้อมูลที่มีอยู่อย่างจำกัด ทำให้เกิด Overfitting ได้

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

5. L1/L2 Regularization 

L1 และ L2 Regularization เป็นเทคนิคในการควบคุมการเรียนรู้ของ Model โดยเฉพาะ Model ที่มีความซับซ้อนมากๆ ซึ่งเทคนิคนี้จะเป็นการกำหนด Penalty (การลงโทษ) เข้าไปใน Cost Function ในระหว่างที่ Model เรียนรู้ จะทำให้ค่า Coefficients ของฟังก์ชันมีค่าเข้าใกล้ศูนย์ ทำให้ Model หลี่กเลี่ยงการ Overfitting ได้ โดยเฉพาะค่า Noise ต่างๆ

6. Dropout และ Remove Layer

เทคนิคนี้จะใช้ใน Model ที่มีความซับซ้อนสูงอย่างเช่น Deep Learning โครงข่ายประสาทเทียมที่ประกอบไปด้วย Layer หลายๆ ชั้นประกอบกันอย่างซับซ้อน ซึ่งอาจจะเกิด Overfitting ขึ้นได้ สิ่งที่จะต้องทดลองดูเมื่อเกิดการ Overfitting คือ การลดทอนความซับซ้อนนั้น ในส่วนของ Dropout นั้นจะเป็นการตัด Neural บาง Node ออกไประหว่างที่เรียนรู้โดยกำหนดน้ำหนักของ Neural ให้เป็นศูนย์ ซึ่งจะป้องกันการ Train Neural ตัวใดตัวหนึ่งมากเกินไปจนเกิดการรู้จำเฉพาะตัวนั้นๆ เพื่อลดโอกาส Overfitting ขึ้นได้

7. Early Stopping

อย่างที่อธิบายที่ผ่านๆมา การเกิด Overfitting และ Model เกิดการเรียนรู้จำมากเกินไป เนื่องจากการสอนหลายๆรอบ เพื่อให้ค่า Error ลดน้อยลงมากที่สุดมีเทคนิคหนึ่งที่จะช่วยป้องกันไม่ให้เกิด Overfitting คือ การหยุดสอนไปเลย หยุดอย่างไรนั้นจะอธิบายต่อว่า เทคนิคนี้เกิดจาก การแบ่งข้อมูลเป็น 3 ชุดก่อน คือ Traning Datasets Test Datasets และ Validation Datasets ซึ่ง กระบวนการฝึก ก็ฝึกไปแล้วทดสอบด้วย ชุดข้อมูล Validation ทันที ซึ่งโดยปกตินั้น trainning set ถูกฝึกค่าความผิดพลาดจะลดลงไปเรื่อยๆ แล้วจึงมาทดสอบกับข้อมูลชุดทดสอบ แต่วิธีนี้จะทดสอบด้วย Validation แล้วดูว่า ข้อมูลชุด Validation นั้นเกิดค่าความผิดพลาดเพิ่มขึ้นหรือไม่ ถ้าหาก Validation ข้อมูลค่าความผิดพลาดเพิ่มสูงขึ้นจนถึงจุดที่พอยอมรับได้ จุดนั้นถือว่า สมดุลในการฝึกแล้ว จึงค่อยนำไป ทดสอบกับข้อมูลชุดทดสอบต่อไป


สรุป สำหรับบทความนี้ จะเป็นเนื้อหาที่ช่วยให้เข้าใจถึงคำว่า Overfitting ซึ่งมีความสำคัญมากในการทำ AI และเทคนิค คำศัพท์ต่างๆที่อาจจะไปเจอในหนังสือเกี่ยวกับ AI จะได้เข้าใจว่าเทคนิคนี้ช่วยอะไร 

 

Download File บทความนี้

พูดคุยแลกเปลี่ยนได้ที่ Facebook Fanpage


แวะมาทักทายกันได้
donate

Categories: Research Tags: #AI , 2806