แก่นแท้ของการฝึกโมเดล: ฟังก์ชันความเสียหายคืออะไร และทำไมมันถึงสำคัญ
การสร้างโมเดล Machine Learning ให้ฉลาดและทำงานได้ดีนั้น ไม่ใช่เรื่องของการป้อนข้อมูลเข้าไปเฉยๆ แต่มีกระบวนการสำคัญที่เรียกว่า “การฝึกโมเดล” ซึ่งเปรียบเสมือนการสอนให้โมเดลเรียนรู้จากข้อมูลที่ป้อนเข้าไป หัวใจสำคัญที่ทำให้การเรียนรู้เกิดขึ้นได้คือ ฟังก์ชันความเสียหาย (Loss Function)
ฟังก์ชันความเสียหายคืออะไร และทำไมเราถึงต้องทำความเข้าใจมัน?
หัวใจของการฝึกโมเดล: ฟังก์ชันความเสียหาย (Loss Function)
ฟังก์ชันความเสียหายคืออะไร?
ฟังก์ชันความเสียหายคือเครื่องมือที่ใช้ วัด “ความผิดพลาด” ของโมเดล
พูดง่ายๆ คือ มันจะเปรียบเทียบผลลัพธ์ที่โมเดลทำนายได้ กับค่าจริงที่เราต้องการให้โมเดลทำนายได้อย่างถูกต้อง
ตัวอย่างเช่น ถ้าโมเดลทายว่าราคาบ้านหลังหนึ่งคือ 5 ล้านบาท แต่ราคาจริงคือ 6 ล้านบาท ฟังก์ชันความเสียหายก็จะคำนวณออกมาเป็นตัวเลขที่บอกว่าโมเดลทำนายผิดไปมากน้อยแค่ไหน
ตัวเลขของฟังก์ชันความเสียหายยิ่งน้อยเท่าไหร่ ก็แปลว่าโมเดลทำนายได้แม่นยำและมีประสิทธิภาพมากเท่านั้น
ทำไมต้องมีฟังก์ชันความเสียหาย?
ฟังก์ชันความเสียหายทำหน้าที่เป็น เข็มทิศนำทาง ให้โมเดลปรับปรุงตัวเอง
ในการฝึกโมเดล เป้าหมายหลักคือการ ลดค่าความเสียหาย ให้ต่ำที่สุดเท่าที่จะเป็นไปได้
เหมือนกับการที่เราพยายามแก้ไขข้อผิดพลาดในการทำงาน เมื่อเห็นว่าสิ่งที่เราทำยังไม่สมบูรณ์ เราก็จะหาวิธีปรับปรุงแก้ไขให้ดีขึ้น โมเดลก็เช่นกัน มันใช้ค่าความเสียหายนี้เป็นข้อมูลป้อนกลับ เพื่อปรับแต่ง พารามิเตอร์ ภายในของตัวเอง
เพื่อให้การทำนายในครั้งต่อไปใกล้เคียงกับความจริงมากขึ้นนั่นเอง
ส่องลึกประเภทของฟังก์ชันความเสียหายยอดนิยม
สำหรับงานพยากรณ์ค่า (Regression)
สำหรับงานที่ต้องการทำนายค่าตัวเลขต่อเนื่อง เช่น ราคาบ้าน อุณหภูมิ หรือยอดขาย มีฟังก์ชันความเสียหายหลักๆ สองแบบที่นิยมใช้กัน
Mean Squared Error (MSE) หรือ ค่าเฉลี่ยกำลังสองของความคลาดเคลื่อน เป็นฟังก์ชันที่คำนวณจากค่าเฉลี่ยของกำลังสองของผลต่างระหว่างค่าที่ทำนายกับค่าจริง
MSE จะให้ความสำคัญกับ ความผิดพลาดขนาดใหญ่ มากเป็นพิเศษ เพราะเมื่อยกกำลังสองแล้ว ความผิดพลาดที่มากก็จะยิ่งถูกเน้นให้สูงขึ้นไปอีก ทำให้โมเดลพยายามลดความผิดพลาดใหญ่ๆ ก่อน
Mean Absolute Error (MAE) หรือ ค่าเฉลี่ยความคลาดเคลื่อนสัมบูรณ์ คือค่าเฉลี่ยของผลต่างสัมบูรณ์ระหว่างค่าที่ทำนายกับค่าจริง
MAE จะมีความทนทานต่อ ค่าผิดปกติ (Outliers) ได้ดีกว่า MSE เนื่องจากไม่ได้ยกกำลังสอง ทำให้ความผิดพลาดที่เกิดขึ้นจาก Outliers ไม่ได้ส่งผลกระทบต่อค่าความเสียหายมากจนเกินไป
สำหรับงานจำแนกประเภท (Classification)
สำหรับงานที่ต้องการจัดประเภทข้อมูล เช่น จำแนกว่ารูปภาพคือหมาหรือแมว หรืออีเมลเป็นสแปมหรือไม่ เรามักจะใช้ฟังก์ชันที่เรียกว่า Cross-Entropy Loss หรือ Log Loss
Cross-Entropy Loss จะวัดความแตกต่างระหว่างการแจกแจงความน่าจะเป็นที่โมเดลคาดการณ์ กับการแจกแจงความน่าจะเป็นที่เป็นจริง
หากโมเดลทำนายผิดพลาดและมีความมั่นใจสูงในการทำนายผิดนั้น ค่า Cross-Entropy Loss ก็จะสูงมาก เพื่อเป็นการลงโทษโมเดลให้เรียนรู้และปรับปรุงให้ดีขึ้น
กระบวนการปรับปรุงโมเดล
เมื่อความเสียหายถูกคำนวณ
หลังจากที่ฟังก์ชันความเสียหายคำนวณออกมาเป็นตัวเลขแล้ว ขั้นตอนต่อไปคือการนำตัวเลขนี้ไปใช้ปรับปรุงโมเดล
นี่คือจุดที่ Optimizer เข้ามามีบทบาทสำคัญ Optimizer เปรียบเสมือนกลไกที่ใช้ค่าความเสียหายนี้เป็นข้อมูล เพื่อบอกว่าควรปรับ พารามิเตอร์ ของโมเดลไปในทิศทางใด
กระบวนการนี้คล้ายกับการค่อยๆ เดินลงเขาเพื่อหาจุดที่ต่ำที่สุด ฟังก์ชันความเสียหายบอกเราว่าเราอยู่สูงแค่ไหน และ Optimizer บอกเราว่าควรจะก้าวไปทางไหน เพื่อให้ไปถึงจุดที่ต่ำที่สุด (คือค่าความเสียหายที่น้อยที่สุด)
การเลือกไฮเปอร์พารามิเตอร์ที่เหมาะสม
เพื่อให้การเดินลงเขานี้มีประสิทธิภาพและรวดเร็ว การเลือก ไฮเปอร์พารามิเตอร์ ก็เป็นสิ่งสำคัญ
อัตราการเรียนรู้ (Learning Rate) คือขนาดของแต่ละก้าวที่เราเดินลงเขา หากก้าวใหญ่ไป อาจเดินข้ามจุดต่ำสุดได้ง่ายๆ แต่ถ้าก้าวเล็กไป ก็จะใช้เวลานานมากในการเดินทาง
ขนาดของชุดข้อมูลย่อย (Batch Size) คือจำนวนข้อมูลที่ใช้ในการคำนวณความเสียหายแต่ละครั้งก่อนที่จะปรับพารามิเตอร์ การเลือก Batch Size ที่เหมาะสมจะส่งผลต่อความเสถียรและความเร็วในการฝึกโมเดล
การเข้าใจฟังก์ชันความเสียหายและกระบวนการทำงานของมัน ช่วยให้สามารถสร้างและปรับแต่งโมเดล Machine Learning ให้มีประสิทธิภาพสูงสุดได้ การเลือกฟังก์ชันที่เหมาะสมกับลักษณะของปัญหา และการปรับไฮเปอร์พารามิเตอร์อย่างชาญฉลาด เป็นกุญแจสำคัญในการสร้างโมเดลที่เรียนรู้ได้อย่างแม่นยำและนำไปใช้งานได้จริง