การลดระดับความชันเป็นเทคนิคเพิ่มประสิทธิภาพที่ได้รับความนิยมมากที่สุดในการสร้างแบบจำลองการเรียนรู้ของเครื่อง (ML) อัลกอริธึมจะลดข้อผิดพลาดระหว่างค่าที่คาดการณ์และค่าพื้นฐานให้เหลือน้อยที่สุด เนื่องจากเทคนิคนี้พิจารณาจุดข้อมูลแต่ละจุดเพื่อทำความเข้าใจและลดข้อผิดพลาดให้เหลือน้อยที่สุด ประสิทธิภาพจึงขึ้นอยู่กับขนาดข้อมูลในการฝึก เทคนิคเช่นการลดระดับความชันแบบสุ่ม (SGD) ได้รับการออกแบบมาเพื่อปรับปรุงประสิทธิภาพการคำนวณ แต่ต้องแลกมาด้วยความแม่นยำของการบรรจบกัน
Stochastic Average Gradient สร้างสมดุลให้กับแนวทางคลาสสิกที่เรียกว่า Full Gradient Descent และ SGD และให้ประโยชน์ทั้งสองประการ แต่ก่อนที่เราจะใช้อัลกอริทึมได้ เราต้องเข้าใจความสำคัญของอัลกอริทึมนี้สำหรับการเพิ่มประสิทธิภาพของโมเดลเสียก่อน
การเพิ่มประสิทธิภาพวัตถุประสงค์การเรียนรู้ของเครื่องด้วยการลดระดับความชัน
อัลกอริทึม ML ทุกตัวมีฟังก์ชันการสูญเสียที่เกี่ยวข้องซึ่งมุ่งหวังที่จะลดหรือปรับปรุงประสิทธิภาพของโมเดล ในทางคณิตศาสตร์ การสูญเสียสามารถกำหนดได้ดังนี้:
เป็นเพียงความแตกต่างระหว่างผลลัพธ์จริงและผลลัพธ์ที่คาดการณ์ไว้ และการลดความแตกต่างนี้ให้เหลือน้อยที่สุดก็หมายความว่าโมเดลของเรานั้นเข้าใกล้ค่าความจริงพื้นฐานมากขึ้น
อัลกอริทึมการลดระดับจะใช้การลดระดับความชันเพื่อข้ามฟังก์ชันการสูญเสียและค้นหาค่าต่ำสุดทั่วไป ขั้นตอนการข้ามแต่ละขั้นตอนเกี่ยวข้องกับการอัปเดตน้ำหนักของอัลกอริทึมเพื่อปรับเอาต์พุตให้เหมาะสมที่สุด
การไล่ระดับแบบธรรมดา
อัลกอริธึมการลดระดับความชันแบบธรรมดาจะใช้ค่าเฉลี่ยของความชันทั้งหมดที่คำนวณจากชุดข้อมูลทั้งหมด วงจรชีวิตของตัวอย่างการฝึกเดี่ยวมีลักษณะดังต่อไปนี้:
สมการการอัปเดตน้ำหนักมีลักษณะดังต่อไปนี้:
โดยที่ W
แทนค่าน้ำหนักของแบบจำลอง และ dJ/dW
คืออนุพันธ์ของฟังก์ชันการสูญเสียเทียบกับน้ำหนักของแบบจำลอง วิธีการทั่วไปมีอัตราการบรรจบกันสูง แต่ต้องใช้การคำนวณมากเมื่อต้องจัดการกับชุดข้อมูลขนาดใหญ่ที่มีจุดข้อมูลหลายล้านจุด
การลดระดับความชันแบบสุ่ม (SGD)
วิธีการ SGD ยังคงเหมือนกับ GD ทั่วไป แต่แทนที่จะใช้ชุดข้อมูลทั้งหมดเพื่อคำนวณการไล่ระดับ จะใช้ชุดข้อมูลขนาดเล็กจากอินพุต วิธีการนี้มีประสิทธิภาพมากกว่ามาก แต่การวนซ้ำแต่ละครั้งอาจข้ามค่าต่ำสุดทั่วโลกมากเกินไป เนื่องจากแต่ละรอบใช้ข้อมูลเพียงบางส่วนสำหรับการเรียนรู้
ค่าเฉลี่ยความชันสุ่ม
แนวทาง Stochastic Average Gradient (SAG) ถูกนำมาใช้เป็นแนวทางกลางระหว่าง GD และ SGD โดยจะเลือกจุดข้อมูลแบบสุ่มและอัปเดตค่าตามความชันในจุดนั้นและค่าเฉลี่ยถ่วงน้ำหนักของความชันในอดีตที่จัดเก็บไว้สำหรับจุดข้อมูลเฉพาะนั้น
คล้ายกับ SGD, SAG สร้างแบบจำลองปัญหาทั้งหมดเป็นผลรวมจำกัดของฟังก์ชันนูนที่หาอนุพันธ์ได้ ในรอบการวนซ้ำที่กำหนดใดๆ SAG จะใช้ความชันปัจจุบันและค่าเฉลี่ยของความชันก่อนหน้าในการปรับปรุงน้ำหนัก สมการจะมีรูปแบบดังต่อไปนี้:
อัตราการบรรจบกัน
ระหว่างอัลกอริทึมยอดนิยมสองตัว ได้แก่ การไล่ระดับเต็มรูปแบบ (FG) และการไล่ระดับแบบสุ่ม (SGD) อัลกอริทึม FG มีอัตราการบรรจบกันที่ดีกว่าเนื่องจากใช้ชุดข้อมูลทั้งหมดในแต่ละการวนซ้ำเพื่อการคำนวณ
แม้ว่า SAG จะมีโครงสร้างคล้ายกับ SGD แต่อัตราการบรรจบกันนั้นเทียบได้กับและบางครั้งดีกว่าวิธีการไล่ระดับเต็มรูปแบบ ตารางที่ 1 ด้านล่างสรุปผลลัพธ์จากการทดลองของ
การแก้ไขเพิ่มเติม
แม้จะมีประสิทธิภาพที่น่าทึ่ง แต่ก็มีการเสนอการปรับเปลี่ยนหลายประการต่ออัลกอริทึม SGD เดิมเพื่อช่วยปรับปรุงประสิทธิภาพ
- การถ่วงน้ำหนักใหม่ในรอบแรก: การบรรจบกันของ SAG ยังคงช้าในช่วงไม่กี่รอบแรก เนื่องจากอัลกอริทึมทำให้ทิศทางเป็นมาตรฐานด้วย n (จำนวนจุดข้อมูลทั้งหมด) ซึ่งทำให้ประมาณการไม่ถูกต้อง เนื่องจากอัลกอริทึมยังไม่เห็นจุดข้อมูลจำนวนมาก การปรับเปลี่ยนนี้แนะนำให้ทำให้เป็นมาตรฐานด้วย m แทนที่จะเป็น n โดยที่ m คือจำนวนจุดข้อมูลที่พบอย่างน้อยหนึ่งครั้งจนถึงรอบนั้นโดยเฉพาะ
- มินิแบตช์: แนวทางการไล่ระดับแบบสุ่มใช้มินิแบตช์ในการประมวลผลจุดข้อมูลหลายจุดพร้อมกัน แนวทางเดียวกันนี้สามารถนำไปใช้กับ SAG ได้ วิธีนี้ช่วยให้สามารถแปลงเป็นเวกเตอร์และประมวลผลแบบขนานได้เพื่อเพิ่มประสิทธิภาพคอมพิวเตอร์ นอกจากนี้ยังช่วยลดภาระหน่วยความจำ ซึ่งเป็นความท้าทายที่สำคัญสำหรับอัลกอริทึม SAG
- การทดลองขนาดขั้นบันได: ขนาดขั้นบันไดที่กล่าวถึงก่อนหน้านี้ (116L) ให้ผลลัพธ์ที่น่าทึ่ง แต่ผู้เขียนได้ทำการทดลองเพิ่มเติมโดยใช้ขนาดขั้นบันได 1L ซึ่งให้การบรรจบกันที่ดีกว่า อย่างไรก็ตาม ผู้เขียนไม่สามารถนำเสนอการวิเคราะห์อย่างเป็นทางการของผลลัพธ์ที่ปรับปรุงแล้วได้ พวกเขาสรุปว่าควรทดลองขนาดขั้นบันไดเพื่อค้นหาขนาดที่เหมาะสมที่สุดสำหรับปัญหาเฉพาะ
ความคิดสุดท้าย
การลดระดับความชันเป็นการเพิ่มประสิทธิภาพที่นิยมใช้ในการค้นหาค่าต่ำสุดทั่วโลกของฟังก์ชันเป้าหมายที่กำหนดไว้ อัลกอริทึมใช้ความชันของฟังก์ชันเป้าหมายเพื่อเคลื่อนผ่านความชันของฟังก์ชันจนถึงจุดที่ต่ำที่สุด
การลดระดับความชันแบบเต็มรูปแบบ (FG) และการลดระดับความชันแบบสุ่ม (SGD) เป็นอัลกอริทึมสองรูปแบบที่ได้รับความนิยม FG ใช้ชุดข้อมูลทั้งหมดในแต่ละรอบ และให้อัตราการบรรจบกันที่สูงโดยมีต้นทุนการคำนวณสูง ในแต่ละรอบ SGD จะใช้ชุดข้อมูลย่อยเพื่อเรียกใช้อัลกอริทึม ซึ่งมีประสิทธิภาพมากกว่ามาก แต่การบรรจบกันนั้นไม่แน่นอน
Stochastic Average Gradient (SAG) เป็นรูปแบบอื่นที่ให้ประโยชน์จากอัลกอริทึมทั้งสองแบบก่อนหน้านี้ โดยใช้ค่าเฉลี่ยของค่าเกรเดียนต์ในอดีตและชุดย่อยของชุดข้อมูลเพื่อให้ได้อัตราการบรรจบกันที่สูงพร้อมการคำนวณที่ต่ำ อัลกอริทึมสามารถปรับเปลี่ยนเพิ่มเติมเพื่อปรับปรุงประสิทธิภาพโดยใช้เวกเตอร์และมินิแบตช์