อ่านแล้ว - เมื่อการเรียนรู้การโอนไม่เสียเปรียบหรือไม่ (ขอบคุณ @media)
(ดูข้อมูลให้ฉันมากดังนั้นเพิ่มที่นี่เพื่อทำให้คำตอบนี้เป็นคำตอบที่สมบูรณ์ ... )
ตอบคำถามของคุณ .. (เริ่มที่นี่)
โอนการเรียนรู้คือสิ่งที่คุณกำลังมองหา ..
เมื่อเราได้รับภารกิจการเรียนรู้อย่างลึกซึ้งสิ่งหนึ่งที่เกี่ยวข้องกับการฝึกอบรม Convolutional Neural Network (Covnet) ในชุดข้อมูลของภาพอินสแตนซ์แรกของเราคือการฝึกอบรมเครือข่ายจากศูนย์ อย่างไรก็ตามในทางปฏิบัติเครือข่ายประสาทลึกอย่าง Covnet มีพารามิเตอร์จำนวนมากซึ่งมักจะอยู่ในช่วงหลายล้าน การฝึกอบรม Covnet ในชุดข้อมูลขนาดเล็ก (อันที่มีขนาดเล็กกว่าจำนวนพารามิเตอร์) ส่งผลกระทบอย่างมากต่อความสามารถของ Covnet ในการพูดคุยทั่วไปซึ่งมักจะส่งผลให้เกิดการ overfitting
ดังนั้นในทางปฏิบัติบ่อยครั้งหนึ่งจะปรับแต่งเครือข่ายที่มีอยู่ซึ่งได้รับการฝึกฝนบนชุดข้อมูลขนาดใหญ่เช่น ImageNet (รูปภาพ 1.2M ที่มีป้ายกำกับ) โดยการฝึกอบรมอย่างต่อเนื่อง (เช่นการรันการเผยแพร่กลับ) บนชุดข้อมูลขนาดเล็กที่เรามี หากชุดข้อมูลของเราไม่แตกต่างกันอย่างมากในบริบทของชุดข้อมูลดั้งเดิม (เช่น ImageNet) โมเดลที่ได้รับการฝึกอบรมมาล่วงหน้าจะได้เรียนรู้คุณสมบัติที่เกี่ยวข้องกับปัญหาการจำแนกประเภทของเราเอง
เมื่อใดที่จะปรับแต่งนางแบบ?
โดยทั่วไปถ้าชุดข้อมูลของเราไม่แตกต่างกันอย่างมากในบริบทจากชุดข้อมูลซึ่งโมเดลที่ผ่านการฝึกอบรมมาแล้วเราควรทำการปรับแต่งอย่างละเอียด เครือข่ายที่ผ่านการฝึกอบรมมาล่วงหน้าในชุดข้อมูลที่มีขนาดใหญ่และมีความหลากหลายเช่น ImageNet รวบรวมคุณสมบัติที่เป็นสากลเช่นส่วนโค้งและขอบในชั้นแรก ๆ ซึ่งเกี่ยวข้องและมีประโยชน์สำหรับปัญหาการจำแนกส่วนใหญ่
แน่นอนถ้าชุดข้อมูลของเราแสดงถึงโดเมนที่เฉพาะเจาะจงเช่นภาพทางการแพทย์หรือตัวอักษรเขียนด้วยลายมือจีนและไม่พบเครือข่ายที่ผ่านการฝึกอบรมล่วงหน้าในโดเมนดังกล่าวเราควรพิจารณาฝึกอบรมเครือข่ายตั้งแต่เริ่มต้น
สิ่งที่น่ากังวลอีกอย่างหนึ่งคือถ้าชุดข้อมูลของเรามีขนาดเล็กการปรับแต่งเครือข่ายที่ผ่านการฝึกอบรมล่วงหน้าในชุดข้อมูลขนาดเล็กอาจนำไปสู่การ overfitting โดยเฉพาะอย่างยิ่งถ้าเลเยอร์เครือข่ายไม่กี่ชั้นสุดท้ายเชื่อมต่ออย่างเต็มที่ พูดจากประสบการณ์ของฉันถ้าเรามีตัวอย่างดิบสองสามพันตัวอย่างโดยใช้กลยุทธ์การเพิ่มข้อมูลทั่วไป (การแปลการหมุนการพลิก ฯลฯ ) การปรับแต่งแบบละเอียดมักจะทำให้เราได้ผลลัพธ์ที่ดีขึ้น
ถ้าชุดข้อมูลของเรามีขนาดเล็กมากให้พูดน้อยกว่าหนึ่งพันตัวอย่างวิธีที่ดีกว่าคือการเอาท์พุทของเลเยอร์กลางก่อนเลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์เป็นคุณสมบัติ (คุณสมบัติคอขวด) และฝึกอบรมลักษณนามเชิงเส้น (เช่น SVM) มัน. SVM ทำได้ดีในการวาดขอบเขตการตัดสินใจบนชุดข้อมูลขนาดเล็ก
เทคนิคการปรับจูนอย่างละเอียด
ด้านล่างนี้เป็นแนวทางทั่วไปบางประการสำหรับการปรับใช้อย่างละเอียด:
การปฏิบัติทั่วไปคือการตัดเลเยอร์สุดท้าย (softmax เลเยอร์) ของเครือข่ายที่ผ่านการฝึกอบรมมาล่วงหน้าและแทนที่ด้วยเลเยอร์ softmax ใหม่ของเราที่เกี่ยวข้องกับปัญหาของเราเอง ตัวอย่างเช่นเครือข่ายที่ผ่านการฝึกอบรมมาล่วงหน้าบน ImageNet มาพร้อมกับเลเยอร์ softmax ที่มี 1,000 หมวดหมู่
หากงานของเราเป็นการจัดหมวดหมู่ใน 10 หมวดหมู่เลเยอร์ softmax ใหม่ของเครือข่ายจะเป็น 10 หมวดหมู่แทน 1,000 หมวดหมู่ จากนั้นเราจะเรียกใช้การเผยแพร่กลับบนเครือข่ายเพื่อปรับแต่งน้ำหนักที่ได้รับการฝึกฝนมาอย่างดี ตรวจสอบให้แน่ใจว่ามีการตรวจสอบความถูกต้องของข้อมูลข้ามเพื่อให้เครือข่ายสามารถใช้งานทั่วไปได้ดี
ใช้อัตราการเรียนรู้ที่น้อยลงในการฝึกอบรมเครือข่าย เนื่องจากเราคาดว่าน้ำหนักที่ผ่านการฝึกอบรมมาก่อนจะค่อนข้างดีอยู่แล้วเมื่อเทียบกับน้ำหนักเริ่มต้นแบบสุ่มเราไม่ต้องการบิดเบือนพวกเขาอย่างรวดเร็วและมากเกินไป การปฏิบัติทั่วไปคือการทำให้อัตราการเรียนรู้เริ่มต้นมีขนาดเล็กกว่าที่ใช้ในการฝึกอบรม 10 เท่า
นอกจากนี้ยังเป็นวิธีปฏิบัติทั่วไปที่จะทำให้น้ำหนักของเครือข่ายที่ผ่านการฝึกอบรมมาล่วงหน้าไม่กี่ชั้น นี่เป็นเพราะเลเยอร์แรก ๆ ที่จับคุณสมบัติสากลเช่นเส้นโค้งและขอบที่เกี่ยวข้องกับปัญหาใหม่ของเรา เราต้องการรักษาน้ำหนักให้คงอยู่กับที่ แต่เราจะให้เครือข่ายมุ่งเน้นการเรียนรู้คุณสมบัติเฉพาะชุดข้อมูลในเลเยอร์ต่อไป
คุณจำเป็นต้องฝึกพวกมันอีกครั้งในกรณีนี้ราวกับว่าฉันไม่ผิดจากนั้นวอลล์เปเปอร์ไม่ใช่รุ่นของ Image-net รุ่น ... มันจะไม่ยากเลยที่จะสร้างแบบจำลองจากศูนย์เพื่อทำเช่นนั้น ทำยังที่นี่ .. )
แหล่งที่มาของคำตอบของฉันคือการแปลจากหลักสูตรที่น่าทึ่งเหล่านี้ ..
สำหรับการอ่านเพิ่มเติม