32,299 การอ่าน
32,299 การอ่าน

ทำความเข้าใจการไล่ระดับค่าเฉลี่ยสุ่ม

โดย kustarev...4m2024/06/06
Read on Terminal Reader
Read this story w/o Javascript

นานเกินไป; อ่าน

การลดระดับความชันเป็นการเพิ่มประสิทธิภาพที่นิยมใช้ในการค้นหาค่าต่ำสุดทั่วโลกของฟังก์ชันเป้าหมายที่ให้ไว้ อัลกอริทึมใช้ความชันของฟังก์ชันเป้าหมายเพื่อเคลื่อนที่ไปตามความชันของฟังก์ชันจนกว่าจะถึงจุดต่ำสุด การลดระดับความชันแบบเต็ม (FG) และการลดระดับความชันแบบสุ่ม (SGD) เป็นสองรูปแบบที่นิยมใช้ของอัลกอริทึม FG ใช้ชุดข้อมูลทั้งหมดในแต่ละรอบ และให้ค่าการบรรจบกันที่สูงด้วยต้นทุนการคำนวณที่สูง ในแต่ละรอบ SGD จะใช้ชุดย่อยของข้อมูลเพื่อเรียกใช้อัลกอริทึม ซึ่งมีประสิทธิภาพมากกว่ามากแต่การบรรจบกันที่ไม่แน่นอน การไล่ระดับเฉลี่ยแบบสุ่ม (SAG) เป็นอีกรูปแบบหนึ่งที่ให้ประโยชน์จากอัลกอริทึมทั้งสองแบบก่อนหน้านี้ อัลกอริทึมนี้ใช้ค่าเฉลี่ยของการไล่ระดับในอดีตและชุดย่อยของชุดข้อมูลเพื่อให้ได้ค่าการบรรจบกันที่สูงด้วยการคำนวณที่ต่ำ อัลกอริทึมสามารถปรับเปลี่ยนเพิ่มเติมเพื่อปรับปรุงประสิทธิภาพได้โดยใช้เวกเตอร์และมินิแบตช์

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - ทำความเข้าใจการไล่ระดับค่าเฉลี่ยสุ่ม
Andrey Kustarev HackerNoon profile picture
0-item


การลดระดับความชันเป็นเทคนิคเพิ่มประสิทธิภาพที่ได้รับความนิยมมากที่สุดในการสร้างแบบจำลองการเรียนรู้ของเครื่อง (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 ด้านล่างสรุปผลลัพธ์จากการทดลองของ ชิมิดท์และคณะ -

แหล่งที่มา: https://arxiv.org/pdf/1309.2388

การแก้ไขเพิ่มเติม

แม้จะมีประสิทธิภาพที่น่าทึ่ง แต่ก็มีการเสนอการปรับเปลี่ยนหลายประการต่ออัลกอริทึม SGD เดิมเพื่อช่วยปรับปรุงประสิทธิภาพ


  • การถ่วงน้ำหนักใหม่ในรอบแรก: การบรรจบกันของ SAG ยังคงช้าในช่วงไม่กี่รอบแรก เนื่องจากอัลกอริทึมทำให้ทิศทางเป็นมาตรฐานด้วย n (จำนวนจุดข้อมูลทั้งหมด) ซึ่งทำให้ประมาณการไม่ถูกต้อง เนื่องจากอัลกอริทึมยังไม่เห็นจุดข้อมูลจำนวนมาก การปรับเปลี่ยนนี้แนะนำให้ทำให้เป็นมาตรฐานด้วย m แทนที่จะเป็น n โดยที่ m คือจำนวนจุดข้อมูลที่พบอย่างน้อยหนึ่งครั้งจนถึงรอบนั้นโดยเฉพาะ
  • มินิแบตช์: แนวทางการไล่ระดับแบบสุ่มใช้มินิแบตช์ในการประมวลผลจุดข้อมูลหลายจุดพร้อมกัน แนวทางเดียวกันนี้สามารถนำไปใช้กับ SAG ได้ วิธีนี้ช่วยให้สามารถแปลงเป็นเวกเตอร์และประมวลผลแบบขนานได้เพื่อเพิ่มประสิทธิภาพคอมพิวเตอร์ นอกจากนี้ยังช่วยลดภาระหน่วยความจำ ซึ่งเป็นความท้าทายที่สำคัญสำหรับอัลกอริทึม SAG
  • การทดลองขนาดขั้นบันได: ขนาดขั้นบันไดที่กล่าวถึงก่อนหน้านี้ (116L) ให้ผลลัพธ์ที่น่าทึ่ง แต่ผู้เขียนได้ทำการทดลองเพิ่มเติมโดยใช้ขนาดขั้นบันได 1L ซึ่งให้การบรรจบกันที่ดีกว่า อย่างไรก็ตาม ผู้เขียนไม่สามารถนำเสนอการวิเคราะห์อย่างเป็นทางการของผลลัพธ์ที่ปรับปรุงแล้วได้ พวกเขาสรุปว่าควรทดลองขนาดขั้นบันไดเพื่อค้นหาขนาดที่เหมาะสมที่สุดสำหรับปัญหาเฉพาะ


ความคิดสุดท้าย

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

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


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


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks