เป็นไปได้ไหมที่จะฝึกโครงข่ายประสาทแบบเพิ่มหน่วย?


23

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

ฉันจะฝึกอบรม NN แบบเพิ่มหน่วยได้นั่นคือโดยไม่ลืมข้อมูลที่ได้มาก่อนหน้านี้ในระหว่างขั้นตอนการฝึกอบรมครั้งก่อน

คำตอบ:


10

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

Modern ConvNets ใช้เวลา 2-3 สัปดาห์ในการฝึกอบรม GPU หลายตัวบน ImageNet ดังนั้นจึงเป็นเรื่องปกติที่ผู้คนจะปล่อยจุดตรวจสอบ ConvNet สุดท้ายเพื่อผลประโยชน์ของผู้อื่นที่สามารถใช้เครือข่ายในการปรับจูนได้ ตัวอย่างเช่นไลบรารี Caffe มีสวนสัตว์จำลองซึ่งผู้คนแบ่งปันน้ำหนักเครือข่ายของตน

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

มีบางสิ่งที่คุณควรคำนึงถึงเมื่อทำการเรียนรู้การโอน :

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

  • อัตราการเรียนรู้ เป็นเรื่องปกติที่จะใช้อัตราการเรียนรู้ที่น้อยลงสำหรับตุ้มน้ำหนัก ConvNet ที่ได้รับการปรับจูนเมื่อเทียบกับน้ำหนัก (เริ่มต้นแบบสุ่ม) สำหรับตัวแยกประเภทเชิงเส้นใหม่ที่คำนวณคะแนนชั้นเรียนของชุดข้อมูลใหม่ของคุณ เนื่องจากเราคาดหวังว่าน้ำหนัก ConvNet ค่อนข้างดีดังนั้นเราจึงไม่ต้องการบิดเบือนมันเร็วเกินไปและมากเกินไป (โดยเฉพาะอย่างยิ่งในขณะที่ Linear Classifier ใหม่ด้านบนนั้นกำลังได้รับการฝึกอบรมจากการเริ่มต้นแบบสุ่ม)

ข้อมูลอ้างอิงเพิ่มเติมหากคุณสนใจในหัวข้อนี้: คุณลักษณะที่สามารถถ่ายโอนได้ในเครือข่ายประสาทลึกคืออะไร


การโอนการเรียนรู้ไม่ใช่วิธีเดียวในการเรียนรู้แบบเพิ่มหน่วย
nbro

7

นี่เป็นวิธีหนึ่งที่คุณสามารถทำได้

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

ทำซ้ำ


ถ้าคุณรองรับคลาสใหม่ในเลเยอร์สุดท้าย (คลาสฝึกอบรม + คลาสใหม่) โมเดลไม่สามารถทำได้เนื่องจากเราต้องการฝึกกับคลาสใหม่ (เท่านั้น) และโมเดลคาดหวังอาร์เรย์ที่มีรูปร่างของ (การฝึกอบรม + ตัวใหม่ ชั้นเรียน)
Joel Carneiro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.