Gradient Descent และ Stochastic Gradient Descent (SGD) คือ อัลกอริธึมการปรับให้เหมาะสม ใช้เพื่อ ลดฟังก์ชันให้เหลือน้อยที่สุด ซึ่งโดยทั่วไปจะเกี่ยวข้องกับการลดข้อผิดพลาดในแบบจำลองให้เหลือน้อยที่สุด
ความแตกต่างหลักระหว่างทั้งสองมีดังต่อไปนี้:
การไล่ระดับสี (GD)
-
ในการไล่ระดับสีแบบมาตรฐาน อัลกอริธึมจะคำนวณการไล่ระดับสีของฟังก์ชันต้นทุน โดยใช้ชุดข้อมูลการฝึกทั้งหมด
-
อัปเดตพารามิเตอร์โมเดลโดยทำตามขั้นตอนตามสัดส่วนค่าลบของการไล่ระดับสีของชุดข้อมูลทั้งหมด
-
วิธีการนี้รับประกันการบรรจบกันให้น้อยที่สุด (ภายใต้เงื่อนไขบางประการ เช่น ความนูนและอัตราการเรียนรู้ที่เหมาะสม) แต่อาจมีราคาแพงในการคำนวณสำหรับชุดข้อมูลขนาดใหญ่
Stochastic Gradient Descent (SGD)
-
ในการไล่ระดับสีแบบสุ่ม อัลกอริธึมจะอัปเดตพารามิเตอร์โมเดลโดยใช้การไล่ระดับสีของฟังก์ชันต้นทุนสำหรับ ตัวอย่างการฝึกแต่ละรายการ
-
ทำการอัปเดตบ่อยครั้งตามตัวอย่างการฝึกชุดเดียวหรือชุดเล็ก ทำให้ เร็วกว่าการไล่ระดับสีสำหรับชุดข้อมูลขนาดใหญ่มาก
-
อย่างไรก็ตาม เนื่องจาก การอัปเดตที่มีเสียงดัง SGD จึงมีความผันผวนมากขึ้นและไม่จำเป็นต้องมาบรรจบกันที่ระดับต่ำสุดที่แน่นอน มันมาบรรจบกันที่บริเวณใกล้กับจุดต่ำสุดและแกว่งไปมารอบๆ
เมื่อใดจึงควรใช้อย่างใดอย่างหนึ่ง:
-
Gradient Descent (GD): เหมาะ เมื่อชุดข้อมูลมีขนาดเล็ก และสามารถใส่ลงในหน่วยความจำได้ หากฟังก์ชันต้นทุนราบรื่นและประพฤติตัวดี GD ก็สามารถบรรจบกันให้เหลือน้อยที่สุดได้อย่างมีประสิทธิภาพ
-
Stochastic Gradient Descent (SGD): เหมาะกว่าเมื่อ จัดการกับชุดข้อมูลขนาดใหญ่ ซึ่งการไล่ระดับสีในการประมวลผลสำหรับชุดข้อมูลทั้งหมดมีราคาแพงในการคำนวณ นอกจากนี้ยังมีประโยชน์ในสถานการณ์ที่ฟังก์ชันต้นทุนมีค่าขั้นต่ำในพื้นที่จำนวนมาก เนื่องจากสัญญาณรบกวนของ SGD ในการอัปเดตอาจช่วยหลีกเลี่ยงค่าต่ำสุดในพื้นที่ตื้นได้ นอกจากนี้ SGD ยัง ใช้กันทั่วไปในการฝึกอบรมโครงข่ายประสาทเทียม เนื่องจากมีชุดข้อมูลขนาดใหญ่และพื้นที่พารามิเตอร์มิติสูง
นอกจากนี้ รูปแบบต่างๆ เช่น การไล่ระดับแบบมินิแบทช์ ที่สร้างความสมดุลระหว่างประโยชน์ของทั้ง GD และ SGD โดยการพิจารณาชุดย่อยของข้อมูลสำหรับการอัปเดตแต่ละครั้ง มักจะถูกนำมาใช้ในทางปฏิบัติ ตัวเลือกระหว่างอัลกอริธึมเหล่านี้มักขึ้นอยู่กับทรัพยากรการคำนวณ ขนาดชุดข้อมูล และลักษณะของปัญหาเฉพาะ