ใช้ลักษณนาม CNN ที่ผ่านการฝึกอบรมมาแล้วและนำไปใช้กับชุดข้อมูลภาพอื่น


11

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

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

คำตอบ:


15

อ่านแล้ว - เมื่อการเรียนรู้การโอนไม่เสียเปรียบหรือไม่ (ขอบคุณ @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 รุ่น ... มันจะไม่ยากเลยที่จะสร้างแบบจำลองจากศูนย์เพื่อทำเช่นนั้น ทำยังที่นี่ .. )

แหล่งที่มาของคำตอบของฉันคือการแปลจากหลักสูตรที่น่าทึ่งเหล่านี้ ..

สำหรับการอ่านเพิ่มเติม


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

1
สำหรับการแยกคุณลักษณะไม่จำเป็นต้องผนวกเลเยอร์ แต่มีเพียงไม่กี่เลเยอร์เช่นการปรับขนาดการรวมและการปรับขนาดรูปร่างเพื่อต่อท้าย dims และอาจลดค่ากลาง แน่นอนว่ามันเร็วกว่าในการฝึกอบรมโมเดลเชิงเส้นกว่า NN แต่คุณสามารถลองและดูว่าแบบไหนดีที่สุดสำหรับเคสการใช้งานของคุณ เลิกตรึงเลเยอร์หนาแน่นสุดท้ายและการฝึกซ้ำกับเลเยอร์เพิ่มเติมเล็กน้อยเพื่อให้ตรงกับปัญหาของคุณในมือเป็นเรื่องธรรมดา
Aditya
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.