มีหลักฐานเชิงประจักษ์มากมายที่เครือข่ายประสาทที่ลึกพอที่สามารถจดจำฉลากสุ่มบนชุดข้อมูลขนาดใหญ่ (Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals "การทำความเข้าใจการเรียนรู้ลึกต้องมีการพิจารณาใหม่ทั่วไป") ดังนั้นในหลักการโดยการรับ NN ที่มากพอเราสามารถลดข้อผิดพลาดในการฝึกอบรมให้มีค่าน้อยมาก จำกัด ในทางปฏิบัติด้วยความแม่นยำเชิงตัวเลขไม่ว่างานนั้นจะไร้ความหมายก็ตาม
สิ่งที่ค่อนข้างแตกต่างกันสำหรับข้อผิดพลาดทั่วไป เราไม่สามารถแน่ใจได้ว่าสำหรับปัญหาการเรียนรู้แต่ละรูปแบบมีโมเดล NN ที่เรียนรู้ได้ซึ่งสามารถสร้างข้อผิดพลาดทั่วไปได้ต่ำที่สุดเท่าที่ต้องการ ด้วยเหตุนี้ขั้นตอนแรกคือการ
1. ตั้งค่าความคาดหวังของคุณอย่างถูกต้อง
ค้นหาการอ้างอิงที่มีชื่อเสียงซึ่งจะบอกคุณว่ามีสถาปัตยกรรมที่สามารถเข้าถึงข้อผิดพลาดการวางนัยทั่วไปที่คุณกำลังค้นหาบนชุดข้อมูลของคุณหรือในการอ้างอิงที่คล้ายกันมากที่สุดที่คุณสามารถหาการอ้างอิงได้ ตัวอย่างเช่นดูที่นี่
อะไรคือเครือข่ายประสาทเทียมที่ทันสมัยในปัจจุบันคืออะไร?
เพื่อค้นหาปัจจุบัน (ในเวลาที่คำตอบ) ประสิทธิภาพ SOTA (State Of The Art) สำหรับ CNNs ในงานต่างๆ เป็นความคิดที่ดีที่จะพยายามทำซ้ำผลลัพธ์ดังกล่าวในชุดข้อมูลอ้างอิงเหล่านี้ก่อนที่คุณจะฝึกอบรมชุดข้อมูลของคุณเองเพื่อทดสอบว่าโครงสร้างพื้นฐานทั้งหมดของคุณอยู่ในตำแหน่งที่เหมาะสม
2. ตรวจสอบให้แน่ใจว่ากระบวนการฝึกอบรมของคุณไม่มีที่ติ
การตรวจสอบทั้งหมดที่อธิบายไว้ในคำตอบของคำถาม
ฉันควรทำอย่างไรเมื่อเครือข่ายประสาทของฉันไม่ได้เรียนรู้
เพื่อให้แน่ใจว่าขั้นตอนการฝึกอบรมของคุณนั้นโอเคเป็นข้อกำหนดเบื้องต้นสำหรับการลดข้อผิดพลาดในการวางนัยทั่วไป (ถ้า NN ของคุณไม่ได้เรียนรู้ การตรวจสอบเหล่านี้รวมถึงสิ่งอื่น ๆ :
- การทดสอบหน่วย
- ตรวจสอบชุดข้อมูล (ดูที่ตัวอย่างอินพุต / ฉลากแบบสุ่มไม่กี่ตัวอย่างสำหรับทั้งชุดฝึกอบรมและชุดทดสอบและตรวจสอบว่าฉลากถูกต้องตรวจสอบความกว้างและขนาดของภาพที่ใส่ดูตัวอย่างสุ่มในชุดฝึกอบรม / ทดสอบและดูว่ามีผลกระทบหรือไม่ ผลลัพธ์; ฯลฯ )
- การทดสอบแบบสุ่ม
- สร้างมาตรฐานสำหรับเวอร์ชันการประมวลผลล่วงหน้าและแพ็คเกจ
- เก็บสมุดบันทึกการทดลองเชิงตัวเลข
3. ลองรับ superconvergence
“ Super-Convergence: การฝึกอบรมอย่างรวดเร็วของโครงข่ายประสาทโดยใช้อัตราการเรียนรู้ขนาดใหญ่”โดย Leslie N. Smith และ Nicholay Topin แสดงให้เห็นว่าในบางกรณีการรวมกันของอัตราการเรียนรู้ขนาดใหญ่กับวิธีการเรียนรู้ตามรอบของ Leslie N. Smith เร่งการลู่เข้าด้วยลำดับความสำคัญและลดความจำเป็นในการทำให้เป็นมาตรฐาน ดังนั้นนี่คือสิ่งที่ดีที่จะลองก่อน
4. ตั้งค่าการทำให้เป็นมาตรฐานของคุณเป็น MAXXX
การทำให้เป็นมาตรฐานมักจะเพิ่มเวลาการฝึกอบรม (ไม่ดี) เพิ่มข้อผิดพลาดในการฝึกอบรมและลดข้อผิดพลาดในการวางหลักเกณฑ์ทั่วไป (ดี) แต่การทำให้เป็นมาตรฐานมากเกินไปจริง ๆ แล้วสามารถเพิ่มข้อผิดพลาดทั้งสองได้ ด้วยเหตุผลนี้และเนื่องจากเวลาการฝึกอบรมที่เพิ่มขึ้นจึงมักจะดีกว่าที่จะแนะนำเทคนิคการทำให้เป็นมาตรฐานต่างๆทีละครั้งหลังจากที่คุณประสบความสำเร็จในการจัดการให้เหมาะกับชุดการฝึกอบรมมากเกินไป โปรดทราบว่าการทำให้เป็นมาตรฐานด้วยตัวเองไม่ได้หมายความว่าข้อผิดพลาดในการวางนัยทั่วไปของคุณจะเล็กลง: โมเดลต้องมีความจุมากพอที่จะบรรลุคุณสมบัติการวางหลักเกณฑ์ทั่วไปที่ดี บ่อยครั้งหมายความว่าคุณต้องการเครือข่ายที่ลึกพอสมควรก่อนที่คุณจะเห็นประโยชน์ของการทำให้เป็นปกติ
วิธีการทำให้เป็นมาตรฐานที่เก่าแก่ที่สุดน่าจะเป็นการหยุดและลดน้ำหนักได้เร็ว บางส่วนของคนอื่น ๆ :
- ลดขนาดแบทช์: ขนาดแบทช์ที่เล็กกว่ามักจะเกี่ยวข้องกับข้อผิดพลาดในการวางนัยทั่วไปที่เล็กลงดังนั้นนี่เป็นสิ่งที่ควรลอง อย่างไรก็ตามโปรดสังเกตว่าข้อโต้แย้งบางประการเกี่ยวกับประโยชน์ของรถมินิบัส: จากประสบการณ์ของฉันพวกเขาช่วย (ตราบเท่าที่คุณไม่ต้องใช้ขนาดเล็กอย่างบ้าคลั่งเช่น ) แต่ Elad Hoffer, Itay Hubara, Daniel Soudry Train อีกต่อไป พูดคุยที่ดีกว่า: ปิดช่องว่างในการฝึกอบรมชุดใหญ่ของเครือข่ายประสาทไม่เห็นด้วย โปรดทราบว่าหากคุณใช้ชุดคำสั่งแบบกลุ่ม (ดูด้านล่าง) มินิบัสขนาดเล็กเกินไปจะค่อนข้างอันตรายm=16
- ใช้ SGD แทนที่จะใช้ตัวปรับที่เหมาะสม: สิ่งนี้ได้รับการคุ้มครองโดย @ shimao ดังนั้นฉันจึงพูดถึงเพียงเพื่อความสมบูรณ์
- ใช้การออกกลางคัน: หากคุณใช้ LSTM ให้ใช้การออกกลางคันมาตรฐานสำหรับหน่วยอินพุตและเอาต์พุตของเลเยอร์ LSTM เท่านั้น สำหรับหน่วยที่เกิดซ้ำ (ประตู) ให้ใช้การออกกลางคันซ้ำตามที่ Yarin Gal แสดงครั้งแรกในปริญญาเอกของเขา วิทยานิพนธ์ อย่างไรก็ตามหากคุณใช้ CNNs การออกกลางคันจะถูกใช้น้อยลงในขณะนี้ คุณมักจะ ...
- ... ใช้การปรับสภาพแบทช์: สถาปัตยกรรม CNN ล่าสุดหลีกเลี่ยงการออกกลางคันเนื่องจากการปรับสภาพแบทช์ นี่อาจเป็นเพียงแค่แฟชั่นหรืออาจเป็นเพราะความจริงที่ว่าการเลิกกลางคันและชุดการเล่นแบบปกตินั้นเล่นได้ไม่ดีนัก (Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang, การทำความเข้าใจความแตกต่างระหว่างการออกกลางคันและ Batch Normalization Shift ) เนื่องจากชุดค่าผสมมาตรฐานมีประสิทธิภาพมากกว่าการออกกลางคันเมื่อคุณมีชุดข้อมูลขนาดใหญ่นี่อาจเป็นเหตุผลว่าทำไมการออกกลางคันไม่ได้รับความนิยมสำหรับสถาปัตยกรรมของ CNN ถ้าคุณใช้การทำให้เป็นมาตรฐานแบบแบ็ตช์ตรวจสอบว่าการกระจายของน้ำหนักและอคติสำหรับแต่ละเลเยอร์นั้นปกติประมาณมาตรฐาน สำหรับ RNNs การใช้แบทช์นอร์มมีความซับซ้อน: การทำให้น้ำหนักเป็นมาตรฐาน (Tim Salimans, Diederik P. Kingma,การปรับสภาพน้ำหนักให้เป็นมาตรฐาน: การปรับแต่งพารามิเตอร์อย่างง่ายเพื่อเร่งการฝึกอบรมของโครงข่ายประสาทเทียมลึก ) เป็นทางเลือกที่ทำงานได้
- ใช้การเพิ่มข้อมูล: มันยังมีผลเป็นปกติ
5. การค้นหาพารามิเตอร์ / สถาปัตยกรรม
หากไม่มีสิ่งใดช่วยคุณจะต้องทดสอบการตั้งค่าพารามิเตอร์หลายอย่างที่แตกต่างกัน (การเพิ่มประสิทธิภาพแบบเบส์อาจช่วยได้ที่นี่) หรือการเปลี่ยนแปลงทางสถาปัตยกรรมที่หลากหลาย (เช่นอาจในสถาปัตยกรรม GAN ของคุณและสำหรับชุดข้อมูลที่คุณทำงานอยู่ เครื่องกำเนิดไฟฟ้า แต่เมื่อเพิ่มไปยัง discriminator ก็ทำให้สิ่งต่าง ๆ แย่ลง) อย่าลืมติดตามผลลัพธ์ของการทดลองที่ยาวนานและน่าเบื่อเหล่านี้ในสมุดบันทึกที่ได้รับคำสั่งอย่างดี
PS สำหรับ GAN มันไม่สมเหตุสมผลนักที่จะพูดถึงข้อผิดพลาดในการวางนัยทั่วไป: ตัวอย่างข้างต้นมีความหมายเพียงเพื่อบ่งชี้ว่ายังมีการเล่นแร่แปรธาตุในการเรียนรู้ลึกมากและสิ่งต่าง ๆ ที่คุณคาดว่าจะทำงานได้ดี หรือในทางกลับกันบางสิ่งที่ใช้งานได้หลายครั้งก็เกิดความอยากในตัวคุณสำหรับชุดข้อมูลใหม่