เผยแพร่เมื่อ วันจันทร์ที่ 11 พฤศจิกายน พ.ศ. 2562
ผู้พัฒนาระบบหลายท่านอาจประสบกับปัญหาเหล่านี้ เช่นเมื่อทดสอบระบบเมื่อเปรียบเทียบผลการดำเนินงานจากการนำระบบไปใช้จริง ผลการดำเนินงานกลับแตกต่างจากที่คาดหวังไว้มาก ปัญหาเหล่านี้เป็นเรื่องปกติที่พบได้ ซึ่งการที่ผลตอบแทนจากการทดสอบและผลการดำเนินงานจริงมีความแตกต่างกันมากเกินไป ปัจจัยดังกล่าวเกิดจากระบบที่ Overfitting หมายถึงระบบที่ จดจำข้อมูลที่ใช้ทดสอบมากจนเกินไป ฉะนั้นเมื่อนำไปใช้จริงแล้วจึงไม่ได้ผลตามที่ทดสอบ
แสดงการเปรียบเทียบระบบที่ underfit optimum และ overfit
ก่อนอื่นต้องทำความเข้าใจกับข้อมูลที่นำมาใช้กันก่อน ข้อมูลที่นักพัฒนาส่วนใหญ่ใช้กันจะเป็นข้อมูลราคา รูปแบบของราคาประกอบด้วยการเคลื่อนตัวของราคาอย่างมีรูปแบบ (Systematic Pattern) กับการเคลื่อนไหวของราคาแบบสุ่ม (Random Noise) ดังนั้นเวลาเอาระบบมาทดสอบในช่วง Out-of-sample ผลการดำเนินการจึงแย่ลงจากช่วงที่เราทดสอบมากเพราะข้อมูลในช่วง Out-of-sample นั้นไม่ได้มี Random Noise เหมือนกับช่วง In-sample นั่นเอง โดยทั่วไปเมื่อเราพยายามเพิ่มประสิทธิภาพของระบบเทรดในช่วง In-sample เรามักจะเอาเงื่อนไขเพิ่มเติมไปจับพวก Random Noise มากกว่า ฉะนั้นปัญหา Overfitting จึงเกิดจากการใส่เงื่อนไขการซื้อขายมากจนเกินไปเพื่อให้ระบบเทรดของเราไม่ไปจับเอา Random Noise ของข้อมูล ดังนั้นนักลงทุนท่านใดที่คิดว่าระบบเทรดต้องมีความซับซ้อนมาก ถึงจะสามารถทำกำไรได้ดีในการเทรดจริง คงต้องมีความระมัดระวังและพิจารณาในประเด็นนี้ด้วย
อีกสาเหตุของการเกิด Overfitting เกิดจากลักษณะเฉพาะของโมเดลที่ใช้ ยกตัวอย่างเช่น โครงข่ายประสาทเทียม (Neural Network) การ Optimize โดยทั่วไปจะทำให้โมเดลเกิด Overfitting แต่การปรับแต่งกระบวนการในขั้นตอนการเรียนรู้ (Training) เช่น การแยกข้อมูลสำหรับการฝึกและข้อมูลทดสอบออกจากกัน และการเพิ่มขนาดของข้อมูล ถ้าข้อมูลที่ใช้ฝึกและทดสอบมีปริมาณมากพอก็ช่วยลดปัญหาการเกิด Overfitting ได้
โครงสร้างของ Neural network ประกอบขึ้นจาก Node ย่อยๆรวมกัน
ส่วนประกอบของ Node
การมีชั้นซ่อน จำนวนมากก็เป็นอีกสาเหตุของการเกิด Overfitting ในโมเดลได้เช่นกัน แม้ว่าจำนวณชั้นที่มากจะทำให้โมเดลสกัดคุณลักษณะได้มากทำให้มีความแม่นยำเพิ่มขึ้นแต่ในขณะเดียวก็ต้องตระหนักถึงการเกิด Overfitting ด้วยฉะนั้นควรกำหนดโครงสร้างของโมเดลอย่างเหมาะสม หรืออาจแก้ด้วยการ Dropout ซึ่งจะกล่าวในหัวข้อถัดไป
Srivastava, Nitish, et al. ”Dropout: a simple way to prevent neural networks from overfitting”, JMLR 2014
การ Dropout เป็นอีกหนึ่งวิธีที่นิยมใช้ในการลด Overfitting คือการสุ่มปิด Node ในเซลล์ประสาทเทียมไม่ให้ส่งข้อมูล โดยแต่ละรอบการฝึกการไหลของข้อมูลจะต่างกันทำให้การเรียนรู้ในแต่ละ Node กระจายอย่าทั่วถึงไม่กระจุดตัว กราฟด่านล่างแสดงถึงโมเดลเปรียบเทียบระหว่างโมเดลที่มีการ Dropout และโมเดลที่ไม่มีการ Dropout พบว่าโมเดลที่มีการ Dropout ซึ่งค่า error จะลดลงมากกว่าโมเดลที่ไม่มีการ Dropout
https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/dropout_layer.html
Array ( [cooCAFXXSUAV] => cooCAFXXSUAV [Secure-PHPSESSID] => h7l74n733fgplsrh7qivei754d )
Array ( [sesCAFXXSLAT] => 1732313825 [CAFXSI18NX] => th [_csrf] => 6cdfab5ee186048bce046124283bb909 [CAFXSFEREF] => https://www.caf.co.th/switcher.html?action=language&language=th&origin=https%3A%2F%2Fwww.caf.co.th%2Farticle%2Foverfitting.html )
Array ( [content] => overfitting )
Array ( )