ในที่จะทำโมเดล Deep Learning (ดีพ เลินนิ่ง) หรือ Machine Learning (แมชชีน เลินนิ่ง) มันขาด Optimizer ไม่ได้เลย ต้องมีในการ Train โมเดลตลอด ในบทความนี้ก็จะมาอธิบายว่า Optimizer คืออะไร มันมีประโยชน์ยังไง ทำไมต้องมี และมันมี Optimizer อะไรบ้าง แต่เป็น Overview ไม่ได้ลงลึก ในบทความจะเอา Optimizer มาจาก Keras
Optimizer คืออะไร
Optimizer เป็น ฟังก์ชันทางคณิตศาสตร์ซึ่งขึ้นอยู่กับพารามิเตอร์ที่เรียนรู้ได้ของโมเดล เช่น Weight และ Bias เครื่องมือเพิ่มประสิทธิภาพช่วยให้ทราบวิธีการเปลี่ยน Weight และ Learning Rate ของ Neural Network เพื่อลดค่า Loss หรือ Error
Optimizer ทำหน้าที่อะไร?
Optimizer เป็น Algorithm หรือ Method ที่ใช้สำหรับ ลด Error หรือ ทำให้โมเดลมีประสิทธิภาพที่ดีขึ้น
Optimizer มีแบบไหนบ้าง ใน Keras?
- SGD Gradient descent (ด้วย momentum) optimizer
- Ftrl
- Nadam
- Adamax
- Adagrad
- Adadelta
- Adam เป็นวิธีการสุ่มเกรเดียนท์ที่อิงจากการประมาณค่าแบบปรับตัว(adaptive estimation)ของช่วงเวลาอันดับที่หนึ่งและอันดับสอง
- RMSprop รักษาค่าเฉลี่ยของ gradients ยกกำลัง2 และ หารด้วย root ของค่าเฉลี่ย
สรุป
แม้ว่า Optimizer ใน Keras จะมีให้ใช้แบบสำเร็จรูปก็ตาม เราก็ต้องมีการทดลองปรับเปลี่ยนแล้วดูว่า Optimizer อันไหนเหมาะกับงานของเรา ซึ่งเวลาที่ใช้ในการรอผลลัพธ์มันค่อนข้างนาน (10 นาที++) ส่งผลให้เวลาที่ใช้ในการพัฒนา Deep Learning (ดีพ เลินนิ่ง) เพิ่มตามไปด้วย ต้องใช้เวลาและความอดทนรอ
อ้างอิง
"Optimizer' type in Keras" .[ออนไลน์] เข้าถึงได้ที่ https://keras.io/api/optimizers/
"What's an Optimizer" .[ออนไลน์] เข้าถึงได้ที่ https://medium.com/mlearning-ai/optimizers-in-deep-learning-7bf81fed78a0
"Why we need an Optimizer" .[ออนไลน์] เข้าถึงได้ที่ https://medium.com/@chameleontk/%E0%B8%97%E0%B8%B3%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%B2%E0%B9%83%E0%B8%88-optimizer-a44455615c32