क्या वृद्धिशील नेटवर्क को प्रशिक्षित करना संभव है?


23

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

पिछले प्रशिक्षण चरणों के दौरान पहले प्राप्त की गई जानकारी को भूलकर, मैं एक एनएन को कैसे बढ़ा सकता हूं?

जवाबों:


10

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

ImageNet पर कई GPUs को प्रशिक्षित करने के लिए आधुनिक कन्वेंशन में 2-3 सप्ताह लगते हैं। इसलिए यह देखने के लिए आम है कि लोग अपनी अंतिम कन्वीनट चौकियों को दूसरों के लाभ के लिए जारी कर सकते हैं जो ठीक-ट्यूनिंग के लिए नेटवर्क का उपयोग कर सकते हैं। उदाहरण के लिए, कैफ लाइब्रेरी में एक मॉडल चिड़ियाघर है जहां लोग अपने नेटवर्क भार साझा करते हैं।

जब आपको छवि पहचान के लिए एक कॉन्ट्रानेट की आवश्यकता होती है, तो कोई फर्क नहीं पड़ता कि आपका एप्लिकेशन डोमेन क्या है, आपको मौजूदा नेटवर्क लेने पर विचार करना चाहिए, उदाहरण के लिए वीजीजीनेट एक आम विकल्प है।

स्थानांतरण सीखने का प्रदर्शन करते समय कुछ बातों का ध्यान रखना चाहिए :

  • ढोंग मॉडल से बाधाओं। ध्यान दें कि यदि आप एक प्रीट्रेन नेटवर्क का उपयोग करना चाहते हैं, तो आप अपने नए डेटासेट के लिए उपयोग किए जा सकने वाले आर्किटेक्चर के संदर्भ में थोड़ा विवश हो सकते हैं। उदाहरण के लिए, आप मनमाने ढंग से ढोंग नेटवर्क से कन्वर्शन लेयर्स नहीं निकाल सकते। हालांकि, कुछ परिवर्तन सीधे-आगे हैं: पैरामीटर साझा करने के कारण, आप विभिन्न स्थानिक आकार की छवियों पर आसानी से एक दिखावा नेटवर्क चला सकते हैं। यह स्पष्ट रूप से रूपांतरण / पूल परतों के मामले में स्पष्ट है क्योंकि उनका आगे का कार्य इनपुट वॉल्यूम स्थानिक आकार (जब तक कि स्ट्राइड "फिट") से स्वतंत्र है।

  • सीखने की दर। अपने नए डेटासेट के वर्ग स्कोर की गणना करने वाले नए रैखिक क्लासिफायर के लिए (रैंडमली-इनिशियलाइज्ड) वेट की तुलना में, कॉननेट वेट के लिए छोटे सीखने की दर का उपयोग करना सामान्य है। ऐसा इसलिए है क्योंकि हम उम्मीद करते हैं कि कन्वनेट वेट अपेक्षाकृत अच्छे हैं, इसलिए हम उन्हें बहुत जल्दी और बहुत अधिक विकृत करने की इच्छा नहीं रखते हैं (विशेषकर जबकि उनके ऊपर नया रैखिक क्लासिफायर यादृच्छिक यादृच्छिकता से प्रशिक्षित किया जा रहा है)।

अतिरिक्त संदर्भ यदि आप इस विषय में रुचि रखते हैं: गहरे तंत्रिका नेटवर्क में कैसे हस्तांतरणीय विशेषताएं हैं?


ट्रांसफर लर्निंग, वृद्धिशील सीखने का एकमात्र तरीका नहीं है।
nbro

7

यहाँ एक तरीका है कि आप ऐसा कर सकते हैं।

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

दोहराना


यदि आप केवल नई कक्षाओं को अंतिम परत (प्रशिक्षण वर्ग + नई कक्षाएं) में समायोजित करते हैं, तो मॉडल फिट नहीं हो सकता है क्योंकि हम नई कक्षाओं (केवल) के साथ प्रशिक्षित करना चाहते हैं और मॉडल (प्रशिक्षण + नए) के आकार के साथ एक सरणी की उम्मीद करते हैं कक्षाएं,)।
जोएल कार्नेरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.