fbpx

ผู้พัฒนาระบบหลายท่านอาจประสบกับปัญหาเหล่านี้ เช่นเมื่อทดสอบระบบเมื่อเปรียบเทียบผลการดำเนินงานจากการนำระบบไปใช้จริง ผลการดำเนินงานกลับแตกต่างจากที่คาดหวังไว้มาก ปัญหาเหล่านี้เป็นเรื่องปกติที่พบได้ ซึ่งการที่ผลตอบแทนจากการทดสอบและผลการดำเนินงานจริงมีความแตกต่างกันมากเกินไป ปัจจัยดังกล่าวเกิดจากระบบที่ 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

เปิดบัญชี TFEX กับ ClassicAusiris

พร้อมรับสิทธิพิเศษทันที !!

Pin It on Pinterest