ไฮเปอร์พารามิเตอร์คือตัวแปร ที่ควบคุมการฝึกด้านต่างๆ ไฮเปอร์พารามิเตอร์ที่พบบ่อย 3 รายการมีดังนี้
ในทางตรงกันข้าม พารามิเตอร์คือ ตัวแปร เช่น น้ำหนักและอคติ ซึ่งเป็นส่วนหนึ่งของโมเดลเอง กล่าวอีกนัยหนึ่งคือ ไฮเปอร์พารามิเตอร์คือค่าที่คุณควบคุม ส่วนพารามิเตอร์คือค่าที่โมเดลคำนวณระหว่างการฝึก
อัตราการเรียนรู้
อัตราการเรียนรู้คือ จำนวนจุดลอยที่คุณตั้งค่าซึ่งมีผลต่อความเร็วที่โมเดล บรรจบกัน หากอัตราการเรียนรู้ต่ำเกินไป โมเดลอาจใช้เวลานาน ในการบรรจบ อย่างไรก็ตาม หากอัตราการเรียนรู้สูงเกินไป โมเดลจะไม่บรรจบกัน แต่จะเปลี่ยนไปมาระหว่างน้ำหนักและอคติที่ลดการสูญเสียให้น้อยที่สุด เป้าหมายคือการเลือกอัตราการเรียนรู้ที่ไม่สูงหรือต่ำเกินไปเพื่อให้โมเดลบรรจบกันอย่างรวดเร็ว
อัตราการเรียนรู้จะกำหนดขนาดของการเปลี่ยนแปลงที่จะเกิดขึ้นกับน้ำหนัก และอคติในแต่ละขั้นตอนของกระบวนการ Gradient Descent โมเดลจะคูณ การไล่ระดับด้วยอัตราการเรียนรู้เพื่อกำหนดพารามิเตอร์ของโมเดล (ค่าถ่วงน้ำหนัก และค่าอคติ) สำหรับการทำซ้ำครั้งถัดไป ในขั้นตอนที่ 3 ของการไล่ระดับ การลด "จำนวนเล็กน้อย" ที่จะย้ายไปในทิศทาง ของความชันเชิงลบหมายถึงอัตราการเรียนรู้
ความแตกต่างระหว่างพารามิเตอร์ของโมเดลเก่ากับพารามิเตอร์ของโมเดลใหม่ เป็นสัดส่วนกับความชันของฟังก์ชันการสูญเสีย เช่น หากความชันมีขนาดใหญ่ โมเดลจะก้าวไปข้างหน้าอย่างรวดเร็ว หากเล็ก ก็จะก้าวเล็กๆ เช่น หากขนาดของ Gradient คือ 2.5 และอัตราการเรียนรู้คือ 0.01 โมเดลจะเปลี่ยนพารามิเตอร์เป็น 0.025
อัตราการเรียนรู้ที่เหมาะสมจะช่วยให้โมเดลบรรจบกันภายในจำนวนการทำซ้ำที่สมเหตุสมผล ในรูปที่ 20 เส้นโค้งการสูญเสียแสดงให้เห็นว่าโมเดลมีการปรับปรุงอย่างมากในช่วง 20 การทำซ้ำแรกก่อนที่จะเริ่มบรรจบกัน
รูปที่ 20 กราฟการสูญเสียแสดงโมเดลที่ฝึกด้วยอัตราการเรียนรู้ที่ บรรจบกันอย่างรวดเร็ว
ในทางตรงกันข้าม อัตราการเรียนรู้ที่เล็กเกินไปอาจต้องใช้การทำซ้ำมากเกินไปจึงจะ บรรจบกัน ในรูปที่ 21 เส้นโค้งการสูญเสียแสดงให้เห็นว่าโมเดลมีการปรับปรุงเพียงเล็กน้อย หลังจากการทำซ้ำแต่ละครั้ง
รูปที่ 21 กราฟการสูญเสียที่แสดงโมเดลที่ฝึกด้วยอัตราการเรียนรู้ต่ำ
อัตราการเรียนรู้ที่มากเกินไปจะไม่บรรจบกันเนื่องจากแต่ละการทำซ้ำจะทำให้การสูญเสียเพิ่มขึ้นอย่างต่อเนื่องหรือทำให้การสูญเสียเพิ่มขึ้นอย่างต่อเนื่อง ในรูปที่ 22 เส้นโค้งการสูญเสีย แสดงให้เห็นว่าโมเดลลดการสูญเสียลงแล้วเพิ่มขึ้นหลังจากการทำซ้ำแต่ละครั้ง และในรูปที่ 23 การสูญเสียจะเพิ่มขึ้นในการทำซ้ำครั้งหลังๆ
รูปที่ 22 กราฟการสูญเสียที่แสดงโมเดลที่ฝึกด้วยอัตราการเรียนรู้ที่ สูงเกินไป ซึ่งเส้นโค้งการสูญเสียผันผวนอย่างมาก โดยขึ้นๆ ลงๆ เมื่อ การทำซ้ำเพิ่มขึ้น
รูปที่ 23 กราฟการสูญเสียที่แสดงโมเดลที่ฝึกด้วยอัตราการเรียนรู้ที่ สูงเกินไป ซึ่งเส้นโค้งการสูญเสียเพิ่มขึ้นอย่างมากในการทำซ้ำครั้งต่อๆ ไป
แบบฝึกหัด: ทดสอบความเข้าใจ
ขนาดกลุ่ม
ขนาดแบตช์คือไฮเปอร์พารามิเตอร์ที่ อ้างอิงถึงจำนวนตัวอย่าง ที่โมเดลประมวลผลก่อนที่จะอัปเดตน้ำหนัก และอคติ คุณอาจคิดว่าโมเดลควรคำนวณการสูญเสียสำหรับทุก ตัวอย่างในชุดข้อมูลก่อนที่จะอัปเดตน้ำหนักและอคติ อย่างไรก็ตาม เมื่อชุดข้อมูลมีตัวอย่างหลายแสนหรือหลายล้านรายการ การใช้ การประมวลผลแบบกลุ่มเต็มจึงไม่สามารถทำได้
เทคนิค 2 อย่างที่ใช้กันทั่วไปในการหาค่าการไล่ระดับสีที่ถูกต้องในค่าเฉลี่ยโดยไม่ต้อง ดูตัวอย่างทุกรายการในชุดข้อมูลก่อนที่จะอัปเดตน้ำหนักและอคติ ได้แก่ การไล่ระดับสีแบบสุ่มและ การไล่ระดับสีแบบสุ่มแบบมินิแบตช์
การไล่ระดับสีแบบสุ่ม (SGD): การไล่ระดับสีแบบสุ่มใช้ตัวอย่างเพียง รายการเดียว (ขนาดกลุ่มเท่ากับ 1) ต่อการทำซ้ำ เมื่อมีการวนซ้ำมากพอ SGD จะทำงานได้ แต่ก็มีสัญญาณรบกวนมาก "สัญญาณรบกวน" หมายถึงความแปรปรวนระหว่างการฝึก ที่ทำให้การสูญเสียเพิ่มขึ้นแทนที่จะลดลงระหว่างการ ทำซ้ำ คำว่า "สุ่ม" หมายความว่าระบบจะสุ่มเลือกตัวอย่าง 1 รายการที่ประกอบเป็นแต่ละกลุ่ม
โปรดสังเกตในรูปภาพต่อไปนี้ว่าการสูญเสียผันผวนเล็กน้อยอย่างไรเมื่อโมเดล อัปเดตน้ำหนักและอคติโดยใช้ SGD ซึ่งอาจทำให้เกิดสัญญาณรบกวนในกราฟการสูญเสีย
รูปที่ 24 โมเดลที่ฝึกด้วยการไล่ระดับความชันแบบสุ่ม (SGD) แสดง สัญญาณรบกวนในเส้นโค้งการสูญเสีย
โปรดทราบว่าการใช้การไล่ระดับสีแบบสุ่มจะสร้างสัญญาณรบกวนตลอด เส้นโค้งการสูญเสียทั้งหมด ไม่ใช่แค่ใกล้การบรรจบ
การไล่ระดับความชันแบบสุ่มแบบมินิแบตช์ (Mini-batch Stochastic Gradient Descent หรือ Mini-batch SGD): การไล่ระดับความชันแบบสุ่มแบบมินิแบตช์เป็นข้อตกลงระหว่างแบบเต็มแบตช์กับ SGD สำหรับจุดข้อมูลจำนวน $ N $ ขนาดกลุ่มสามารถเป็นจำนวนใดก็ได้ที่มากกว่า 1 และน้อยกว่า $ N $ โมเดลจะเลือกตัวอย่างที่รวมอยู่ในแต่ละกลุ่ม แบบสุ่ม หาค่าเฉลี่ยของค่าความชัน แล้วอัปเดตน้ำหนักและอคติ ครั้งละ 1 รายการต่อการวนซ้ำ
การกำหนดจำนวนตัวอย่างสำหรับแต่ละกลุ่มขึ้นอยู่กับชุดข้อมูลและทรัพยากรการประมวลผลที่มี โดยทั่วไป ขนาดกลุ่มเล็กๆ จะทำงานเหมือน SGD และขนาดกลุ่มใหญ่ๆ จะทำงานเหมือนการไล่ระดับแบบกลุ่มเต็ม
รูปที่ 25 โมเดลที่ฝึกด้วย SGD แบบมินิแบตช์
เมื่อฝึกโมเดล คุณอาจคิดว่าสัญญาณรบกวนเป็นลักษณะที่ไม่พึงประสงค์ ซึ่งควรขจัดออก อย่างไรก็ตาม ความผันผวนในระดับหนึ่งอาจเป็นสิ่งที่ดีได้ ในโมดูลต่อๆ ไป คุณจะได้เรียนรู้ว่าสัญญาณรบกวนช่วยให้โมเดลสรุปได้ดีขึ้นและค้นหาเครือข่ายประสาทที่มีน้ำหนักและอคติที่เหมาะสมได้อย่างไร
Epoch
ระหว่างการฝึก Epoch หมายความว่าโมเดลได้ประมวลผลตัวอย่างทุกรายการในชุดการฝึก1 ครั้ง เช่น หากมีชุดการฝึกที่มีตัวอย่าง 1,000 รายการและขนาดมินิแบตช์ 100 ตัวอย่าง โมเดลจะต้องใช้การทำซ้ำ 10 ครั้งเพื่อทำ 1 Epoch ให้เสร็จสมบูรณ์
โดยปกติแล้วการฝึกโมเดลต้องใช้หลายยุค กล่าวคือ ระบบต้องประมวลผล ทุกตัวอย่างในชุดการฝึกหลายครั้ง
จำนวน Epoch คือ Hyperparameter ที่คุณตั้งค่าก่อนที่โมเดลจะเริ่ม การฝึก ในหลายกรณี คุณจะต้องทดลองว่าโมเดลต้องใช้กี่ยุค จึงจะบรรจบกัน โดยทั่วไปแล้ว ยิ่งมีจำนวน Epoch มาก โมเดลก็จะยิ่งดีขึ้น แต่ก็ใช้เวลาฝึกนานขึ้นด้วย
รูปที่ 26 การประมวลผลแบบกลุ่มเต็มเทียบกับการประมวลผลแบบกลุ่มย่อย
ตารางต่อไปนี้อธิบายว่าขนาดกลุ่มและ Epoch เกี่ยวข้องกับจำนวนครั้งที่โมเดลอัปเดตพารามิเตอร์อย่างไร
ประเภทแบทช์ | เมื่อมีการอัปเดตน้ำหนักและความเอนเอียง |
---|---|
การประมวลผลแบบกลุ่มทั้งหมด | หลังจากที่โมเดลดูตัวอย่างทั้งหมดในชุดข้อมูลแล้ว ตัวอย่างเช่น หากชุดข้อมูลมีตัวอย่าง 1,000 รายการและโมเดลฝึกเป็นเวลา 20 Epoch โมเดลจะอัปเดตน้ำหนักและอคติ 20 ครั้ง โดยอัปเดตครั้งละ 1 Epoch |
การไล่ระดับสีแบบสุ่ม | หลังจากที่โมเดลดูตัวอย่างเดียวจากชุดข้อมูล เช่น หากชุดข้อมูลมีตัวอย่าง 1,000 รายการและฝึกเป็นเวลา 20 Epoch โมเดลจะอัปเดตน้ำหนักและอคติ 20,000 ครั้ง |
การไล่ระดับสีแบบสุ่มของมินิแบทช์ | หลังจากที่โมเดลดูตัวอย่างในแต่ละกลุ่มแล้ว เช่น หากชุดข้อมูลมีตัวอย่าง 1,000 รายการ และขนาดกลุ่มคือ 100 และ โมเดลฝึกเป็นเวลา 20 Epoch โมเดลจะอัปเดตน้ำหนักและ อคติ 200 ครั้ง |