อะไรคือความแตกต่างระหว่าง Gradient Descent และ Stochastic Gradient Descent?


24

อะไรคือความแตกต่างระหว่าง Gradient Descent และ Stochastic Gradient Descent?

ฉันไม่คุ้นเคยกับสิ่งเหล่านี้คุณสามารถอธิบายความแตกต่างด้วยตัวอย่างสั้น ๆ ได้หรือไม่?

คำตอบ:


28

สำหรับคำอธิบายง่ายๆอย่างรวดเร็ว:

ในทั้งการไล่ระดับสีไล่ระดับสี (GD) และการไล่ระดับสีแบบสุ่ม (SGD) คุณอัพเดตชุดพารามิเตอร์ในลักษณะวนซ้ำเพื่อลดฟังก์ชันข้อผิดพลาดให้น้อยที่สุด

ในขณะที่อยู่ใน GD คุณจะต้องเรียกใช้ตัวอย่างทั้งหมดในชุดฝึกอบรมของคุณเพื่อทำการอัปเดตเดียวสำหรับพารามิเตอร์ในการทำซ้ำโดยเฉพาะในสิงคโปร์ในอีกทางหนึ่งคุณใช้ตัวอย่างการฝึกอบรมเพียงชุดเดียวหรือชุดย่อยจากชุดฝึกอบรมของคุณ เพื่อทำการอัพเดตสำหรับพารามิเตอร์ในการวนซ้ำเฉพาะ หากคุณใช้ SUBSET จะเรียกว่า Minibatch Stochastic gradient Descent

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

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

หากคุณต้องการตัวอย่างเกี่ยวกับเรื่องนี้ในทางปฏิบัติให้ตรวจสอบบันทึกย่อของ Andrew NG ที่นี่ซึ่งเขาจะแสดงขั้นตอนที่เกี่ยวข้องกับทั้งสองกรณีอย่างชัดเจน cs229 บันทึกย่อ

ที่มา: Quora Thread


ขอบคุณสั้น ๆ เช่นนี้? Gradient Descent มีสามรูปแบบ: แบทช์สุ่มและมินิแบตช์: แบทช์จะอัปเดตน้ำหนักหลังจากการประเมินตัวอย่างการฝึกอบรมทั้งหมดแล้ว Stochastic ตุ้มน้ำหนักจะได้รับการอัพเดทหลังการฝึกซ้อมแต่ละตัวอย่าง The Minibatch เป็นการผสมผสานที่ดีที่สุดของทั้งสองโลก เราไม่ได้ใช้ชุดข้อมูลแบบเต็ม แต่เราไม่ได้ใช้จุดข้อมูลเดียว เราใช้ชุดข้อมูลที่สุ่มเลือกจากชุดข้อมูลของเรา ด้วยวิธีนี้เราลดค่าใช้จ่ายในการคำนวณและบรรลุผลต่างที่ต่ำกว่ารุ่น stochastic
นักพัฒนา

5

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

การทำเช่นนั้นไม่เพียง แต่คำนวณข้อผิดพลาดและอัปเดตตุ้มน้ำหนักในการทำซ้ำที่เร็วขึ้น (เพราะเราประมวลผลการเลือกตัวอย่างเพียงเล็กน้อยในครั้งเดียว) แต่ยังช่วยในการเลื่อนไปสู่การปรับที่เหมาะสมได้เร็วขึ้น มีดูที่คำตอบที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุการใช้ minibatches สุ่มสำหรับการฝึกอบรมข้อดีข้อเสนอ

ข้อเสียอย่างหนึ่งที่อาจเกิดขึ้นคือเส้นทางสู่สิ่งที่ดีที่สุด ดังนั้นแทนที่จะเป็นเส้นโค้งการสูญเสียที่ราบรื่นแสดงให้เห็นว่าข้อผิดพลาดลดลงในการวนซ้ำของการไล่ระดับสีซ้ำแต่ละครั้งคุณอาจเห็นสิ่งนี้:

เส้นโค้งการสูญเสียที่มีเสียงดัง

เราเห็นได้ชัดว่าการสูญเสียลดลงเมื่อเวลาผ่านไปอย่างไรก็ตามมีรูปแบบที่หลากหลายตั้งแต่ยุคไปจนถึงยุค (ชุดการฝึกอบรมเป็นชุดการฝึกอบรม) ดังนั้นเส้นโค้งจึงมีเสียงดัง

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


ขอบคุณสั้น ๆ เช่นนี้? Gradient Descent มีสามรูปแบบ: แบทช์สุ่มและมินิแบตช์: แบทช์จะอัปเดตน้ำหนักหลังจากการประเมินตัวอย่างการฝึกอบรมทั้งหมดแล้ว Stochastic ตุ้มน้ำหนักจะได้รับการอัพเดทหลังการฝึกซ้อมแต่ละตัวอย่าง The Minibatch เป็นการผสมผสานที่ดีที่สุดของทั้งสองโลก เราไม่ได้ใช้ชุดข้อมูลแบบเต็ม แต่เราไม่ได้ใช้จุดข้อมูลเดียว เราใช้ชุดข้อมูลที่สุ่มเลือกจากชุดข้อมูลของเรา ด้วยวิธีนี้เราลดค่าใช้จ่ายในการคำนวณและบรรลุผลต่างที่ต่ำกว่ารุ่น stochastic
นักพัฒนา

ฉันว่ามีชุดที่ชุดเป็นชุดฝึกอบรมทั้งหมด (โดยทั่วไปหนึ่งยุค) จากนั้นมี mini-batch ที่ใช้ชุดย่อย (ดังนั้นจำนวนใด ๆ น้อยกว่าทั้งชุด ยังไม่มีข้อความ) - เซ็ตย่อยนี้ถูกเลือกแบบสุ่มดังนั้นจึงเป็นแบบสุ่ม ใช้ตัวอย่างเดียวจะเรียกว่าการเรียนรู้ออนไลน์และเป็นส่วนหนึ่งของมินิแบทช์ ... n=1หรือเพียงแค่มินิแบทช์ด้วย
n1k31t4

tks นี่ชัดเจน!
datdinhquoc

5

ใน Gradient Descent หรือ Batch Gradient Descent เราใช้ข้อมูลการฝึกอบรมทั้งหมดต่อยุคในขณะที่ Stochastic Gradient Descent เราใช้ตัวอย่างการฝึกอบรมเพียงครั้งเดียวต่อ epoch และ Mini-batch Gradient Descent อยู่ระหว่างสองขั้วต่อนี้ซึ่งเราสามารถใช้ mini-batch (ส่วนเล็ก) ของข้อมูลการฝึกอบรมต่อยุคกฎง่ายๆสำหรับการเลือกขนาดของ mini-batch อยู่ในอำนาจ 2 เช่น 32, 64, 128 และอื่น ๆ
สำหรับรายละเอียดเพิ่มเติม: cs231n


ขอบคุณสั้น ๆ เช่นนี้? Gradient Descent มีสามรูปแบบ: แบทช์สุ่มและมินิแบตช์: แบทช์จะอัปเดตน้ำหนักหลังจากการประเมินตัวอย่างการฝึกอบรมทั้งหมดแล้ว Stochastic ตุ้มน้ำหนักจะได้รับการอัพเดทหลังการฝึกซ้อมแต่ละตัวอย่าง The Minibatch เป็นการผสมผสานที่ดีที่สุดของทั้งสองโลก เราไม่ได้ใช้ชุดข้อมูลแบบเต็ม แต่เราไม่ได้ใช้จุดข้อมูลเดียว เราใช้ชุดข้อมูลที่สุ่มเลือกจากชุดข้อมูลของเรา ด้วยวิธีนี้เราลดค่าใช้จ่ายในการคำนวณและบรรลุผลต่างที่ต่ำกว่ารุ่น stochastic
นักพัฒนา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.