เพื่อวัตถุประสงค์ของเอกสารนี้
เป้าหมายสูงสุดของการพัฒนาแมชชีนเลิร์นนิงคือ การเพิ่มประโยชน์ของโมเดลที่ใช้งานให้ได้สูงสุด
โดยปกติแล้ว คุณสามารถใช้ขั้นตอนและหลักการพื้นฐานเดียวกัน ในส่วนนี้กับปัญหา ML ใดก็ได้
ส่วนนี้มีสมมติฐานดังต่อไปนี้
- คุณมีไปป์ไลน์การฝึกที่ทำงานได้อย่างเต็มที่อยู่แล้ว พร้อมด้วย การกำหนดค่าที่ให้ผลลัพธ์ที่สมเหตุสมผล
- คุณมีทรัพยากรด้านการประมวลผลเพียงพอที่จะทำการทดสอบการปรับแต่งที่มีความหมาย และเรียกใช้การฝึกอย่างน้อย 2-3 งานแบบขนาน
กลยุทธ์การปรับแบบเพิ่มทีละน้อย
คำแนะนำ: เริ่มต้นด้วยการกำหนดค่าอย่างง่าย จากนั้นค่อยๆ ปรับปรุง ไปพร้อมกับสร้างข้อมูลเชิงลึกเกี่ยวกับปัญหา ตรวจสอบว่าการ ปรับปรุงใดๆ อิงตามหลักฐานที่เชื่อถือได้
เราถือว่าเป้าหมายของคุณคือการค้นหาการกําหนดค่าที่เพิ่ม ประสิทธิภาพของโมเดลให้สูงสุด บางครั้งเป้าหมายของคุณคือการปรับปรุงโมเดลให้ได้มากที่สุด ภายในกำหนดเวลาที่แน่นอน ในกรณีอื่นๆ คุณสามารถปรับปรุงโมเดลต่อไปได้ อย่างไม่มีกำหนด เช่น ปรับปรุงโมเดลที่ใช้ในการผลิตอย่างต่อเนื่อง
ในทางทฤษฎี คุณสามารถเพิ่มประสิทธิภาพได้สูงสุดโดยใช้อัลกอริทึมเพื่อ ค้นหาการกำหนดค่าที่เป็นไปได้ทั้งหมดโดยอัตโนมัติ แต่ นี่ไม่ใช่ตัวเลือกที่ใช้งานได้จริง การกำหนดค่าที่เป็นไปได้มีจำนวนมาก และยังไม่มีอัลกอริทึมใดที่ซับซ้อนพอ ที่จะค้นหาพื้นที่นี้ได้อย่างมีประสิทธิภาพโดยไม่มีคำแนะนำจากมนุษย์ อัลกอริทึมการค้นหาอัตโนมัติส่วนใหญ่ อาศัยพื้นที่การค้นหาที่ออกแบบด้วยมือซึ่งกำหนดชุดการกำหนดค่าที่จะค้นหา และพื้นที่การค้นหาเหล่านี้อาจมีความสำคัญ อย่างมาก
วิธีที่มีประสิทธิภาพมากที่สุดในการเพิ่มประสิทธิภาพสูงสุดคือการเริ่มต้นด้วยการกำหนดค่าอย่างง่าย และค่อยๆ เพิ่มฟีเจอร์และทำการปรับปรุงในขณะที่ สร้างข้อมูลเชิงลึกเกี่ยวกับปัญหา
เราขอแนะนำให้ใช้อัลกอริทึมการค้นหาอัตโนมัติในแต่ละรอบของการปรับแต่ง และอัปเดตพื้นที่การค้นหาอย่างต่อเนื่องเมื่อคุณมีความเข้าใจมากขึ้น เมื่อสำรวจ คุณจะพบการกำหนดค่าที่ดียิ่งขึ้นเรื่อยๆ และโมเดล "ดีที่สุด" ก็จะได้รับการปรับปรุงอย่างต่อเนื่อง
คำว่า "เปิดตัว" หมายถึงการอัปเดตการกำหนดค่าที่ดีที่สุดของเรา (ซึ่งอาจสอดคล้องหรือไม่สอดคล้องกับการเปิดตัวโมเดลเวอร์ชันที่ใช้งานจริง) สำหรับการ "เปิดตัว" แต่ละครั้ง คุณต้องตรวจสอบว่าการเปลี่ยนแปลงนั้นอิงตามหลักฐานที่หนักแน่น ไม่ใช่แค่โอกาสแบบสุ่มที่เกิดจากการกำหนดค่าที่โชคดี เพื่อไม่ให้เพิ่มความซับซ้อนที่ไม่จำเป็นลงในไปป์ไลน์การฝึก
กลยุทธ์การปรับแบบเพิ่มทีละน้อยของเราในระดับสูงเกี่ยวข้องกับการทำซ้ำ ขั้นตอนทั้ง 4 ต่อไปนี้
- เลือกเป้าหมายสำหรับการทดสอบรอบถัดไป ตรวจสอบว่าเป้าหมายมีขอบเขตที่เหมาะสม
- ออกแบบการทดสอบรอบถัดไป ออกแบบและดำเนินการทดสอบชุดหนึ่งที่มุ่งไปสู่เป้าหมายนี้
- เรียนรู้จากผลการทดสอบ ประเมินการทดสอบเทียบกับรายการตรวจสอบ
- พิจารณาว่าจะใช้การเปลี่ยนแปลงที่เป็นไปได้หรือไม่
ส่วนที่เหลือของส่วนนี้จะอธิบายกลยุทธ์นี้โดยละเอียด
เลือกเป้าหมายสำหรับการทดสอบรอบถัดไป
หากพยายามเพิ่มฟีเจอร์หลายอย่างหรือตอบคำถามหลายข้อพร้อมกัน คุณอาจไม่สามารถแยกผลกระทบที่แยกกันในผลลัพธ์ได้ ตัวอย่างเป้าหมาย ได้แก่
- ลองปรับปรุงไปป์ไลน์ (เช่น ตัวปรับค่าใหม่ ตัวเลือกการประมวลผลล่วงหน้า ฯลฯ)
- ทําความเข้าใจผลกระทบของไฮเปอร์พารามิเตอร์ของโมเดลหนึ่งๆ (เช่น ฟังก์ชันการกระตุ้น)
- ลดข้อผิดพลาดในการตรวจสอบ
ให้ความสำคัญกับความคืบหน้าในระยะยาวมากกว่าการปรับปรุงข้อผิดพลาดในการตรวจสอบในระยะสั้น
สรุป: โดยส่วนใหญ่แล้ว เป้าหมายหลักของคุณคือการได้รับข้อมูลเชิงลึกเกี่ยวกับ ปัญหาการปรับแต่ง
เราขอแนะนำให้คุณใช้เวลาส่วนใหญ่ในการทำความเข้าใจปัญหาและใช้เวลาเพียงเล็กน้อยในการมุ่งเน้นที่การเพิ่มประสิทธิภาพในชุดข้อมูลการตรวจสอบให้ได้มากที่สุด กล่าวคือ ใช้เวลาส่วนใหญ่ไปกับการ "สำรวจ" และใช้เวลาเพียงเล็กน้อยไปกับการ "แสวงหาประโยชน์" การทำความเข้าใจปัญหาเป็นสิ่งสำคัญในการเพิ่มประสิทธิภาพสุดท้ายให้ได้สูงสุด การให้ความสำคัญกับข้อมูลเชิงลึกมากกว่าผลกำไรระยะสั้นจะช่วยให้
- หลีกเลี่ยงการเปิดตัวการเปลี่ยนแปลงที่ไม่จำเป็นซึ่งเกิดขึ้นในการทดสอบที่มีประสิทธิภาพดีเพียงเพราะเป็นเหตุการณ์ที่เกิดขึ้นในอดีต
- ระบุไฮเปอร์พารามิเตอร์ที่ข้อผิดพลาดในการตรวจสอบมีความไวต่อมากที่สุด ไฮเปอร์พารามิเตอร์ที่โต้ตอบกันมากที่สุดและต้อง ปรับร่วมกัน และไฮเปอร์พารามิเตอร์ที่ค่อนข้างไม่ไวต่อ การเปลี่ยนแปลงอื่นๆ จึงสามารถแก้ไขได้ในการทดสอบในอนาคต
- แนะนำฟีเจอร์ใหม่ๆ ที่อาจมีประโยชน์ให้ลองใช้ เช่น ตัวปรับค่าใหม่เมื่อ การปรับมากเกินไปเป็นปัญหา
- ระบุฟีเจอร์ที่ไม่ได้ช่วยและสามารถนำออกได้ เพื่อลดความซับซ้อนของการทดสอบในอนาคต
- รับรู้เมื่อการปรับปรุงจากการปรับแต่งไฮเปอร์พารามิเตอร์มีแนวโน้มที่จะอิ่มตัว
- จำกัดพื้นที่การค้นหาของเราให้อยู่รอบๆ ค่าที่เหมาะสมเพื่อปรับปรุง ประสิทธิภาพการปรับ
ในที่สุดคุณก็จะเข้าใจปัญหา จากนั้นคุณจะมุ่งเน้นไปที่ข้อผิดพลาดในการตรวจสอบได้โดยเฉพาะ แม้ว่าการทดลองจะไม่ได้ให้ข้อมูลเกี่ยวกับโครงสร้างของปัญหาการปรับแต่งอย่างเต็มที่ก็ตาม
ออกแบบการทดสอบรอบถัดไป
สรุป: ระบุไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ไฮเปอร์พารามิเตอร์ที่รบกวน และไฮเปอร์พารามิเตอร์คงที่สำหรับเป้าหมายการทดลอง สร้างลำดับการศึกษาเพื่อเปรียบเทียบค่าต่างๆ ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ขณะเพิ่มประสิทธิภาพไฮเปอร์พารามิเตอร์ที่รบกวน เลือกพื้นที่ค้นหาของไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญเพื่อปรับสมดุลต้นทุนทรัพยากรกับคุณค่าทางวิทยาศาสตร์
ระบุไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ไฮเปอร์พารามิเตอร์ที่ทำให้เกิดความรำคาญ และไฮเปอร์พารามิเตอร์คงที่
สำหรับเป้าหมายที่กำหนด ไฮเปอร์พารามิเตอร์ทั้งหมดจะอยู่ในหมวดหมู่ใดหมวดหมู่หนึ่งต่อไปนี้
- ไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์คือไฮเปอร์พารามิเตอร์ที่ส่งผลต่อประสิทธิภาพของโมเดล ซึ่งเป็นสิ่งที่คุณพยายามวัด
- ไฮเปอร์พารามิเตอร์ที่ทำให้เกิดความแปรปรวนคือไฮเปอร์พารามิเตอร์ที่ต้องเพิ่มประสิทธิภาพ เพื่อเปรียบเทียบค่าต่างๆ ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์อย่างเป็นธรรม ไฮเปอร์พารามิเตอร์ที่ทำให้เกิดความคลาดเคลื่อนจะคล้ายกับ พารามิเตอร์ที่ทำให้เกิดความคลาดเคลื่อนในสถิติ
- ไฮเปอร์พารามิเตอร์คงที่มีค่าคงที่ในการทดลองรอบปัจจุบัน ค่าของไฮเปอร์พารามิเตอร์คงที่ควรจะไม่เปลี่ยนแปลงเมื่อ คุณเปรียบเทียบค่าต่างๆ ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ การแก้ไขไฮเปอร์พารามิเตอร์บางอย่างสำหรับการทดสอบชุดหนึ่งหมายความว่าคุณต้องยอมรับว่าข้อสรุปที่ได้จากการทดสอบอาจไม่ถูกต้องสำหรับการตั้งค่าอื่นๆ ของไฮเปอร์พารามิเตอร์ที่แก้ไข กล่าวอีกนัยหนึ่งคือ ไฮเปอร์พารามิเตอร์คงที่ จะสร้างข้อควรระวังสำหรับข้อสรุปใดๆ ที่คุณได้จากการทดสอบ
ตัวอย่างเช่น สมมติว่าเป้าหมายของคุณคือ
พิจารณาว่าโมเดลที่มีเลเยอร์ที่ซ่อนอยู่มากกว่ามีข้อผิดพลาดในการตรวจสอบที่ต่ำกว่าหรือไม่
ในกรณีนี้
- อัตราการเรียนรู้เป็นไฮเปอร์พารามิเตอร์ที่น่ารำคาญเนื่องจากคุณจะเปรียบเทียบโมเดลที่มีจำนวนเลเยอร์ที่ซ่อนต่างกันได้อย่างเป็นธรรมก็ต่อเมื่อปรับอัตราการเรียนรู้แยกกันสำหรับจำนวนเลเยอร์ที่ซ่อนแต่ละจำนวน (โดยทั่วไปแล้ว อัตราการเรียนรู้ที่เหมาะสมจะขึ้นอยู่กับสถาปัตยกรรมของโมเดล)
- ฟังก์ชันการกระตุ้นอาจเป็นไฮเปอร์พารามิเตอร์คงที่หากคุณได้ พิจารณาในการทดลองก่อนหน้านี้แล้วว่าฟังก์ชันการกระตุ้นที่ดีที่สุด ไม่ได้ขึ้นอยู่กับความลึกของโมเดล หรือคุณยินดีที่จะจำกัด ข้อสรุปเกี่ยวกับจำนวนเลเยอร์ที่ซ่อนไว้เพื่อครอบคลุมฟังก์ชัน การเปิดใช้งานนี้ หรืออาจเป็นไฮเปอร์พารามิเตอร์ที่น่ารำคาญหากคุณพร้อมที่จะปรับแยกกันสำหรับจำนวนเลเยอร์ที่ซ่อนแต่ละจำนวน
ไฮเปอร์พารามิเตอร์หนึ่งๆ อาจเป็นไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญ หรือไฮเปอร์พารามิเตอร์คงที่ โดยการกำหนด ไฮเปอร์พารามิเตอร์จะเปลี่ยนแปลงไปตามเป้าหมายการทดลอง เช่น ฟังก์ชันการเปิดใช้งานอาจเป็นฟังก์ชันใดก็ได้ต่อไปนี้
- ไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์: ReLU หรือ tanh เป็นตัวเลือกที่ดีกว่าสำหรับปัญหาของเราไหม
- ไฮเปอร์พารามิเตอร์ที่รบกวน: โมเดล 5 เลเยอร์ที่ดีที่สุดดีกว่าโมเดล 6 เลเยอร์ที่ดีที่สุดหรือไม่ เมื่อคุณอนุญาตฟังก์ชันกระตุ้นที่อาจเป็นไปได้หลายแบบ
- ไฮเปอร์พารามิเตอร์คงที่: สำหรับเครือข่าย ReLU การเพิ่มการทําให้เป็นกลุ่มปกติใน ตําแหน่งหนึ่งๆ ช่วยได้ไหม
เมื่อออกแบบการทดสอบรอบใหม่ ให้ทำดังนี้
- ระบุไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์สำหรับเป้าหมายการทดสอบ (ในขั้นตอนนี้ คุณสามารถพิจารณาไฮเปอร์พารามิเตอร์อื่นๆ ทั้งหมดเป็นไฮเปอร์พารามิเตอร์ที่รบกวน)
- แปลงไฮเปอร์พารามิเตอร์ที่น่ารำคาญบางอย่างเป็นไฮเปอร์พารามิเตอร์คงที่
หากมีทรัพยากรไม่จำกัด คุณควรปล่อยให้ไฮเปอร์พารามิเตอร์ที่ไม่ใช่ทางวิทยาศาสตร์ทั้งหมด เป็นไฮเปอร์พารามิเตอร์ที่รบกวน เพื่อให้ข้อสรุปที่คุณได้จากการทดลอง ไม่มีข้อควรระวังเกี่ยวกับค่าไฮเปอร์พารามิเตอร์คงที่ อย่างไรก็ตาม ยิ่งคุณพยายามปรับไฮเปอร์พารามิเตอร์ที่รบกวนมากเท่าใด ความเสี่ยงที่คุณจะปรับไฮเปอร์พารามิเตอร์เหล่านั้นได้ไม่ดีพอสำหรับแต่ละการตั้งค่าของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ก็จะยิ่งมากขึ้น และสุดท้ายคุณอาจได้ข้อสรุปที่ไม่ถูกต้องจากการทดลอง ดังที่อธิบายไว้ในส่วนถัดไป คุณสามารถรับมือกับความเสี่ยงนี้ได้โดยการเพิ่มงบประมาณการคำนวณ อย่างไรก็ตาม งบประมาณทรัพยากรสูงสุดมักจะน้อยกว่าที่จำเป็นในการปรับ ไฮเปอร์พารามิเตอร์ที่ไม่ใช่ทางวิทยาศาสตร์ทั้งหมด
เราขอแนะนำให้แปลงไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญให้เป็นไฮเปอร์พารามิเตอร์คงที่ เมื่อข้อควรระวังที่เกิดจากการแก้ไขนั้นเป็นภาระน้อยกว่าต้นทุนของ การรวมไฮเปอร์พารามิเตอร์ดังกล่าวเป็นไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญ ยิ่งไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญโต้ตอบกับไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์มากเท่าใด การแก้ไขค่าก็จะยิ่งสร้างความเสียหายมากขึ้นเท่านั้น เช่น ค่าที่ดีที่สุดของความแรงของการลดทอนน้ำหนักมักจะขึ้นอยู่กับขนาดของโมเดล ดังนั้นการเปรียบเทียบขนาดโมเดลที่แตกต่างกันโดยสมมติว่ามีการลดทอนน้ำหนักค่าเดียวที่เฉพาะเจาะจงจะไม่ให้ข้อมูลเชิงลึกมากนัก
พารามิเตอร์เครื่องมือเพิ่มประสิทธิภาพบางรายการ
โดยทั่วไปแล้ว ไฮเปอร์พารามิเตอร์ของเครื่องมือเพิ่มประสิทธิภาพบางรายการ (เช่น อัตราการเรียนรู้ โมเมนตัม พารามิเตอร์กำหนดการอัตราการเรียนรู้ เบต้าของ Adam ฯลฯ) เป็นไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญ เนื่องจากมีแนวโน้มที่จะโต้ตอบกับการเปลี่ยนแปลงอื่นๆ มากที่สุด Hyperparameter ของเครื่องมือเพิ่มประสิทธิภาพเหล่านี้มักไม่ใช่ Hyperparameter ทางวิทยาศาสตร์ เนื่องจากเป้าหมายอย่าง "อัตราการเรียนรู้ที่ดีที่สุดสำหรับไปป์ไลน์ปัจจุบันคืออะไร" ไม่ได้ให้ข้อมูลเชิงลึกมากนัก เพราะการตั้งค่าที่ดีที่สุดอาจเปลี่ยนแปลงได้ เมื่อมีการเปลี่ยนแปลงไปป์ไลน์ครั้งถัดไป
คุณอาจแก้ไขไฮเปอร์พารามิเตอร์ของเครื่องมือเพิ่มประสิทธิภาพในบางครั้งเนื่องจากข้อจำกัดด้านทรัพยากร หรือหลักฐานที่ชัดเจนเป็นพิเศษว่าไฮเปอร์พารามิเตอร์เหล่านั้นไม่ได้โต้ตอบกับ พารามิเตอร์ทางวิทยาศาสตร์ อย่างไรก็ตาม โดยทั่วไปคุณควรพิจารณาว่าต้องปรับไฮเปอร์พารามิเตอร์ของเครื่องมือเพิ่มประสิทธิภาพแยกกันเพื่อให้เปรียบเทียบการตั้งค่าไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์แบบต่างๆ ได้อย่างเป็นธรรม จึงไม่ควรแก้ไข นอกจากนี้ ยังไม่มีเหตุผลที่ควรเลือกค่าไฮเปอร์พารามิเตอร์ของตัวเพิ่มประสิทธิภาพค่าหนึ่งมากกว่าอีกค่าหนึ่ง เช่น ค่าไฮเปอร์พารามิเตอร์ของตัวเพิ่มประสิทธิภาพมักไม่ส่งผลต่อต้นทุนการคำนวณของการส่งต่อหรือการไล่ระดับในทางใดทางหนึ่ง
การเลือกเครื่องมือเพิ่มประสิทธิภาพ
โดยปกติแล้วตัวเลือกเครื่องมือเพิ่มประสิทธิภาพมักจะเป็นอย่างใดอย่างหนึ่งต่อไปนี้
- ไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์
- ไฮเปอร์พารามิเตอร์คงที่
เครื่องมือเพิ่มประสิทธิภาพเป็นไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์หากเป้าหมายการทดสอบของคุณเกี่ยวข้องกับการเปรียบเทียบเครื่องมือเพิ่มประสิทธิภาพที่แตกต่างกันตั้งแต่ 2 รายการขึ้นไปอย่างเป็นธรรม เช่น
พิจารณาว่าเครื่องมือเพิ่มประสิทธิภาพใดที่ทำให้เกิดข้อผิดพลาดในการตรวจสอบน้อยที่สุดในจำนวนขั้นตอนที่กำหนด
หรือคุณอาจกำหนดให้ตัวเพิ่มประสิทธิภาพเป็นไฮเปอร์พารามิเตอร์คงที่ด้วยเหตุผลหลายประการ ซึ่งรวมถึง
- การทดสอบก่อนหน้านี้แสดงให้เห็นว่าเครื่องมือเพิ่มประสิทธิภาพที่ดีที่สุดสำหรับการปรับแต่งปัญหา ไม่ได้ขึ้นอยู่กับไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ในปัจจุบัน
- คุณต้องการเปรียบเทียบค่าของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์โดยใช้เครื่องมือเพิ่มประสิทธิภาพนี้เนื่องจากเส้นโค้งการฝึกของเครื่องมือนี้เข้าใจได้ง่ายกว่า
- คุณต้องการใช้เครื่องมือเพิ่มประสิทธิภาพนี้เนื่องจากใช้หน่วยความจำน้อยกว่าเครื่องมืออื่นๆ
ไฮเปอร์พารามิเตอร์การทำให้เป็นปกติ
โดยปกติแล้ว ไฮเปอร์พารามิเตอร์ที่เทคนิคการทำให้เป็นปกติแนะนำจะเป็น ไฮเปอร์พารามิเตอร์ที่น่ารำคาญ อย่างไรก็ตาม การเลือกว่าจะรวมเทคนิคการทำให้เป็นปกติหรือไม่นั้นเป็นไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์หรือไฮเปอร์พารามิเตอร์คงที่
เช่น การปรับค่าความปกติของ Dropout จะเพิ่มความซับซ้อนของโค้ด ดังนั้น เมื่อตัดสินใจว่าจะรวมการทำให้เป็นปกติแบบ Dropout หรือไม่ คุณอาจทำให้ "ไม่มี Dropout" เทียบกับ "Dropout" เป็นไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ แต่ทำให้อัตรา Dropout เป็นไฮเปอร์พารามิเตอร์ที่น่ารำคาญ หากคุณตัดสินใจที่จะเพิ่มการทำให้เป็นค่าปกติแบบ Dropout ลงในไปป์ไลน์ตาม การทดลองนี้ อัตราการหยุดทำงานจะเป็นไฮเปอร์พารามิเตอร์ที่น่ารำคาญ ในการทดลองในอนาคต
ไฮเปอร์พารามิเตอร์ของสถาปัตยกรรม
โดยปกติแล้ว ไฮเปอร์พารามิเตอร์ของสถาปัตยกรรมมักเป็นไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์หรือไฮเปอร์พารามิเตอร์คงที่ เนื่องจากการเปลี่ยนแปลงสถาปัตยกรรมอาจส่งผลต่อต้นทุนการแสดงและการฝึก ความหน่วง และข้อกำหนดด้านหน่วยความจำ ตัวอย่างเช่น โดยปกติแล้วจำนวนเลเยอร์จะเป็นไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์หรือแบบคงที่ เนื่องจากมีแนวโน้มที่จะส่งผลกระทบอย่างมากต่อความเร็วในการฝึกและปริมาณการใช้หน่วยความจำ
การขึ้นอยู่กับไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์
ในบางกรณี ชุดไฮเปอร์พารามิเตอร์ที่รบกวนและไฮเปอร์พารามิเตอร์คงที่ขึ้นอยู่กับค่าของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ตัวอย่างเช่น สมมติว่าคุณพยายามพิจารณาว่าตัวเพิ่มประสิทธิภาพใดใน โมเมนตัมของ Nesterov และ Adam ที่ทำให้เกิดข้อผิดพลาดในการตรวจสอบที่ต่ำที่สุด ในกรณีนี้
- Hyperparameter ทางวิทยาศาสตร์คือตัวเพิ่มประสิทธิภาพ ซึ่งมีค่าเป็น
{"Nesterov_momentum", "Adam"}
- ค่า
optimizer="Nesterov_momentum"
จะแนะนํา ไฮเปอร์พารามิเตอร์{learning_rate, momentum}
ซึ่งอาจเป็น ไฮเปอร์พารามิเตอร์ที่คงที่หรือไฮเปอร์พารามิเตอร์ที่รบกวน - ค่า
optimizer="Adam"
จะแนะนําไฮเปอร์พารามิเตอร์{learning_rate, beta1, beta2, epsilon}
ซึ่งอาจเป็นไฮเปอร์พารามิเตอร์ที่คงที่หรือไฮเปอร์พารามิเตอร์ที่รบกวน
ไฮเปอร์พารามิเตอร์ที่มีเฉพาะค่าบางค่าของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์เรียกว่าไฮเปอร์พารามิเตอร์แบบมีเงื่อนไข
อย่าคิดว่าไฮเปอร์พารามิเตอร์แบบมีเงื่อนไข 2 รายการเหมือนกันเพียงเพราะมีชื่อเดียวกัน ในตัวอย่างก่อนหน้า ไฮเปอร์พารามิเตอร์แบบมีเงื่อนไขที่ชื่อ learning_rate
เป็นไฮเปอร์พารามิเตอร์ที่แตกต่างกันสำหรับ optimizer="Nesterov_momentum"
และ optimizer="Adam"
บทบาทของโมเมนตัมจะคล้ายกัน
(แม้จะไม่เหมือนกัน) ในอัลกอริทึมทั้ง 2 แต่ช่วงค่าที่
ทำงานได้ดีในเครื่องมือเพิ่มประสิทธิภาพแต่ละรายการมักจะแตกต่างกันหลายลำดับ
ของขนาด
สร้างชุดการศึกษา
หลังจากระบุไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์และไฮเปอร์พารามิเตอร์ที่ทำให้เกิดความรำคาญแล้ว คุณควรออกแบบการศึกษาหรือลำดับการศึกษาเพื่อก้าวไปสู่เป้าหมายการทดลอง การศึกษาจะระบุชุดการกำหนดค่าไฮเปอร์พารามิเตอร์ที่จะเรียกใช้ เพื่อการวิเคราะห์ในภายหลัง การกำหนดค่าแต่ละรายการเรียกว่าการทดสอบ โดยทั่วไปการสร้างการศึกษาจะเกี่ยวข้องกับการเลือกสิ่งต่อไปนี้
- ไฮเปอร์พารามิเตอร์ที่แตกต่างกันไปในการทดลอง
- ค่าที่ไฮเปอร์พารามิเตอร์เหล่านั้นใช้ได้ (พื้นที่ค้นหา)
- จำนวนการทดลอง
- อัลกอริทึมการค้นหาอัตโนมัติเพื่อสุ่มตัวอย่างการทดลองจำนวนมากจากพื้นที่การค้นหา
หรือคุณจะสร้างการศึกษาโดยระบุชุดการกำหนดค่าไฮเปอร์พารามิเตอร์ ด้วยตนเองก็ได้
วัตถุประสงค์ของการศึกษาคือการดำเนินการต่อไปนี้พร้อมกัน
- เรียกใช้ไปป์ไลน์ด้วยค่าต่างๆ ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์
- "การเพิ่มประสิทธิภาพ" (หรือ "การเพิ่มประสิทธิภาพเหนือ") ไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญเพื่อให้การเปรียบเทียบระหว่างค่าต่างๆ ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์มีความเป็นธรรมมากที่สุด
ในกรณีที่ง่ายที่สุด คุณจะทำการศึกษาแยกกันสำหรับการกำหนดค่าแต่ละรายการ ของพารามิเตอร์ทางวิทยาศาสตร์ โดยการศึกษาแต่ละครั้งจะปรับไฮเปอร์พารามิเตอร์ที่รบกวน เช่น หากเป้าหมายคือการเลือกเครื่องมือเพิ่มประสิทธิภาพที่ดีที่สุด จากโมเมนตัมของ Nesterov และ Adam คุณสามารถสร้างการศึกษา 2 รายการได้ดังนี้
- การศึกษาหนึ่งซึ่ง
optimizer="Nesterov_momentum"
และไฮเปอร์พารามิเตอร์ที่รบกวน คือ{learning_rate, momentum}
- การศึกษาอีกชิ้นหนึ่งซึ่ง
optimizer="Adam"
และไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญ{learning_rate, beta1, beta2, epsilon}
คุณจะเปรียบเทียบเครื่องมือเพิ่มประสิทธิภาพ 2 รายการได้โดยเลือกการทดสอบที่มีประสิทธิภาพดีที่สุด จากการศึกษาแต่ละครั้ง
คุณสามารถใช้อัลกอริทึมการเพิ่มประสิทธิภาพแบบไม่มีการไล่ระดับสี ซึ่งรวมถึงวิธีการต่างๆ เช่น การเพิ่มประสิทธิภาพแบบเบย์ หรืออัลกอริทึมเชิงวิวัฒนาการ เพื่อเพิ่มประสิทธิภาพไฮเปอร์พารามิเตอร์ที่ทำให้เกิดความคลาดเคลื่อน อย่างไรก็ตาม เราต้องการใช้การค้นหาแบบกึ่งสุ่ม ในระยะการสำรวจของการปรับแต่งเนื่องจากข้อดีต่างๆ ที่ มีในการตั้งค่านี้ หลังจากสิ้นสุดการสํารวจ เราขอแนะนําให้ใช้ ซอฟต์แวร์การเพิ่มประสิทธิภาพแบบเบย์ที่ทันสมัย (หากมี)
ลองพิจารณากรณีที่ซับซ้อนมากขึ้นซึ่งคุณต้องการเปรียบเทียบค่าไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์จำนวนมาก แต่ไม่สามารถทำการศึกษาอิสระจำนวนมากได้ ในกรณีนี้ คุณจะทำสิ่งต่อไปนี้ได้
- รวมพารามิเตอร์ทางวิทยาศาสตร์ไว้ในพื้นที่ค้นหาเดียวกันกับ ไฮเปอร์พารามิเตอร์ที่รบกวน
- ใช้อัลกอริทึมการค้นหาเพื่อสุ่มค่าของทั้งไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์และไฮเปอร์พารามิเตอร์ที่รบกวนในการศึกษาครั้งเดียว
เมื่อใช้วิธีนี้ ไฮเปอร์พารามิเตอร์แบบมีเงื่อนไขอาจทำให้เกิดปัญหาได้ ท้ายที่สุดแล้ว การระบุพื้นที่ค้นหาเป็นเรื่องยาก เว้นแต่ชุดของไฮเปอร์พารามิเตอร์ที่สร้างความรำคาญจะเหมือนกันสำหรับค่าทั้งหมดของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ในกรณีนี้ เรายิ่งชอบใช้การค้นหาแบบกึ่งสุ่มมากกว่าเครื่องมือเพิ่มประสิทธิภาพแบบกล่องดำที่ซับซ้อนกว่า เนื่องจากรับประกันได้ว่า ค่าต่างๆ ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์จะได้รับการสุ่มอย่างสม่ำเสมอ ไม่ว่าอัลกอริทึมการค้นหาจะเป็นแบบใด ให้ตรวจสอบว่าอัลกอริทึมค้นหา พารามิเตอร์ทางวิทยาศาสตร์อย่างสม่ำเสมอ
สร้างสมดุลระหว่างการทดสอบที่ให้ข้อมูลและราคาไม่แพง
เมื่อออกแบบการศึกษาหรือลำดับการศึกษา ให้จัดสรรงบประมาณที่จำกัด เพื่อให้บรรลุเป้าหมาย 3 ประการต่อไปนี้อย่างเพียงพอ
- เปรียบเทียบค่าที่แตกต่างกันมากพอของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์
- การปรับแต่งไฮเปอร์พารามิเตอร์ที่ทำให้เกิดปัญหาในพื้นที่การค้นหาที่ใหญ่พอ
- การสุ่มตัวอย่างพื้นที่ค้นหาของไฮเปอร์พารามิเตอร์รบกวนให้หนาแน่นเพียงพอ
ยิ่งคุณบรรลุเป้าหมายทั้ง 3 ข้อนี้ได้ดีเท่าไร คุณก็จะยิ่งได้รับข้อมูลเชิงลึกจากการทดสอบมากขึ้นเท่านั้น การเปรียบเทียบค่าของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ให้ได้มากที่สุด จะช่วยขยายขอบเขตของข้อมูลเชิงลึกที่คุณได้รับจากการทดสอบ
การรวมไฮเปอร์พารามิเตอร์ที่ไม่เกี่ยวข้องให้ได้มากที่สุดและอนุญาตให้ไฮเปอร์พารามิเตอร์ที่ไม่เกี่ยวข้องแต่ละรายการแตกต่างกันในช่วงที่กว้างที่สุดจะเพิ่มความมั่นใจว่าค่า "ดี" ของไฮเปอร์พารามิเตอร์ที่ไม่เกี่ยวข้องมีอยู่ในพื้นที่ค้นหาสำหรับการกำหนดค่าแต่ละรายการของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ มิฉะนั้น คุณอาจทำการเปรียบเทียบที่ไม่เป็นธรรมระหว่างค่าของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์โดยไม่ค้นหาภูมิภาคที่เป็นไปได้ของพื้นที่ไฮเปอร์พารามิเตอร์ที่รบกวน ซึ่งอาจมีค่าที่ดีกว่าสำหรับค่าบางค่าของพารามิเตอร์ทางวิทยาศาสตร์
สุ่มตัวอย่างพื้นที่ค้นหาของไฮเปอร์พารามิเตอร์รบกวนให้หนาแน่นที่สุด การทำเช่นนี้จะช่วยเพิ่มความมั่นใจว่ากระบวนการค้นหาจะพบการตั้งค่าที่ดีสำหรับไฮเปอร์พารามิเตอร์ที่ทำให้เกิดปัญหาซึ่งอาจมีอยู่ในพื้นที่ค้นหา ไม่เช่นนั้น คุณอาจเปรียบเทียบค่าพารามิเตอร์ทางวิทยาศาสตร์อย่างไม่เป็นธรรมเนื่องจากค่าบางค่าอาจโชคดีกว่าในการสุ่มตัวอย่างไฮเปอร์พารามิเตอร์ที่รบกวน
อย่างไรก็ตาม การปรับปรุงในมิติข้อมูลทั้ง 3 นี้ต้องมีสิ่งต่อไปนี้อย่างใดอย่างหนึ่ง
- การเพิ่มจำนวนการทดลองใช้จึงทำให้ค่าใช้จ่ายด้านทรัพยากรเพิ่มขึ้น
- หาวิธีประหยัดทรัพยากรในมิติข้อมูลอื่นๆ
ปัญหาทุกอย่างมีลักษณะเฉพาะและข้อจำกัดด้านการคำนวณของตัวเอง ดังนั้น การจัดสรรทรัพยากรให้บรรลุเป้าหมายทั้ง 3 ข้อนี้จึงต้องอาศัยความรู้เกี่ยวกับโดเมนในระดับหนึ่ง หลังจากทำการศึกษาแล้ว ให้พยายามดูว่าการศึกษาได้ปรับไฮเปอร์พารามิเตอร์ที่รบกวนได้ดีพอหรือไม่ กล่าวคือ การศึกษาได้ค้นหาพื้นที่ขนาดใหญ่พอและครอบคลุมมากพอที่จะเปรียบเทียบไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ได้อย่างเป็นธรรม (ดังที่อธิบายไว้โดยละเอียดในส่วนถัดไป)
เรียนรู้จากผลการทดสอบ
คำแนะนำ: นอกเหนือจากการพยายามบรรลุเป้าหมายทางวิทยาศาสตร์เดิมของการทดลองแต่ละกลุ่มแล้ว ให้ตรวจสอบรายการคำถามเพิ่มเติม หากพบปัญหา ให้แก้ไขและเรียกใช้การทดสอบอีกครั้ง
ท้ายที่สุดแล้ว การทดสอบแต่ละกลุ่มจะมีเป้าหมายที่เฉพาะเจาะจง คุณควรประเมินหลักฐานที่การทดสอบให้ไว้เพื่อบรรลุเป้าหมายนั้น แต่หากถามคำถามที่ถูกต้อง คุณมักจะพบปัญหา ที่ต้องแก้ไขก่อนที่การทดสอบชุดหนึ่งๆ จะก้าวไปสู่เป้าหมายเดิมได้ หากไม่ถามคำถามเหล่านี้ คุณอาจสรุปผล ไม่ถูกต้อง
เนื่องจากการทําการทดสอบอาจมีค่าใช้จ่ายสูง คุณจึงควร ดึงข้อมูลเชิงลึกอื่นๆ ที่มีประโยชน์จากกลุ่มการทดสอบแต่ละกลุ่มด้วย แม้ว่า ข้อมูลเชิงลึกเหล่านี้จะไม่เกี่ยวข้องกับเป้าหมายปัจจุบันในทันทีก็ตาม
ก่อนวิเคราะห์ชุดการทดสอบที่กำหนดเพื่อก้าวไปสู่เป้าหมายเดิม ให้ถามคำถามเพิ่มเติมต่อไปนี้กับตัวเอง
- พื้นที่ค้นหามีขนาดใหญ่พอไหม หากจุดที่เหมาะสมจากการศึกษาอยู่ใกล้ขอบเขตของพื้นที่ค้นหาในมิติข้อมูลอย่างน้อย 1 มิติ การค้นหาอาจไม่กว้างพอ ในกรณีนี้ ให้ทำการศึกษาอื่นที่มีพื้นที่การค้นหาที่กว้างขึ้น
- คุณได้สุ่มตัวอย่างคะแนนจากพื้นที่ค้นหาเพียงพอแล้วใช่ไหม หากไม่เป็นเช่นนั้น ให้เรียกใช้จุดเพิ่มเติมหรือตั้งเป้าหมายการปรับแต่งให้น้อยลง
- การทดลองในแต่ละการศึกษาเป็นไปไม่ได้กี่ส่วน กล่าวคือ การทดลองใดที่แตกต่างกัน มีค่าการสูญเสียที่แย่มาก หรือไม่สามารถทำงานได้เลยเนื่องจากละเมิดข้อจำกัดโดยนัยบางอย่าง เมื่อจุดในส่วนที่ใหญ่มากในการศึกษาเป็นไปไม่ได้ ให้ปรับพื้นที่ค้นหาเพื่อหลีกเลี่ยงการสุ่มตัวอย่างจุดดังกล่าว ซึ่งบางครั้งอาจต้องกำหนดพารามิเตอร์ใหม่ให้กับพื้นที่ค้นหา ในบางกรณี จุดที่เป็นไปไม่ได้จำนวนมาก อาจบ่งบอกถึงข้อบกพร่องในโค้ดการฝึก
- โมเดลมีปัญหาด้านการเพิ่มประสิทธิภาพไหม
- คุณเรียนรู้อะไรได้บ้างจากเส้นโค้งการฝึกของ การทดลองที่ดีที่สุด เช่น การทดลองที่ดีที่สุดมีเส้นโค้งการฝึกที่สอดคล้องกับการ ฟิตมากเกินไปที่เป็นปัญหาหรือไม่
หากจำเป็น ให้ปรับการศึกษาหรือกลุ่มการศึกษาล่าสุดตามคำตอบของคำถามก่อนหน้าเพื่อปรับปรุงพื้นที่การค้นหาและ/หรือสุ่มตัวอย่างการทดลองเพิ่มเติม หรือดำเนินการแก้ไขอื่นๆ
เมื่อตอบคำถามก่อนหน้าแล้ว คุณจะประเมินหลักฐาน ที่การทดสอบให้ไว้เพื่อเป้าหมายเดิมได้ เช่น ประเมิน ว่าการเปลี่ยนแปลงมีประโยชน์หรือไม่
ระบุขอบเขตพื้นที่การค้นหาที่ไม่ดี
พื้นที่ค้นหาจะน่าสงสัยหากจุดที่ดีที่สุดที่สุ่มจากพื้นที่นั้นอยู่ใกล้ ขอบเขตของพื้นที่ คุณอาจพบจุดที่ดียิ่งขึ้นหากขยาย ช่วงการค้นหาไปในทิศทางนั้น
หากต้องการตรวจสอบขอบเขตพื้นที่ค้นหา เราขอแนะนําให้พล็อตการทดลองที่เสร็จสมบูรณ์ ในสิ่งที่เราเรียกว่าพล็อตแกนไฮเปอร์พารามิเตอร์พื้นฐาน ในกราฟเหล่านี้ เราจะพล็อตค่าวัตถุประสงค์ในการตรวจสอบเทียบกับไฮเปอร์พารามิเตอร์รายการใดรายการหนึ่ง (เช่น อัตราการเรียนรู้) แต่ละจุดในพล็อตจะสอดคล้องกับการทดลองครั้งเดียว
โดยปกติแล้ว ค่าวัตถุประสงค์ในการตรวจสอบความถูกต้องของการทดลองแต่ละครั้งควรเป็นค่าที่ดีที่สุด ที่ได้รับตลอดระยะเวลาการฝึก
รูปที่ 1: ตัวอย่างขอบเขตพื้นที่ค้นหาที่ไม่ดีและขอบเขตพื้นที่ค้นหาที่ยอมรับได้
พล็อตในรูปที่ 1 แสดงอัตราข้อผิดพลาด (ยิ่งต่ำยิ่งดี) เทียบกับ อัตราการเรียนรู้เริ่มต้น หากกลุ่มจุดที่ดีที่สุดอยู่ใกล้ขอบของพื้นที่ค้นหา (ในมิติข้อมูลบางอย่าง) คุณอาจต้องขยายขอบเขตพื้นที่ค้นหาจนกว่าจุดสังเกตที่ดีที่สุดจะไม่อยู่ใกล้ขอบเขตอีกต่อไป
การศึกษาหลายครั้งมีการทดลองที่ "เป็นไปไม่ได้" ซึ่งแตกต่างกันหรือให้ผลลัพธ์ที่แย่มาก (ทำเครื่องหมายด้วย X สีแดงในรูปที่ 1) หากการทดลองทั้งหมดไม่สามารถใช้กับอัตราการเรียนรู้ที่สูงกว่าค่าเกณฑ์บางค่าได้ และหากการทดลองที่มีประสิทธิภาพดีที่สุดมีอัตราการเรียนรู้ที่ขอบเขตของภูมิภาคนั้น โมเดลอาจประสบปัญหาด้านความเสถียรซึ่งทำให้ไม่สามารถเข้าถึงอัตราการเรียนรู้ที่สูงขึ้นได้
ไม่ได้สุ่มตัวอย่างจุดในพื้นที่ค้นหามากพอ
โดยทั่วไปแล้ว การทราบ ว่าพื้นที่การค้นหาได้รับการสุ่มตัวอย่างอย่างหนาแน่นเพียงพอหรือไม่นั้นเป็นเรื่องยากมาก 🤖 การทดลองใช้หลายครั้งดีกว่าการทดลองใช้น้อยครั้ง แต่การทดลองใช้หลายครั้ง จะทำให้มีค่าใช้จ่ายเพิ่มเติมอย่างเห็นได้ชัด
เนื่องจากเป็นการยากที่จะทราบว่าคุณได้ทำการสุ่มตัวอย่างเพียงพอแล้วหรือไม่ เราจึงขอแนะนำให้คุณทำดังนี้
- ลองฟังเพลงที่คุณสามารถซื้อได้
- การปรับความเชื่อมั่นโดยสัญชาตญาณจากการดูพล็อตแกนไฮเปอร์พารามิเตอร์ต่างๆ ซ้ำๆ และพยายามทำความเข้าใจว่ามีจุดกี่จุด ในพื้นที่ "ดี" ของพื้นที่การค้นหา
ตรวจสอบเส้นโค้งการฝึก
สรุป: การตรวจสอบเส้นโค้งการสูญเสีย เป็นวิธีง่ายๆ ในการระบุโหมดความล้มเหลวที่พบบ่อยและช่วยให้คุณจัดลำดับความสำคัญ ของการดำเนินการถัดไปที่อาจเกิดขึ้นได้
ในหลายๆ กรณี วัตถุประสงค์หลักของการทดสอบของคุณต้องการเพียง พิจารณาข้อผิดพลาดในการตรวจสอบความถูกต้องของการทดสอบแต่ละครั้ง อย่างไรก็ตาม โปรดระมัดระวังเมื่อลดการทดสอบแต่ละครั้งให้เหลือเพียงตัวเลขเดียว เนื่องจากโฟกัสดังกล่าวอาจซ่อนรายละเอียดสำคัญเกี่ยวกับสิ่งที่เกิดขึ้นเบื้องหลัง สําหรับการศึกษาทุกครั้ง เราขอแนะนําอย่างยิ่งให้ดูเส้นโค้ง การสูญเสีย ของการทดลองที่ดีที่สุดอย่างน้อย 2-3 ครั้ง แม้ว่าการตรวจสอบเส้นโค้งการสูญเสีย (รวมถึงการสูญเสียจากการฝึกและการสูญเสียจากการตรวจสอบ) จะไม่จำเป็นต่อการบรรลุวัตถุประสงค์หลักของการทดลอง แต่ก็เป็นวิธีที่ดีในการระบุโหมดความล้มเหลวที่พบบ่อย และช่วยให้คุณจัดลําดับความสําคัญของการดําเนินการที่จะทําต่อไปได้
เมื่อตรวจสอบเส้นโค้งการสูญเสีย ให้มุ่งเน้นที่คำถามต่อไปนี้
การทดลองใดๆ แสดงการปรับมากเกินไปที่เป็นปัญหาหรือไม่ การเกิด Overfitting ที่มีปัญหาจะเกิดขึ้นเมื่อข้อผิดพลาดในการตรวจสอบเริ่ม เพิ่มขึ้นระหว่างการฝึก ในการตั้งค่าการทดลองที่คุณเพิ่มประสิทธิภาพไฮเปอร์พารามิเตอร์ที่ไม่เกี่ยวข้องโดยการเลือกการทดลอง "ดีที่สุด" สำหรับการตั้งค่าแต่ละรายการของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ให้ตรวจสอบการเกิด Overfitting ที่มีปัญหาในการทดลองที่ดีที่สุดแต่ละรายการที่สอดคล้องกับการตั้งค่าของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ที่คุณกำลังเปรียบเทียบ หากการทดลองที่ดีที่สุดแสดงให้เห็นถึงการปรับมากเกินไปที่เป็นปัญหา ให้ทำอย่างใดอย่างหนึ่งหรือทั้ง 2 อย่างต่อไปนี้
- เรียกใช้การทดสอบอีกครั้งด้วยเทคนิคการปรับค่าเพิ่มเติม
- ปรับพารามิเตอร์การทำให้เป็นปกติที่มีอยู่ก่อนเปรียบเทียบค่า ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ซึ่งอาจไม่เป็นเช่นนั้นหากไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์มีพารามิเตอร์การทำให้เป็นปกติ เนื่องจากในกรณีนี้ก็ไม่น่าแปลกใจหากการตั้งค่าความแรงต่ำของพารามิเตอร์การทำให้เป็นปกติเหล่านั้นส่งผลให้เกิดการปรับมากเกินไปที่เป็นปัญหา
การลดการเกิด Overfitting มักทำได้ง่ายๆ โดยใช้เทคนิคการทำให้เป็นปกติทั่วไป ซึ่งเพิ่มความซับซ้อนของโค้ดหรือการคำนวณเพิ่มเติมน้อยที่สุด (เช่น การทำให้เป็นปกติแบบ Dropout, การปรับป้ายกำกับให้เรียบ, การลดน้ำหนัก) ดังนั้น การเพิ่มการทดสอบเหล่านี้อย่างน้อย 1 รายการในการทดสอบรอบถัดไปจึงเป็นเรื่องง่าย เช่น หากไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์คือ "จำนวนเลเยอร์ที่ซ่อน" และการทดลองที่ดีที่สุดที่ใช้จำนวนเลเยอร์ที่ซ่อนมากที่สุดแสดงให้เห็นว่ามีการปรับมากเกินไปที่เป็นปัญหา เราขอแนะนำให้ลองอีกครั้งโดยใช้การปรับค่าปกติเพิ่มเติมแทนที่จะเลือกจำนวนเลเยอร์ที่ซ่อนที่น้อยกว่าทันที
แม้ว่าการทดลองที่ "ดีที่สุด" จะไม่มีการเกิด Overfitting ที่เป็นปัญหา แต่ก็อาจยังคงมีปัญหาหากเกิดขึ้นในการทดลองใดๆ การเลือกการทดลองที่ดีที่สุดจะระงับการกำหนดค่าที่แสดงการปรับมากเกินไปที่เป็นปัญหา และสนับสนุนการกำหนดค่าที่ไม่มีปัญหา กล่าวคือ การเลือกการทดลองที่ดีที่สุดจะทำให้การกำหนดค่าที่มีการปรับค่าปกติมากกว่าเป็นที่นิยม อย่างไรก็ตาม สิ่งที่ทำให้การฝึกแย่ลงอาจทำหน้าที่เป็นตัวปรับค่าปกติได้ แม้ว่าจะไม่ได้ตั้งใจให้เป็นเช่นนั้นก็ตาม ตัวอย่างเช่น การเลือกอัตราการเรียนรู้ที่ต่ำกว่าจะทำให้การฝึกมีความสม่ำเสมอโดยการจำกัดกระบวนการเพิ่มประสิทธิภาพ แต่โดยปกติแล้วเราไม่ต้องการเลือกอัตราการเรียนรู้ด้วยวิธีนี้ โปรดทราบว่าระบบอาจเลือกการทดลองที่ "ดีที่สุด" สำหรับการตั้งค่าแต่ละรายการของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ในลักษณะที่เอื้อต่อค่า "ไม่ดี" ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์หรือไฮเปอร์พารามิเตอร์ที่ทำให้เกิดความรำคาญบางรายการ
ข้อผิดพลาดในการฝึกหรือการตรวจสอบความถูกต้องมีความผันผวนสูงในแต่ละขั้น ตอนของการฝึกไหม หากเป็นเช่นนั้น การดำเนินการนี้อาจรบกวนสิ่งต่อไปนี้
- ความสามารถในการเปรียบเทียบค่าต่างๆ ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ เนื่องจากแต่ละการทดลองจะสิ้นสุดแบบสุ่มในขั้นตอนที่ "โชคดี" หรือ "โชคร้าย"
- ความสามารถในการสร้างผลลัพธ์ของการทดลองที่ดีที่สุดในเวอร์ชันที่ใช้งานจริง เนื่องจากโมเดลการผลิตอาจไม่ได้สิ้นสุดที่ขั้นตอน "โชคดี" เดียวกันกับในงานวิจัย
สาเหตุที่พบบ่อยที่สุดของความแตกต่างทีละขั้นตอน ได้แก่
- ความแปรปรวนของกลุ่มเนื่องจากการสุ่มตัวอย่างจากชุดการฝึก สำหรับแต่ละกลุ่ม
- ชุดข้อมูลสำหรับตรวจสอบความถูกต้องขนาดเล็ก
- การใช้อัตราการเรียนรู้ที่สูงเกินไปในช่วงท้ายของการฝึก
การแก้ไขที่เป็นไปได้มีดังนี้
- การเพิ่มขนาดกลุ่ม
- รับข้อมูลการตรวจสอบเพิ่มเติม
- การใช้การลดอัตราการเรียนรู้
- การใช้การหาค่าเฉลี่ยของ Polyak
การทดลองยังคงปรับปรุงเมื่อสิ้นสุดการฝึกไหม หากเป็นเช่นนั้น คุณจะอยู่ในระบอบ "ขึ้นอยู่กับการคำนวณ" และอาจได้รับประโยชน์จากการเพิ่ม จำนวนขั้นตอนการฝึกหรือเปลี่ยนกำหนดการอัตราการเรียนรู้
ประสิทธิภาพในชุดการฝึกและชุดการตรวจสอบถึงจุดอิ่มตัวนานก่อน ขั้นตอนการฝึกขั้นสุดท้ายหรือไม่ หากเป็นเช่นนั้น แสดงว่าคุณอยู่ในระบอบ "ไม่ได้ขึ้นอยู่กับการคำนวณ" และอาจลดจำนวนขั้นตอนการฝึกได้
นอกเหนือจากรายการนี้แล้ว คุณยังเห็นลักษณะการทำงานอื่นๆ อีกมากมาย ได้จากการตรวจสอบเส้นโค้งการสูญเสีย เช่น การสูญเสียการฝึกที่เพิ่มขึ้นระหว่างการฝึกมักจะบ่งบอกถึงข้อบกพร่องในไปป์ไลน์การฝึก
การตรวจหาว่าการเปลี่ยนแปลงมีประโยชน์หรือไม่ด้วยพล็อตการแยก
รูปที่ 2: พล็อตการแยกที่ตรวจสอบค่าที่ดีที่สุดของ Weight Decay สำหรับ ResNet-50 ที่ฝึกใน ImageNet
โดยปกติแล้ว เป้าหมายของการทดสอบชุดหนึ่งคือการเปรียบเทียบค่าต่างๆ ของ ไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์ ตัวอย่างเช่น สมมติว่าคุณต้องการกำหนด ค่าของการลดทอนน้ำหนักที่ทำให้เกิดข้อผิดพลาดในการตรวจสอบความถูกต้องที่ดีที่สุด พล็อตการแยกเป็นกรณีพิเศษของพล็อตแกนไฮเปอร์พารามิเตอร์พื้นฐาน แต่ละจุดในพล็อตการแยกจะสอดคล้องกับประสิทธิภาพของการทดลองที่ดีที่สุด ในไฮเปอร์พารามิเตอร์รบกวนบางส่วน (หรือทั้งหมด) กล่าวคือ พล็อตประสิทธิภาพของโมเดลหลังจาก "เพิ่มประสิทธิภาพ" ไฮเปอร์พารามิเตอร์ที่รบกวน
พล็อตการแยกช่วยให้การเปรียบเทียบแบบเทียบเท่า ระหว่างค่าต่างๆ ของไฮเปอร์พารามิเตอร์ทางวิทยาศาสตร์เป็นเรื่องง่าย ตัวอย่างเช่น พล็อตการแยกในรูปที่ 2 แสดงให้เห็นค่าของ Weight Decay ที่ให้ประสิทธิภาพการตรวจสอบที่ดีที่สุดสําหรับการกําหนดค่า เฉพาะของ ResNet-50 ที่ฝึกใน ImageNet
หากเป้าหมายคือการพิจารณาว่าจะรวมการลดทอนน้ำหนักหรือไม่ ให้เปรียบเทียบจุดที่ดีที่สุดจากพล็อตนี้กับค่าพื้นฐานที่ไม่มีการลดทอนน้ำหนัก เพื่อให้เปรียบเทียบได้อย่างเป็นธรรม ข้อมูลพื้นฐานควรได้รับการปรับอัตราการเรียนรู้ให้ดีเท่าๆ กันด้วย
เมื่อมีข้อมูลที่สร้างขึ้นจากการค้นหาแบบ (กึ่ง) สุ่มและกำลังพิจารณา ไฮเปอร์พารามิเตอร์ต่อเนื่องสำหรับพล็อตการแยก คุณสามารถประมาณ พล็อตการแยกได้โดยการจัดกลุ่มค่าแกน x ของพล็อตแกนไฮเปอร์พารามิเตอร์พื้นฐาน และใช้การทดลองที่ดีที่สุดในแต่ละส่วนแนวตั้งที่กำหนดโดย กลุ่ม
สร้างพล็อตที่มีประโยชน์โดยทั่วไปโดยอัตโนมัติ
ยิ่งการสร้างพล็อตต้องใช้ความพยายามมากเท่าใด คุณก็ยิ่งมีแนวโน้มที่จะดูพล็อตน้อยลงเท่านั้น ดังนั้น เราขอแนะนำให้คุณตั้งค่าโครงสร้างพื้นฐานเพื่อสร้างพล็อตให้ได้มากที่สุดโดยอัตโนมัติ เราขอแนะนำให้สร้างพล็อตแกนของไฮเปอร์พารามิเตอร์พื้นฐานโดยอัตโนมัติสำหรับไฮเปอร์พารามิเตอร์ทั้งหมดที่คุณเปลี่ยนแปลงในการทดสอบ
นอกจากนี้ เราขอแนะนำให้สร้างเส้นโค้งการสูญเสียโดยอัตโนมัติสำหรับการทดลองทั้งหมด นอกจากนี้ เราขอแนะนำให้คุณทำให้การค้นหา การทดลองที่ดีที่สุด 2-3 รายการของแต่ละการศึกษาเป็นเรื่องง่ายที่สุดเท่าที่จะเป็นไปได้ และตรวจสอบเส้นโค้งการสูญเสีย
คุณเพิ่มพล็อตและการแสดงภาพที่มีประโยชน์อื่นๆ ได้อีกมากมาย Geoffrey Hinton กล่าวไว้ว่า
ทุกครั้งที่คุณพล็อตสิ่งใหม่ๆ คุณจะได้เรียนรู้สิ่งใหม่ๆ
เลือกว่าจะใช้การเปลี่ยนแปลงที่แนะนำหรือไม่
สรุป: เมื่อตัดสินใจว่าจะเปลี่ยนแปลงโมเดลหรือขั้นตอนการฝึก หรือจะใช้การกำหนดค่าไฮเปอร์พารามิเตอร์ใหม่หรือไม่ โปรดทราบถึงแหล่งที่มาต่างๆ ของความแปรปรวนในผลลัพธ์
เมื่อพยายามปรับปรุงโมเดล การเปลี่ยนแปลงที่เฉพาะเจาะจงอาจทำให้เกิดข้อผิดพลาดในการตรวจสอบที่ดีขึ้นในตอนแรก เมื่อเทียบกับการกำหนดค่าเดิม อย่างไรก็ตาม การทดสอบซ้ำอาจแสดงให้เห็นว่าไม่มีข้อได้เปรียบที่สอดคล้องกัน แหล่งที่มาที่สำคัญที่สุดของผลลัพธ์ที่ไม่สอดคล้องกันสามารถจัดกลุ่ม เป็นหมวดหมู่กว้างๆ ต่อไปนี้
- ความแปรปรวนของกระบวนการฝึก ความแปรปรวนของการฝึกซ้ำ หรือความแปรปรวนของการทดลอง ความแปรปรวนระหว่างการฝึกที่ใช้ไฮเปอร์พารามิเตอร์เดียวกัน แต่ใช้ค่าเริ่มต้นแบบสุ่มที่ต่างกัน ตัวอย่างเช่น การเริ่มต้นแบบสุ่มที่แตกต่างกัน การสับเปลี่ยนข้อมูลการฝึก มาสก์ Dropout รูปแบบของการเพิ่มข้อมูล การดำเนินการ และลำดับของการดำเนินการทางคณิตศาสตร์แบบขนานล้วนเป็น แหล่งที่มาที่เป็นไปได้ของความแปรปรวนของการทดลอง
- ความแปรปรวนของการค้นหาไฮเปอร์พารามิเตอร์หรือความแปรปรวนของการศึกษา: ความแปรปรวนในผลลัพธ์ที่เกิดจากกระบวนการของเราในการเลือกไฮเปอร์พารามิเตอร์ เช่น คุณอาจทำการทดลองเดียวกันกับพื้นที่ค้นหาหนึ่งๆ แต่มี ค่าเริ่มต้น 2 ค่าที่แตกต่างกันสำหรับการค้นหาแบบกึ่งสุ่ม และลงเอยด้วยการเลือกค่า ไฮเปอร์พารามิเตอร์ที่แตกต่างกัน
- ความแปรปรวนของการเก็บรวบรวมข้อมูลและการสุ่มตัวอย่าง: ความแปรปรวนจากการแยกข้อมูลแบบสุ่มทุกประเภทออกเป็นข้อมูลการฝึก การตรวจสอบ และการทดสอบ หรือความแปรปรวนเนื่องจากกระบวนการสร้างข้อมูลการฝึกโดยทั่วไป
จริง คุณสามารถเปรียบเทียบอัตราข้อผิดพลาดในการตรวจสอบที่ประมาณไว้ในชุดการตรวจสอบที่จำกัดได้โดยใช้การทดสอบทางสถิติที่พิถีพิถัน อย่างไรก็ตาม บ่อยครั้งที่ความแปรปรวนของการทดลองเพียงอย่างเดียว อาจทำให้เกิดความแตกต่างอย่างมีนัยสำคัญทางสถิติระหว่างโมเดลที่ฝึก 2 โมเดล ซึ่งใช้การตั้งค่าไฮเปอร์พารามิเตอร์เดียวกัน
เรากังวลมากที่สุดเกี่ยวกับความแปรปรวนของการศึกษาเมื่อพยายามสรุปผล ที่นอกเหนือไปจากระดับของจุดแต่ละจุดในพื้นที่ไฮเปอร์พารามิเตอร์ ความแปรปรวนของการศึกษาขึ้นอยู่กับจำนวนการทดลองและพื้นที่การค้นหา เราเคยเห็นกรณีที่ความแปรปรวนของการศึกษามากกว่าความแปรปรวนของการทดสอบ และกรณีที่ความแปรปรวนของการศึกษาน้อยกว่ามาก ดังนั้น ก่อนที่จะนำการเปลี่ยนแปลงที่อาจเกิดขึ้นมาใช้ ให้พิจารณาทดสอบการทดลองที่ดีที่สุด N ครั้งเพื่อระบุลักษณะความแปรปรวนของการทดลองที่รันซ้ำ โดยปกติแล้ว คุณจะสามารถหลีกเลี่ยงการปรับลักษณะความแปรปรวนของการทดสอบได้ก็ต่อเมื่อมีการเปลี่ยนแปลงที่สำคัญในไปป์ไลน์ แต่ในบางกรณี คุณอาจต้องใช้การประมาณที่ใหม่กว่า ในแอปพลิเคชันอื่นๆ การระบุลักษณะความแปรปรวนของการทดลองมีต้นทุนสูงเกินกว่าจะคุ้มค่า
แม้ว่าคุณจะต้องการใช้การเปลี่ยนแปลง (รวมถึงการกำหนดค่าไฮเปอร์พารามิเตอร์ใหม่ ) ที่ให้ผลลัพธ์ที่ดีขึ้นจริง แต่การต้องการความแน่นอนที่สมบูรณ์ ว่าการเปลี่ยนแปลงที่กำหนดจะช่วยได้ก็ไม่ใช่คำตอบที่ถูกต้องเช่นกัน ดังนั้น หากจุดไฮเปอร์พารามิเตอร์ใหม่ (หรือการเปลี่ยนแปลงอื่นๆ) ให้ผลลัพธ์ที่ดีกว่า ค่าพื้นฐาน (โดยคำนึงถึงความแปรปรวนของการฝึกใหม่ของทั้ง จุดใหม่และค่าพื้นฐานให้ดีที่สุด) คุณก็ควร นำมาใช้เป็นค่าพื้นฐานใหม่สำหรับการเปรียบเทียบในอนาคต อย่างไรก็ตาม เราขอแนะนำให้ใช้เฉพาะการเปลี่ยนแปลงที่ทำให้เกิดการปรับปรุงที่ มีประโยชน์มากกว่าความซับซ้อนที่เพิ่มขึ้น
หลังจากสิ้นสุดการสำรวจ
สรุป: เครื่องมือการเพิ่มประสิทธิภาพแบบเบย์เป็นตัวเลือกที่น่าสนใจเมื่อคุณ ค้นหาพื้นที่การค้นหาที่ดีเสร็จแล้ว และได้ตัดสินใจว่าไฮเปอร์พารามิเตอร์ใด ที่ควรปรับ
ในที่สุด คุณจะเปลี่ยนจากมุ่งเน้นการเรียนรู้เพิ่มเติมเกี่ยวกับปัญหาการปรับแต่ง ไปเป็นการสร้างการกำหนดค่าที่ดีที่สุดเพียงรายการเดียวเพื่อเปิดตัวหรือ ใช้ในกรณีอื่นๆ ณ จุดนั้น ควรมีพื้นที่ค้นหาที่ปรับปรุงแล้ว ซึ่งมีภูมิภาคท้องถิ่นรอบๆ การทดลองที่สังเกตได้ดีที่สุด และได้รับการสุ่มตัวอย่างอย่างเพียงพอ งานสำรวจควรแสดงไฮเปอร์พารามิเตอร์ที่สำคัญที่สุด ในการปรับแต่งและช่วงที่เหมาะสมซึ่งคุณใช้ เพื่อสร้างพื้นที่ค้นหาสำหรับการศึกษาการปรับแต่งอัตโนมัติขั้นสุดท้ายโดยใช้ งบประมาณการปรับแต่งที่ใหญ่ที่สุดเท่าที่จะเป็นไปได้
เนื่องจากคุณไม่สนใจการเพิ่มข้อมูลเชิงลึกเกี่ยวกับปัญหาการปรับแต่งอีกต่อไป ข้อดีหลายประการของการค้นหาแบบกึ่งสุ่ม จึงไม่เกี่ยวข้องอีกต่อไป ดังนั้นคุณควรใช้เครื่องมือการเพิ่มประสิทธิภาพแบบเบย์ เพื่อค้นหาการกำหนดค่าไฮเปอร์พารามิเตอร์ที่ดีที่สุดโดยอัตโนมัติ Vizier แบบโอเพนซอร์สใช้อัลกอริทึมที่ซับซ้อนหลากหลาย เพื่อปรับแต่งโมเดล ML รวมถึงอัลกอริทึมการเพิ่มประสิทธิภาพแบบเบย์
สมมติว่าพื้นที่การค้นหามีปริมาณจุดที่แตกต่างกันอย่างมาก ซึ่งหมายถึงจุดที่ทำให้การสูญเสียการฝึกเป็น NaN หรือแม้แต่การสูญเสียการฝึกที่แย่กว่าค่าเฉลี่ยหลายส่วนเบี่ยงเบนมาตรฐาน ในกรณีนี้ เราขอแนะนำให้ใช้เครื่องมือเพิ่มประสิทธิภาพแบบกล่องดำ ที่จัดการการทดลองที่แตกต่างกันอย่างเหมาะสม (ดูการเพิ่มประสิทธิภาพแบบเบย์ โดยมีข้อจํากัดที่ไม่รู้จัก เพื่อดูวิธีที่ยอดเยี่ยมในการจัดการปัญหานี้) Vizier แบบโอเพนซอร์สรองรับ การทำเครื่องหมายจุดที่แตกต่างกันโดยการทำเครื่องหมายการทดลองว่าไม่สามารถทำได้ แม้ว่าอาจ ไม่ได้ใช้วิธีการที่เราต้องการจาก Gelbart และคณะ ทั้งนี้ขึ้นอยู่กับวิธี การกำหนดค่า
หลังจากสิ้นสุดการสํารวจแล้ว ให้พิจารณาตรวจสอบประสิทธิภาพในชุดทดสอบ ในทางทฤษฎี คุณสามารถรวมชุดข้อมูลการตรวจสอบเข้ากับชุดข้อมูลการฝึก และฝึกการกำหนดค่าที่ดีที่สุดที่พบด้วยการเพิ่มประสิทธิภาพแบบเบย์อีกครั้ง อย่างไรก็ตาม วิธีนี้เหมาะสำหรับกรณีที่ไม่มีการเปิดตัวในอนาคตสำหรับเวิร์กโหลดที่เฉพาะเจาะจงนี้ (เช่น การแข่งขัน Kaggle แบบครั้งเดียว)