การถดถอยเชิงเส้น: ไฮเปอร์พารามิเตอร์

ไฮเปอร์พารามิเตอร์คือตัวแปร ที่ควบคุมการฝึกด้านต่างๆ ไฮเปอร์พารามิเตอร์ที่พบบ่อย 3 รายการมีดังนี้

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

อัตราการเรียนรู้

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

อัตราการเรียนรู้จะกำหนดขนาดของการเปลี่ยนแปลงที่จะเกิดขึ้นกับน้ำหนัก และอคติในแต่ละขั้นตอนของกระบวนการ Gradient Descent โมเดลจะคูณ การไล่ระดับด้วยอัตราการเรียนรู้เพื่อกำหนดพารามิเตอร์ของโมเดล (ค่าถ่วงน้ำหนัก และค่าอคติ) สำหรับการทำซ้ำครั้งถัดไป ในขั้นตอนที่ 3 ของการไล่ระดับ การลด "จำนวนเล็กน้อย" ที่จะย้ายไปในทิศทาง ของความชันเชิงลบหมายถึงอัตราการเรียนรู้

ความแตกต่างระหว่างพารามิเตอร์ของโมเดลเก่ากับพารามิเตอร์ของโมเดลใหม่ เป็นสัดส่วนกับความชันของฟังก์ชันการสูญเสีย เช่น หากความชันมีขนาดใหญ่ โมเดลจะก้าวไปข้างหน้าอย่างรวดเร็ว หากเล็ก ก็จะก้าวเล็กๆ เช่น หากขนาดของ Gradient คือ 2.5 และอัตราการเรียนรู้คือ 0.01 โมเดลจะเปลี่ยนพารามิเตอร์เป็น 0.025

อัตราการเรียนรู้ที่เหมาะสมจะช่วยให้โมเดลบรรจบกันภายในจำนวนการทำซ้ำที่สมเหตุสมผล ในรูปที่ 20 เส้นโค้งการสูญเสียแสดงให้เห็นว่าโมเดลมีการปรับปรุงอย่างมากในช่วง 20 การทำซ้ำแรกก่อนที่จะเริ่มบรรจบกัน

รูปที่ 20 เส้นโค้งการสูญเสียที่แสดงให้เห็นถึงความชันก่อนที่จะแบนราบ

รูปที่ 20 กราฟการสูญเสียแสดงโมเดลที่ฝึกด้วยอัตราการเรียนรู้ที่ บรรจบกันอย่างรวดเร็ว

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

รูปที่ 21 เส้นโค้งการสูญเสียที่แสดงความชันเกือบ 45 องศา

รูปที่ 21 กราฟการสูญเสียที่แสดงโมเดลที่ฝึกด้วยอัตราการเรียนรู้ต่ำ

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

รูปที่ 22 เส้นโค้งการสูญเสียที่แสดงเส้นขึ้นลงที่ขรุขระ

รูปที่ 22 กราฟการสูญเสียที่แสดงโมเดลที่ฝึกด้วยอัตราการเรียนรู้ที่ สูงเกินไป ซึ่งเส้นโค้งการสูญเสียผันผวนอย่างมาก โดยขึ้นๆ ลงๆ เมื่อ การทำซ้ำเพิ่มขึ้น

รูปที่ 23 เส้นโค้งการสูญเสียที่แสดงการสูญเสียที่เพิ่มขึ้นในการทำซ้ำครั้งต่อๆ ไป

รูปที่ 23 กราฟการสูญเสียที่แสดงโมเดลที่ฝึกด้วยอัตราการเรียนรู้ที่ สูงเกินไป ซึ่งเส้นโค้งการสูญเสียเพิ่มขึ้นอย่างมากในการทำซ้ำครั้งต่อๆ ไป

แบบฝึกหัด: ทดสอบความเข้าใจ

อัตราการเรียนรู้ที่เหมาะสมคืออะไร
อัตราการเรียนรู้ที่เหมาะสมจะขึ้นอยู่กับปัญหา
แต่ละโมเดลและชุดข้อมูลจะมีอัตราการเรียนรู้ที่เหมาะสมของตัวเอง
0.01
1.0

ขนาดกลุ่ม

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

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

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

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

    รูปที่ 24 เส้นโค้งการสูญเสียที่ชันซึ่งแบนราบ แต่มีความผันผวนเล็กๆ น้อยๆ มากมาย

    รูปที่ 24 โมเดลที่ฝึกด้วยการไล่ระดับความชันแบบสุ่ม (SGD) แสดง สัญญาณรบกวนในเส้นโค้งการสูญเสีย

    โปรดทราบว่าการใช้การไล่ระดับสีแบบสุ่มจะสร้างสัญญาณรบกวนตลอด เส้นโค้งการสูญเสียทั้งหมด ไม่ใช่แค่ใกล้การบรรจบ

  • การไล่ระดับความชันแบบสุ่มแบบมินิแบตช์ (Mini-batch Stochastic Gradient Descent หรือ Mini-batch SGD): การไล่ระดับความชันแบบสุ่มแบบมินิแบตช์เป็นข้อตกลงระหว่างแบบเต็มแบตช์กับ SGD สำหรับจุดข้อมูลจำนวน $ N $ ขนาดกลุ่มสามารถเป็นจำนวนใดก็ได้ที่มากกว่า 1 และน้อยกว่า $ N $ โมเดลจะเลือกตัวอย่างที่รวมอยู่ในแต่ละกลุ่ม แบบสุ่ม หาค่าเฉลี่ยของค่าความชัน แล้วอัปเดตน้ำหนักและอคติ ครั้งละ 1 รายการต่อการวนซ้ำ

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

    รูปที่ 25 เส้นโค้งการสูญเสียที่ชันซึ่งเริ่มแบนราบ โดยมีการผันผวนน้อยกว่ามากใกล้กับการบรรจบกัน

    รูปที่ 25 โมเดลที่ฝึกด้วย SGD แบบมินิแบตช์

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

Epoch

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

โดยปกติแล้วการฝึกโมเดลต้องใช้หลายยุค กล่าวคือ ระบบต้องประมวลผล ทุกตัวอย่างในชุดการฝึกหลายครั้ง

จำนวน Epoch คือ Hyperparameter ที่คุณตั้งค่าก่อนที่โมเดลจะเริ่ม การฝึก ในหลายกรณี คุณจะต้องทดลองว่าโมเดลต้องใช้กี่ยุค จึงจะบรรจบกัน โดยทั่วไปแล้ว ยิ่งมีจำนวน Epoch มาก โมเดลก็จะยิ่งดีขึ้น แต่ก็ใช้เวลาฝึกนานขึ้นด้วย

รูปที่ 26 การประมวลผลแบบกลุ่มเต็มคือชุดข้อมูลทั้งหมด การประมวลผลแบบกลุ่มย่อยคือชุดข้อมูลย่อย และ Epoch คือการส่งผ่านแบบเต็มผ่านการประมวลผลแบบกลุ่มย่อย 10 รายการ

รูปที่ 26 การประมวลผลแบบกลุ่มเต็มเทียบกับการประมวลผลแบบกลุ่มย่อย

ตารางต่อไปนี้อธิบายว่าขนาดกลุ่มและ Epoch เกี่ยวข้องกับจำนวนครั้งที่โมเดลอัปเดตพารามิเตอร์อย่างไร

ประเภทแบทช์ เมื่อมีการอัปเดตน้ำหนักและความเอนเอียง
การประมวลผลแบบกลุ่มทั้งหมด หลังจากที่โมเดลดูตัวอย่างทั้งหมดในชุดข้อมูลแล้ว ตัวอย่างเช่น หากชุดข้อมูลมีตัวอย่าง 1,000 รายการและโมเดลฝึกเป็นเวลา 20 Epoch โมเดลจะอัปเดตน้ำหนักและอคติ 20 ครั้ง โดยอัปเดตครั้งละ 1 Epoch
การไล่ระดับสีแบบสุ่ม หลังจากที่โมเดลดูตัวอย่างเดียวจากชุดข้อมูล เช่น หากชุดข้อมูลมีตัวอย่าง 1,000 รายการและฝึกเป็นเวลา 20 Epoch โมเดลจะอัปเดตน้ำหนักและอคติ 20,000 ครั้ง
การไล่ระดับสีแบบสุ่มของมินิแบทช์ หลังจากที่โมเดลดูตัวอย่างในแต่ละกลุ่มแล้ว เช่น หากชุดข้อมูลมีตัวอย่าง 1,000 รายการ และขนาดกลุ่มคือ 100 และ โมเดลฝึกเป็นเวลา 20 Epoch โมเดลจะอัปเดตน้ำหนักและ อคติ 200 ครั้ง

แบบฝึกหัด: ทดสอบความเข้าใจ

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