Gradient Descent คีย์เวิร์ดที่ Data Science ต้องรู้จัก ! : Machine Learning 101

Mr.P L
mmp-li
Published in
3 min readNov 9, 2018

Gradient Descent Gradient DescentGradient DescentGradient Descent ได้ยินมาหลายรอบ แต่ไม่รู้คืออะไร……

รูปที่อธิบาย GD ได้ดีมาก

หลังจากที่ได้ลองเล่น Linear Regression มาแล้ว ก็จะพอทราบว่าคณิตศาสตร์เบื้องหลังของ Linear Regression คือ Normal Equation ที่มีหน้าที่ในการหามุมที่ต่ำที่สุด(เส้นสีแดง ทำนายได้แม่นยำที่สุด) แต่คำว่า “หามุมที่ต่ำที่สุด” (Cost Function) ยังสามารถหาได้อีกวิธีนั้นคือ Gradient Descent

Gradient Descent ?

อัลกอริทึมในการหามุม (หา cost Function = หามุม theta) ที่ต่ำที่สุด และดีจริงๆ จะคล้ายๆกับ Normal Equation แต่ว่าในสมการของ Linear

สมการนี้

มีข้อเสียคือต้อง Inverse Matrix ซึ่งถ้ามี X แค่ 1 Feature มันก็ไม่ใช่ปัญหาอะไร (มีตัวแปรต้นตัวแปรเดียว) แต่เมื่อมีหลายๆตัวแปรการ Inverse Matrix ก็จะทำได้ช้า จึงต้องมีสมการอื่นมาแทน นั้นก็คือ Gradient Descent

เมื่อไหร่ที่ควรใช้ ?

เมื่อมีตัวแปรหลายๆตัวแปร อย่างใน Cheat sheet ของ sklearn ได้บอกไว้ว่า

> 100K samples

คณิตศาสตร์เบื้องหลัง

ปกติแล้วในการแก้สมการ เมื่อแก้ได้แล้ว แทนค่า จะได้คำตอบมาในทันที แต่ใน Gradient Descent จะแปลกกว่าเพื่อนนิดนึง ตรงนี้ถ้าเราแก้สมการ แทนค่าแล้ว มันจะอัพเดทค่าแทน ทำแบบนี้ไปเรื่อยๆจนกว่าจะได้ cost function ที่ต่ำที่สุด

โดยเริ่มจากกำหนด theta เริ่มต้นเป็นค่า random 1 ค่า จากนั้นตัวมันเองจะลองลากเส้นสีแดงขึ้นมา

เส้นสีแดงมั่วๆเส้นนี้

แต่แน่นอนว่าเส้นนี้มันไม่ใช่คำตอบที่เราต้องการ ตัว Gradient Descent เลยทำการเพิ่ม MSE(thata) เข้าไป โดยสมการนี้จะบอกว่าเส้นสีแดงๆเนี่ย ต้องขึ้นหรือลง จึงจะเหมาะกับสมการที่สุด

ค่อยพอคุยกันได้หน่อย

แต่ก็มีอีกปัจจัยว่าเส้นจะค่อยๆขึ้น หรือ จะขึ้นทีเดียวถึงเลย สิ่งๆนั้นคือ Learning rate

ก้าวเล็กๆ หรือก้าวใหญ่ๆ

เป้าหมายของเราคือ ลงไปข้างล่างให้สุดแบบพอดี

ทีนี้ถ้าเราก้าวใหญ่เกินสิ่งที่เกิดขึ้นคือเราจะก้าวเลยจุดต่ำที่สุดของรูปนี้ไปเลย

ทีนี้ถ้าเราก้าวเล็กเกินไปสิ่งที่เกิดขึ้นคือเราจะก้าวไม่ถึงจุดที่เราต้องการสักที

เพราะฉนั้น Learning rate จึงเป็นสิ่งสำคัญมากใน Gradient Descent ในแต่ละรอบที่เส้นสีแดงได้ขยับมันอาจจะไม่ตรงกับจุดก็จริง แต่ถ้ากำหนด Learning rate ได้พอดีก็จะทำให้เราได้มุมที่ต่ำสุดและดีที่สุดจริงๆ

ขั้นตอนการเรียนรู้ของ Gradient Descent แบบอธิบายโครตจะง่ายยยยย

โดยจะอธิบายโดยใช้ Stochastic Gradient Descent กัน โดยหลักการเดียวกันกับ GD และอธิบายหลักการลากเส้นสีแดงของรูปข้างบนได้ดังนี้

เป้าหมาย ไปให้ถึงจุดกลางของวงกลม

จากรูปเราจะเห็นได้ชัดๆเลยว่ามันไม่ได้เดินทางเป็นเส้นตรงและจุดสุดท้ายไม่ใช่ตรงกลาง แต่ข้อดีของมันคือมันสามารถรับมือกับข้อมูลที่มีขนาดใหญ่ได้ซึ่งถ้าเป็น Normal Equation ก็จะใช้เวลานานมากกว่าจะมาถึงตรงกลาง แต่ตัว SGD จะใช้เวลาที่สั้นกว่า เพราะนำข้อมูลแค่บางอันมาทำการเทรนแล้วสุ่มทางจนมาถึงตรงกลาง

ทำไม Gradient Descent ถึงดัง ?

ใน Machine Learning ตัว GD อาจจะไม่ได้ดังมากถ้าเทียบกับพวก SVM,Decistion tree แต่ในวงการ Deep Learning ตัว GD โด่งดังพอตัวเพราะใน Neural Network จะต้องมีอัลกอในการช่วยเรื่องการเรียนรู้และคอยอัพเดทค่าต่างๆทุกๆครั้งที่เรียนรู้ (GDในMLก็จะอัพเดทมุมไปเรื่อยๆในการเรียนรู้) ทำให้ใน NN จะต้องมี Learner และ Gradient Descent ก็เป็นที่นิยม (Deep Learning Explained By Microsoft เลือกใช้ GD ในทุกๆ module ยกเว้น RNN)

มีอะไรดีกว่า Gradient Descent ไหม ?

มีแน่นอน Gradient Descent ไม่ใช่เทพเจ้าแน่นอน ในเรื่องของอัลกอริทึมในการเรียนรู้ก็ยังมีตัวอื่นๆ ใหม่ๆที่น่าสนใจเช่น Adam , Newton’s method อื่นๆ

สรุป

แม้บทความนี้จะไม่มีแลป (เพราะมันให้ผลออกมาเหมือนกับ Linear เลยขอข้ามไป) แต่ก็ควรเรียนเอาไว้ เพราะในบทความที่เป็น Neural Network จะได้ใช้แน่นอนส่วนบทความหน้าจะเริ่มเข้าสู่อะไรที่มัน “แปลกๆ” กันบ้างในคือ Regression ที่ไม่ใช่ Regression นั้นเอง

บทความถัดไป :

Logistic Regression ทำนายผู้รอดชีวิตบนเรือไททานิค

Github : https://github.com/peeratpop/Machine_Learning_101

Medium : https://medium.com/@pingloaf

Linkedin : https://www.linkedin.com/in/peerat-limkonchotiwat/

บทความนี้เป็นส่วนหนึ่งของบทความ

เริ่มเรียน Machine/Deep Learning 0–100 (Introduction)

--

--

Mr.P L
mmp-li
Editor for

Lifestyle of Programmer & IoT (Node-RED|Blynk) & Data Science (ML,DL,NLP) and Whatever I want to do | cat can coding too | Ph.D. -> VISTEC -> IST