วิธีการใช้การหยุด แต่เนิ่น ๆ อย่างถูกต้องสำหรับการฝึกอบรมโครงข่ายประสาทเทียมลึก?


20

ฉันมีรูปแบบโครงข่ายประสาทเทียมที่ลึกและฉันจำเป็นต้องฝึกกับชุดข้อมูลซึ่งประกอบด้วยตัวอย่างประมาณ 100,000 ตัวอย่างข้อมูลการตรวจสอบความถูกต้องของฉันมีประมาณ 1,000 ตัวอย่าง เนื่องจากต้องใช้เวลาในการฝึกฝนแต่ละตัวอย่าง (ประมาณ 0.5 ตัวอย่างสำหรับแต่ละตัวอย่าง) และเพื่อหลีกเลี่ยงการทำให้อ้วนมากเกินไปฉันจึงต้องการใช้การหยุดก่อนกำหนดเพื่อป้องกันการคำนวณที่ไม่จำเป็น แต่ฉันไม่แน่ใจว่าจะฝึกโครงข่ายประสาทอย่างถูกต้องด้วยการหยุด แต่เนิ่น ๆ หลายสิ่งที่ฉันยังไม่เข้าใจในตอนนี้:

  • ความถี่การตรวจสอบที่ดีจะเป็นอย่างไร ฉันควรตรวจสอบโมเดลของฉันเกี่ยวกับข้อมูลการตรวจสอบความถูกต้องในตอนท้ายของแต่ละยุคหรือไม่ (ขนาดแบตช์ของฉันคือ 1)

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

  • วิธีจัดการกับกรณีที่การสูญเสียการตรวจสอบอาจขึ้นและลงได้อย่างไร ในกรณีนั้นการหยุดก่อนอาจทำให้โมเดลของฉันไม่สามารถเรียนรู้เพิ่มเติมได้ใช่ไหม

ขอบคุณล่วงหน้า.


ฉันขอแนะนำขนาดแบทช์ที่มากกว่าหนึ่ง ขนาดปกติคือ 32, 64 และ 128
ComputerScientist

คำตอบ:


20

ความถี่การตรวจสอบที่ดีจะเป็นอย่างไร ฉันควรตรวจสอบโมเดลของฉันเกี่ยวกับข้อมูลการตรวจสอบความถูกต้องในตอนท้ายของแต่ละยุคหรือไม่ (ขนาดแบตช์ของฉันคือ 1)

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

เป็นกรณีที่ epochs ไม่กี่ครั้งแรกอาจให้ผลลัพธ์ที่เลวร้ายกว่าก่อนที่จะเริ่มบรรจบกันเพื่อค่าที่ดีขึ้น?

ใช่

ในกรณีนี้เราควรฝึกอบรมเครือข่ายของเราสำหรับยุคหลาย ๆ ก่อนที่จะตรวจสอบการหยุดก่อน?

คุณทำได้ แต่จากนั้นปัญหาคือคุณควรข้ามกาลจำนวนเท่าใด ดังนั้นในทางปฏิบัติผู้คนส่วนใหญ่ไม่ข้ามยุคใด ๆ

วิธีจัดการกับกรณีที่การสูญเสียการตรวจสอบอาจขึ้นและลงได้อย่างไร ในกรณีนั้นการหยุดก่อนอาจทำให้โมเดลของฉันไม่สามารถเรียนรู้เพิ่มเติมได้ใช่ไหม

โดยทั่วไปผู้คนจะกำหนดความอดทนเช่นจำนวนของยุคที่ต้องรอก่อนหยุดก่อนหากไม่มีความคืบหน้าในชุดการตรวจสอบความถูกต้อง ความอดทนมักตั้งอยู่ระหว่าง 10 ถึง 100 (10 หรือ 20 เป็นเรื่องธรรมดา) แต่ขึ้นอยู่กับชุดข้อมูลและเครือข่ายของคุณ

ตัวอย่างที่มีความอดทน = 10:

ป้อนคำอธิบายรูปภาพที่นี่


เราควรใช้แบบจำลองเมื่อหยุดทำงานก่อนหน้านี้หรือแบบจำลองpatienceยุคก่อนที่จะหยุดทำงาน (รุ่นที่ดีที่สุดที่ไม่มีการปรับปรุงเพิ่มเติม)
stackunderflow

2
@displayname ความอดทนก่อนที่จะหยุด
Franck Dernoncourt

11

ฉันเพิ่งเจอบทความเรื่อง"การหยุดก่อน - แต่เมื่อไรโดย Lutz Prechelt ที่มีตัวอย่างที่ดีมากมายเกี่ยวกับวิธีใช้การหยุด แต่เนิ่น ๆ พร้อมคำอธิบายที่ชัดเจนเกี่ยวกับสิ่งที่แต่ละคนทำและสูตรสำหรับพวกเขา

หวังว่าจะดูว่าอาจช่วยได้


กระดาษเขียนในสไตล์แปลก ๆ แต่ข้อมูลก็มีประโยชน์
Josiah

3

เพื่อเพิ่มคำตอบที่ยอดเยี่ยมอื่น ๆ คุณยังสามารถ - ไม่หยุด ฉันมัก:

  • เรียกใช้ NN เป็นเวลานานกว่าที่ฉันคิดว่ามีเหตุผล
  • บันทึกน้ำหนักของแบบจำลองทุกยุคที่ N และ
  • เมื่อฉันเห็นการสูญเสียการฝึกอบรมมีความเสถียรฉันเพียงแค่เลือกรูปแบบที่มีการสูญเสียการตรวจสอบต่ำสุด

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


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