एक कंफर्टेबल न्यूरल नेटवर्क के लिए आपको कितना डेटा चाहिए?


15

यदि मेरे पास एक दृढ़ तंत्रिका नेटवर्क (CNN) है, जिसमें लगभग 1,000,000 पैरामीटर हैं, तो कितने प्रशिक्षण डेटा की आवश्यकता है (मान लें कि मैं स्टोचैस्टिक ढाल वंश कर रहा हूं)? क्या अंगूठे का कोई नियम है?

अतिरिक्त नोट: जब मैंने स्टोकेस्टिक ग्रेडिएंट डिसेंट (जैसे 1 पुनरावृत्ति के लिए 64 पैच) प्रदर्शन किया, ~ 10000 पुनरावृत्तियों के बाद, क्लासिफायर की सटीकता लगभग स्थिर मान तक पहुंच सकती है)। क्या इसका मतलब बहुत सारे डेटा की जरूरत नहीं है? जैसे 100k-1000k डेटा।

जवाबों:


12

यह पता लगाने के लिए कि अधिक डेटा सहायक होगा या नहीं, आपको परीक्षण डेटा पर अपने एल्गोरिथ्म के प्रदर्शन (यानी तंत्रिका नेटवर्क को प्रशिक्षित करने के लिए उपयोग किया जाने वाला डेटा) की तुलना करना चाहिए (परीक्षण तंत्रिका डेटा पर डेटा) प्रशिक्षण में "नहीं" देखें।

जाँच करने के लिए एक अच्छी बात यह होगी कि प्रत्येक सेट पर त्रुटि संख्या (या सटीकता) पुनरावृत्ति संख्या के कार्य के रूप में होगी। इसके परिणाम के लिए दो संभावनाएँ हैं:

1) प्रशिक्षण त्रुटि परीक्षण त्रुटि की तुलना में काफी कम मूल्य में परिवर्तित होती है। यदि यह मामला है, तो आपके एल्गोरिथ्म का प्रदर्शन निश्चित रूप से अधिक डेटा के साथ सुधार करेगा।

2) प्रशिक्षण त्रुटि और परीक्षण त्रुटि एक ही मूल्य (प्रशिक्षण त्रुटि के साथ अभी भी शायद परीक्षण त्रुटि की तुलना में थोड़ा कम होने के साथ) में परिवर्तित हो जाती है। इस मामले में अपने आप अतिरिक्त डेटा आपके एल्गोरिदम की मदद नहीं करेगा। यदि आपको इस बिंदु पर बेहतर प्रदर्शन की आवश्यकता है, तो आपको अपनी छिपी हुई परतों में अधिक न्यूरॉन्स जोड़ने या अधिक छिपी हुई परतों को जोड़ने की कोशिश करनी चाहिए। यदि पर्याप्त छिपी हुई इकाइयाँ जोड़ी जाती हैं, तो आप पाएंगे कि आपकी परीक्षण त्रुटि प्रशिक्षण की त्रुटि की तुलना में काफी अधिक हो जाएगी, और उस बिंदु पर अधिक डेटा मदद करेगा।

इन निर्णयों को कैसे किया जाए, इसके बारे में अधिक गहन और उपयोगी परिचय के लिए, मैं एंड्रयू एनजी के कसेरा कोर्स की अत्यधिक अनुशंसा करता हूं , विशेष रूप से "एक लर्निंग एल्गोरिदम का मूल्यांकन" और "बायस बनाम वेरिएंस" पाठ।


3

भोला जवाब है कि हमेशा अधिक डेटा की आवश्यकता होती है। एक ही डेटासेट पर अधिक युगों के लिए कहने से आपको परिणाम को "निखारने" में मदद मिलती है लेकिन आप अधिक डेटा होने के कारण परिणाम में सुधार नहीं करते हैं।

एक उदाहरण के रूप में, मैं एक कंसेंट को वाक्य मॉडलिंग करने के लिए प्रशिक्षण दे रहा हूं और परीक्षण करने के लिए कि अगर मुझे अधिक डेटा की आवश्यकता है, तो मैंने अपने प्रशिक्षण डेटासेट को छोटे उपसमूह में विभाजित करने और इसे परीक्षण करने की कोशिश की।

10 संपूर्णता के लिए संपूर्ण डेटासेट और प्रशिक्षण का उपयोग करके मैंने अपने बेंचमार्क पर 93% सटीकता प्राप्त की और इसमें सुधार होता रहा। इसके बजाय जब मैंने 100 पुनरावृत्ति के लिए डेटासेट के 10% पर पुनरावृत्ति की तो मैंने 85% प्राप्त किया।

इसलिए हमेशा अधिक डेटा रखने की कोशिश करें, लेकिन यदि आप नहीं कर सकते हैं, तो अधिक युगों का करना एक अच्छा व्यापार हो सकता है, लेकिन अंत में यदि आप नेटवर्क को हमेशा नए डेटा के साथ खिलाते हैं तो आपका मॉडल बेहतर रूप से परिवर्तित होता है।


1
आपके उत्तर के लिए धन्यवाद! हां, मुझे पता है कि आपके पास जितना अधिक डेटा होगा, आप उतने ही बेहतर होंगे, लेकिन फिर आपको कितने डेटा की आवश्यकता होगी, यह मुझे निश्चित नहीं है। क्योंकि हमेशा आपके पास अधिक डेटा नहीं हो सकता है। उदाहरण के लिए, मुझे एनोटेशन और लेबलिंग करने के लिए किसी को काम पर रखने की आवश्यकता है, मैं यह पता लगाना चाहता हूं कि मुझे कब रुकना चाहिए ...
RockTheStar

क्या इसका मतलब है कि अगर मेरे पास एक छोटा डेटासेट है तो मेरा मॉडल अभिसरित नहीं होगा?
संस्कारम

3

मुझे लगता है कि सबसे महत्वपूर्ण बात यह है कि आपके डेटा में नमूने अच्छी तरह से फैले हुए हैं, क्योंकि आपके पास कितना भी डेटा हो, अधिक डेटा हमेशा बेहतर होगा। आखिरकार, यदि आप बिल्ली और कुत्ते के चित्रों के बीच अंतर करना सीखने की कोशिश करते हैं, तो आप अपने मॉडल से अच्छे प्रदर्शन की उम्मीद नहीं कर सकते हैं यदि आप इसे केवल बिल्ली के चित्र खिलाते हैं।

के रूप में सुझाव दिया केविन एल द्वारा जवाब में कहा गया है , प्रशिक्षण त्रुटि और परीक्षण त्रुटि के बीच अंतर पर विचार करना समझ में आता है। यदि आपका परीक्षण डेटा आपके प्रशिक्षण डेटा से स्वतंत्र है, तो यह इस बात का संकेत देता है कि आपका मॉडल उस डेटा के सामान्यीकरण के लिए कितना अच्छा है जो अनुपलब्ध है। कुछ ऐसा जो मैं जोड़ना चाहूंगा वह यह है कि प्रशिक्षण और परीक्षण त्रुटि के बीच एक बड़ा अंतर केवल आपको बताता है कि आपका मॉडल अच्छी तरह से सामान्य नहीं होता है, अर्थात आप प्रशिक्षण डेटा पर ओवरफिट कर रहे हैं। अधिक डेटा शायद मदद करेगा, क्योंकि अब नेटवर्क को भी अतिरिक्त डेटा बिंदुओं को मॉडल करने की आवश्यकता होती है, इसलिए अब वह अधिक ओवरफिट नहीं कर सकता है। हालाँकि, अपने मॉडल को बदलने के लिए यह अधिक सार्थक हो सकता है कि यह सामान्य रूप से बेहतर हो। एक उत्कृष्ट पुस्तक का यह अध्याय बताते हैं कि किस प्रकार के नियमितीकरण मौजूद हैं और उन्हें नेटवर्क में कैसे लागू किया जा सकता है ताकि बेहतर सामान्यीकरण हो सके।

यदि आप अधिक मात्रात्मक माप की तलाश में थे, तो मैंने हाल ही में पाया यह प्रश्न क्वोरा पर पाया। यह एक ऑटो-एनकोडर के बारे में है, लेकिन मुझे लगता है कि यह आपके उदाहरण पर भी लागू होना चाहिए। मुझे नहीं पता कि क्या यह सही है (कृपया मुझे बताएं), लेकिन मैं इसका कारण होगा कि उदाहरण के लिए, MNIST के लिए, कोई यह तर्क दे सकता है कि आप अधिकतम 28 * 28 * 8 * 10 000 = 62 720 000 के साथ छवियों को कम करने की कोशिश करते हैं 10 * 10 * 10 000 = 1 000 000 बिट्स एन्ट्रापी के साथ एक-हॉट एन्कोडिंग में दस वर्गों के लिए बिट्स एन्ट्रापी। क्योंकि हम केवल उत्पादन में 1 000 000 बिट्स एन्ट्रापी में रुचि रखते हैं, हम कह सकते हैं कि 1 000 000 मापदंडों के साथ, प्रत्येक पैरामीटर एक एकल बिट का प्रतिनिधित्व करता है, जो प्रति नमूना 1e-4 बिट है। इसका मतलब है कि आपको अधिक डेटा की आवश्यकता होगी। या आपके पास बहुत अधिक पैरामीटर हैं, क्योंकि 100 मापदंडों के साथ, आपके पास प्रति पैरामीटर 10 000 बिट्स हैं और इसलिए प्रति नमूना 1 बिट है। तथापि,


तुम्हारे सुझाव के लिए धन्यवाद। मुझे लगता है कि आजकल लोग एक विशिष्ट कार्य के लिए डेटा की संख्या को कम करने के लिए विभिन्न रणनीति के साथ आते हैं।
RockTheStar

0

एक अन्य विधि आमतौर पर यह पता लगाने के लिए उपयोग की जाती है कि क्या आपके नेटवर्क ने पर्याप्त विशेषताएं सीखी हैं, प्रारंभिक फिल्टर की कल्पना करना। यदि नेटवर्क अच्छी तरह से प्रशिक्षित है तो उसे एक चिकनी फ़िल्टर प्रदर्शित करना चाहिए। एक शोर फिल्टर आम तौर पर इंगित करता है कि नेटवर्क को पर्याप्त रूप से प्रशिक्षित नहीं किया गया है या यह ओवरफिट हो गया है। अधिक जानकारी के लिए इस पेज को पढ़ें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.