คุณต้องการข้อมูลเท่าไหร่สำหรับเครือข่ายประสาทเทียม?


15

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

หมายเหตุเพิ่มเติม: เมื่อฉันทำ stochastic gradient descent (เช่น 64 patch สำหรับ 1 การวนซ้ำ) หลังจาก ~ 10,000 iterations ความแม่นยำของตัวจําแนกสามารถเข้าถึงค่าคงที่หยาบ) นี่หมายถึงไม่จำเป็นต้องใช้ข้อมูลจำนวนมาก? เช่นเดียวกับข้อมูล 100k-1,000k

คำตอบ:


12

เพื่อที่จะทราบว่ามีข้อมูลมากขึ้นหรือไม่จะเป็นประโยชน์หรือไม่คุณควรเปรียบเทียบประสิทธิภาพของอัลกอริทึมของคุณกับข้อมูลการฝึกอบรม (เช่นข้อมูลที่ใช้ในการฝึกอบรมโครงข่ายประสาทเทียม) กับประสิทธิภาพในการทดสอบข้อมูล (เช่นข้อมูลที่ ไม่ "เห็น" ในการฝึกอบรม)

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

1) ข้อผิดพลาดการฝึกอบรมมาบรรจบกับค่าต่ำกว่าข้อผิดพลาดการทดสอบอย่างมีนัยสำคัญ หากเป็นกรณีนี้ประสิทธิภาพของอัลกอริทึมของคุณจะเพิ่มขึ้นอย่างแน่นอนด้วยข้อมูลที่มากขึ้น

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

สำหรับการแนะนำอย่างละเอียดและเป็นประโยชน์มากขึ้นเกี่ยวกับวิธีการตัดสินใจเหล่านี้ฉันขอแนะนำหลักสูตร Courseraของ Andrew Ng โดยเฉพาะอย่างยิ่ง "การประเมินขั้นตอนวิธีการเรียนรู้" และ "Bias vs. Variance"


3

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

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

การใช้ชุดข้อมูลทั้งหมดและการฝึกอบรมสำหรับการทำซ้ำ 10 ครั้งฉันได้รับความแม่นยำ 93% ตามมาตรฐานของฉันและมันยังคงปรับปรุงอยู่ แต่เมื่อฉันทำซ้ำใน 10% ของชุดข้อมูลสำหรับการวนซ้ำ 100 ครั้งฉันได้รับ 85%

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


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

หมายความว่าถ้าฉันมีชุดข้อมูลขนาดเล็กโมเดลของฉันจะไม่มาบรรจบกัน?
สังสารวัฏ

3

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

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

หากคุณกำลังมองหามาตรการเชิงปริมาณมากขึ้นฉันเพิ่งพบคำถามนี้เกี่ยวกับโควต้า. มันเกี่ยวกับโปรแกรมเปลี่ยนไฟล์อัตโนมัติ แต่ฉันเดาว่าควรใช้กับตัวอย่างของคุณ ฉันไม่รู้ว่ามันถูกต้องหรือไม่ (โปรดแจ้งให้ฉันทราบ) แต่ฉันจะให้เหตุผลว่าสำหรับตัวอย่างของ MNIST คุณสามารถลดรูปได้สูงสุด 28 * 28 * 8 * 10 000 = 62 720 000 บิตเอนโทรปีถึงสิบคลาสในการเข้ารหัสแบบร้อนด้วย 10 * 10 * 10 000 = 1 000 000 บิตของเอนโทรปี เนื่องจากเราสนใจเอนโทรปี 1 พันล้านบิตเท่านั้นที่เอาท์พุทเราสามารถพูดได้ว่าด้วยพารามิเตอร์ 1 000 000 แต่ละพารามิเตอร์แสดงถึงบิตเดียวซึ่งเป็น 1e-4 บิตต่อตัวอย่าง หมายความว่าคุณต้องการข้อมูลเพิ่มเติม หรือคุณมีพารามิเตอร์มากเกินไปเนื่องจากเช่นมีพารามิเตอร์ 100 ตัวคุณจะมี 10,000 บิตต่อพารามิเตอร์ดังนั้น 1 บิตต่อตัวอย่าง อย่างไรก็ตาม


ขอบคุณสำหรับคำแนะนำของคุณ ฉันคิดว่าทุกวันนี้คนคิดกลยุทธ์แตกต่างกันเพื่อลดจำนวนข้อมูลสำหรับงานเฉพาะ
RockTheStar

0

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

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