การทำ Stochastic Gradient Descent ด้วยวิธีการ Partial Derivative Approximation
Introduction
เมื่อวานผมได้มีสอนเรื่อง การทำ optimization เพื่อหาค่า parameter ที่ทำให้เกิดค่า error ที่ต่ำที่สุดบน error function โดยใช้วิธีการ gradient descent ตามสมการด้านล่างครับ
ซึ่งในคลาสเรียนผมได้ยกตัวอย่าง error function ง่าย ๆ สำหรับงาน linear regression ดังนี้
หลังจากนั้น ก็ได้การสอนวิธีการทำ partial derivative และนำผลลัพธ์ที่ได้ไปใช้ต่อในสมการ gradient descent (รายละเอียดในส่วนนี้ จะมีนักเรียนในคลาส มาเขียน medium สรุปให้อีกครั้งนะครับ)
สำหรับการนำเทคนิค gradient descent ไปใช้งานจริง เรามักจะเจอ error function ที่ค่อนข้างซับซ้อน หรือ คำนวณหา paratial derivative ได้ยาก ตัวอย่างเช่น
ในกรณีแบบนี้ เราสามารถคำนวณค่า gredient ด้วยวิธีการ partial derivative approximation ตามสมการด้านล่างครับ
หลังจากที่ได้รู้จักสมการพื้นฐานที่ใช้แล้ว ในหัวข้อถัด ๆ ไป ผมจะแสดงตัวอย่าง code เพื่อให้สามารถเห็นภาพได้มากขึ้นครับ
Create dataset
เริ่มจากเราต้องสร้าง dataset ขึ้นมาก่อน ตามตัวอย่าง code ด้านล่าง
หลังจากนั้น เราสามารถ plot กราฟเพื่อดูความสัมพันธ์ของค่า X และ Y ที่เราสร้างขึ้นมา โดยการใช้ scatter plot
Define error function
สร้าง function ที่ใช้คำนวณ ค่า Modified SMAPE (error function) หลังจากนั้นจึงสร้างอีก function เพื่อใช้วัด ค่า error เฉลี่ยที่เกิดขึ้น เมื่อเปรียบเทียบค่าจริงกับค่าที่ได้จากการทำนายโดยใช้สมการ linear regression
เมื่อเราได้ function ที่สามารถคำนวณค่า error ตามที่ต้องการได้แล้ว เราก็สามารถ plot กราฟ เพื่อดูความสัมพันธ์ของ error เทียบกับ w0 และ w1 ได้
Partial derivative approximation
เราสามารถเขียน function ที่คำนวณ partial derivative approximation โดยใช้วิธีการเปรียบเทียบผลต่างของ error เมื่อทำการเพิ่ม/ลด w ครั้งละ 1% ได้ดังนี้
Stochastic gradient descent (SGD)
เราสามารถนำสมการ การปรับค่า 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