วันนี้ผมจะพาทุกคนมารู้จักกับ Optimization algorithm ที่มีชื่อว่า Gradient Descent ว่ามันคืออะไร? และมันทำงานอย่างไร? ถ้าอยากรู้แล้วก็ไปดูกันเลยครับ
โดย Chaiyaphop Jamjumrat (Bas)
Data Scientist at True Digital Group
“Stop doing Data Sciyasart! Please, Do Data Science!”
What is a Gradient Descent?
Gradient Descent คือ Optimization algorithm ตัวหนึ่ง สำหรับใช้ในการหาค่า weight ที่ทำให้ Machine Learning models มีค่า error ต่ำที่สุด
Source: https://www.ibm.com/cloud/learn/gradient-descent
โดย Machine Learning ที่นิยมนำ Gradient Descent มาใช้ก็จะมี Linear Regression, Logistic Regression และ Neural Networks
What is a Linear Regression?
ก่อนผมที่จะอธิบายการทำงานของ Gradient Descent นะครับ จะขอทบทวนความรู้พื้นฐานเกี่ยวกับ Linear Regression ก่อน เพราะว่า Gradient Descent จะทำงานโดยการ Optimize ค่าความชัน และค่าคงที่ของสมการเส้นตรง ใน Linear Regression นั่นเอง
Source: https://www.geeksforgeeks.org/ml-linear-regression/
Linear Regression คือ การทำนายโดยการสร้างเส้นตรงบนจุดของข้อมูล ซึ่งเส้นตรงดังกล่าว เกิดมาจากสมการเส้นตรง
y=mX+c
โดยมี m คือ ค่าความชัน และ c คือ ค่าคงที่
ซึ่งค่า weight ที่ Gradient Descent จะทำการหาให้เรานั้นก็คือ ค่า m กับ ค่า c นั่นเอง
How does Gradient Descent work?
Gradient Descent Formula:
โดย θ คือ Weight, ∝ คือ Learning rate และ J(θ) คือ Cost Function based on θ
หรือ
New weight = weight – Learning rate * Gradient
Gradient Descent จะใช้สูตรในการคำนวณค่า weight ใหม่ที่ดีขึ้น โดยในรอบแรกของการคำนวณ Gradient Descent จะเริ่มจากการสุ่มเดาค่า weight ค่าแรกขึ้นมาก่อน และทำการวัด Performance ของโมเดลที่เกิดจากค่า weight ที่สุ่มขึ้นมา ด้วยค่า error จาก Cost Function และจะนำค่า error ที่ได้ มาช่วยในการคำนวณค่า weight ใหม่ที่ดีกว่าเดิม และนำค่า weight ปัจจุบันที่ได้ มาทำแบบนี้วนซ้ำไปเรื่อย ๆ จนกว่าจะได้ค่า weight ที่ทำให้ค่า error ของ model ต่ำที่สุด
ซึ่งการทำวนซ้ำของ Gradient Descent ในแต่ละครั้ง ก็คือการก้าวขยับเข้าไปหาจุดที่มีค่า error ต่ำที่สุดลงไปเรื่อย ๆ ดังนั้นระยะความยาวของการก้าวแต่ละครั้ง จึงส่งผลต่อความเร็วในการคำนวณ และถ้าก้าวยาวไปอาจจะทำให้ก้าวเลยจุดที่ดีที่สุดไปก็เป็นได้ ดังนั้นเราจึงต้องมีการกำหนดค่า Learning rate หรือ ระยะความยาวของการก้าวในแต่ละครั้งของ Gradient Descent ให้เหมาะสมด้วย
Gradient Descent สามารถทำงานได้ทั้งในโจทย์ประเภท regression และโจทย์ประเภท classification โดยแค่ปรับเปลี่ยน Cost Function ตามประเภทของโจทย์นั้น ๆ
สูตรของ Gradient ในโจทย์ประเภท Regression จะมี Cost Function เป็น Mean Squared Error
โดย MSE คือ Mean Squared Error
สูตรของ Gradient ในโจทย์ประเภท Classification (Logistic Regression) จะมี Cost Function เป็น Cross-Entropy Loss
โดย L คือ Cross-Entropy Loss
References:
https://www.ibm.com/cloud/learn/gradient-descent
https://towardsdatascience.com/gradient-descent-algorithm-a-deep-dive-cf04e8115f21
https://www.kdnuggets.com/2020/05/5-concepts-gradient-descent-cost-function.html