การทำ Stochastic Gradient Descent ด้วยวิธีการ Partial Derivative Approximation

Pisut Oncharoen
botnoi-classroom
Published in
3 min readNov 12, 2019

Introduction

เมื่อวานผมได้มีสอนเรื่อง การทำ optimization เพื่อหาค่า parameter ที่ทำให้เกิดค่า error ที่ต่ำที่สุดบน error function โดยใช้วิธีการ gradient descent ตามสมการด้านล่างครับ

Gradient Descent Equation

ซึ่งในคลาสเรียนผมได้ยกตัวอย่าง error function ง่าย ๆ สำหรับงาน linear regression ดังนี้

Squared Error

หลังจากนั้น ก็ได้การสอนวิธีการทำ partial derivative และนำผลลัพธ์ที่ได้ไปใช้ต่อในสมการ gradient descent (รายละเอียดในส่วนนี้ จะมีนักเรียนในคลาส มาเขียน medium สรุปให้อีกครั้งนะครับ)

สำหรับการนำเทคนิค gradient descent ไปใช้งานจริง เรามักจะเจอ error function ที่ค่อนข้างซับซ้อน หรือ คำนวณหา paratial derivative ได้ยาก ตัวอย่างเช่น

Modified Symmetric Mean Absolute Percentage Error

ในกรณีแบบนี้ เราสามารถคำนวณค่า gredient ด้วยวิธีการ partial derivative approximation ตามสมการด้านล่างครับ

Partial Derivative Approximation

หลังจากที่ได้รู้จักสมการพื้นฐานที่ใช้แล้ว ในหัวข้อถัด ๆ ไป ผมจะแสดงตัวอย่าง code เพื่อให้สามารถเห็นภาพได้มากขึ้นครับ

Create dataset

เริ่มจากเราต้องสร้าง dataset ขึ้นมาก่อน ตามตัวอย่าง code ด้านล่าง

Dummy dataset

หลังจากนั้น เราสามารถ plot กราฟเพื่อดูความสัมพันธ์ของค่า X และ Y ที่เราสร้างขึ้นมา โดยการใช้ scatter plot

Scatter plot

Define error function

สร้าง function ที่ใช้คำนวณ ค่า Modified SMAPE (error function) หลังจากนั้นจึงสร้างอีก function เพื่อใช้วัด ค่า error เฉลี่ยที่เกิดขึ้น เมื่อเปรียบเทียบค่าจริงกับค่าที่ได้จากการทำนายโดยใช้สมการ linear regression

เมื่อเราได้ function ที่สามารถคำนวณค่า error ตามที่ต้องการได้แล้ว เราก็สามารถ plot กราฟ เพื่อดูความสัมพันธ์ของ error เทียบกับ w0 และ w1 ได้

Error vs W

Partial derivative approximation

Partial Derivative Approximation

เราสามารถเขียน function ที่คำนวณ partial derivative approximation โดยใช้วิธีการเปรียบเทียบผลต่างของ error เมื่อทำการเพิ่ม/ลด w ครั้งละ 1% ได้ดังนี้

Stochastic gradient descent (SGD)

Gradient Descent Equation

เราสามารถนำสมการ การปรับค่า W โดยวิธี SGD มาเขียนใหม่ เพื่อเรียกใช้ function คำนวณ partial derivative approximation ได้ตามตัวอย่างด้านล่าง

หลังจากเขียน function ที่จำเป็นครบแล้ว เราสามารถ วน loop เพื่อทำการปรับค่า W โดยใช้วิธีการ stochastic gradient descent ได้ ดังตัวอย่างด้านล่างครับ

หลังจากนั้น เราสามารถ plot กราฟ เพื่อดูค่า error ที่เกิดขึ้นในแต่ละช่วงของการปรับค่า W ได้ดังรูปด้านล่าง

จากกราฟด้านบนเราจะเห็นได้ว่า การใช้ partial derivative approximation ก็อีกหนึ่งวิธีที่สามารถนำมาใช้ร่วมกับ gradient descent เพื่อใช้หาค่า parameter ที่ทำให้เกิดค่าต่ำสุดบน error function ที่เราต้องการได้

สามารถดู code ได้ทั้งหมดจาก google colab นะครับ

— — — — — — — — — — — — — — — — — — — — — — — —

สนใจเรียน Data science -> Botnoi Classroom

สนใจใช้บริการในสร้างแชทบอท หรือให้คำปรึกษาเกี่ยวกับ AI & data science ติดต่อได้ผ่านเวป -> Botnoi และ FB Page Botnoi Consulting

--

--