Skip to main content
เทคโนโลยี

Gradient Descent Optimization algorithm ที่จะช่วยให้มี Error น้อยที่สุด

วันนี้ผมจะพาทุกคนมารู้จักกับ 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?

Source: https://baptiste-monpezat.github.io/blog/stochastic-gradient-descent-for-machine-learning-clearly-explained

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

หากคุณสนใจพัฒนา สตาร์ทอัพ แอปพลิเคชัน
และ เทคโนโลยีของตัวเอง ?

อย่ารอช้า ! เรียนรู้ทักษะด้านดิจิทัลเพื่ออัพเกรดความสามารถของคุณ
เริ่มตั้งแต่พื้นฐาน พร้อมปฏิบัติจริงในรูปแบบหลักสูตรออนไลน์วันนี้

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า