हमें तंत्रिका नेटवर्क का प्रशिक्षण देते समय डेटा को फेरबदल क्यों करना चाहिए?


15

एक तंत्रिका नेटवर्क के मिनी-बैच प्रशिक्षण में, मैंने सुना है कि प्रत्येक युग से पहले प्रशिक्षण डेटा को बदलने के लिए एक महत्वपूर्ण अभ्यास है। क्या कोई समझा सकता है कि प्रत्येक युग में फेरबदल में मदद क्यों मिलती है?

Google खोज से, मुझे निम्नलिखित उत्तर मिले:

  • यह प्रशिक्षण को तेजी से परिवर्तित करने में मदद करता है
  • यह प्रशिक्षण के दौरान किसी भी पूर्वाग्रह को रोकता है
  • यह प्रशिक्षण के क्रम को सीखने से मॉडल को रोकता है

लेकिन, मुझे यह समझने में कठिनाई होती है कि उनमें से कोई भी प्रभाव यादृच्छिक फेरबदल के कारण क्यों होता है। क्या कोई सहज व्याख्या प्रदान कर सकता है?

जवाबों:


8

एक और स्पष्टीकरण देने की कोशिश करने के लिए:

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

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


1
एक तंत्रिका नेटवर्क कैसे सीख सकता है जिस क्रम में प्रत्येक युग में डेटा खिलाया जाता है?
कोड पोप

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

6

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


6

नोट: इस उत्तर के दौरान मैं प्रशिक्षण हानि को कम करने का संदर्भ देता हूं और मैं सत्यापन हानि जैसे मानदंड को रोकने पर चर्चा नहीं करता। मानदंडों को रोकने का विकल्प नीचे वर्णित प्रक्रिया / अवधारणाओं को प्रभावित नहीं करता है।

एक तंत्रिका नेटवर्क को प्रशिक्षित करने की प्रक्रिया एक हानि फ़ंक्शन का न्यूनतम मूल्य खोजना है , जहां न्यूरॉन्स और बीच वजन का एक मैट्रिक्स (या कई मैट्रिक्स) का प्रतिनिधित्व करता है जो प्रशिक्षण डेटासेट का प्रतिनिधित्व करता है। मैं के लिए एक सबस्क्रिप्ट का उपयोग संकेत मिलता है कि के बारे में हमारी न्यूनतम केवल वजन अधिक होता (है कि, हम तलाश कर रहे हैं ऐसी है कि कम से कम है), जबकि तय हो गई है।डब्ल्यूएक्सएक्स डब्ल्यूडब्ल्यू एक्सX(W)WXXWWX

अब, यदि हम मानते हैं कि हमारे पास में तत्व हैं (अर्थात, नेटवर्क में वेट हैं ), -डिमेन्शनल स्पेस में एक सतह है। एक दृश्य एनालॉग देने के लिए, कल्पना करें कि हमारे पास केवल दो न्यूरॉन वजन ( ) हैं। तब एक आसान ज्यामितीय व्याख्या है: यह एक 3 आयामी अंतरिक्ष में एक सतह है। यह इस तथ्य से उत्पन्न होता है कि वजन किसी भी दिए गए मैट्रिक्स के लिए , नुकसान फ़ंक्शन का मूल्यांकन पर किया जा सकता है और यह मान सतह की ऊंचाई बन जाता है।डब्ल्यू पी पी + 1 पी = 2 डब्ल्यू एक्सPWPP+1P=2WX

लेकिन गैर-उत्तलता की समस्या है; मेरे द्वारा बताई गई सतह में कई स्थानीय मिनीमा होंगे, और इसलिए ढाल वंशीय एल्गोरिदम उन मिनीमा में "अटक" बनने के लिए अतिसंवेदनशील होते हैं, जबकि एक गहरा / निचला / बेहतर समाधान पास में झूठ हो सकता है। यदि सभी प्रशिक्षण पुनरावृत्तियों पर अपरिवर्तित है, तो यह होने की संभावना है , क्योंकि सतह किसी दिए गए लिए तय की गई है ; इसकी सभी विशेषताएं स्थिर हैं, जिसमें इसकी विभिन्न मिनीमा शामिल हैं।एक्सXX

इसका एक समाधान मिनी-बैच प्रशिक्षण है जिसे फेरबदल के साथ जोड़ा गया है। किसी दिए गए पुनरावृत्ति के दौरान उनमें से केवल एक सबसेट पर पंक्तियों और प्रशिक्षण को फेरबदल करके, हर पुनरावृत्ति के साथ बदल जाता है , और यह वास्तव में काफी संभव है कि प्रशिक्षण पुनरावृत्तियों और युगों के पूरे अनुक्रम पर कोई भी दो पुनरावृत्तियों सटीक एक ही पर प्रदर्शन नहीं किया जाएगा। । इसका प्रभाव यह है कि सॉल्वर एक स्थानीय न्यूनतम से आसानी से "उछाल" कर सकता है। कल्पना कीजिए कि सॉल्वर मिनी-बैच प्रशिक्षण के साथ पुनरावृत्ति पर एक स्थानीय न्यूनतम में फंस गया है । यह स्थानीय न्यूनतम वजन के एक विशेष मूल्य पर मूल्यांकन के अनुरूप है ; हम इसेXXiXiXi(Wi)। अगली पुनरावृत्ति पर हमारी हानि सतह का आकार वास्तव में बदल जाता है क्योंकि हम का उपयोग कर रहे हैं , से बहुत भिन्न मान ले सकते हैं और यह काफी संभव है कि यह स्थानीय न्यूनतम के अनुरूप न हो! अब हम एक क्रमिक अद्यतन की गणना कर सकते हैं और प्रशिक्षण के साथ जारी रख सकते हैं। स्पष्ट होने के लिए: का आकार - सामान्य रूप से - । ध्यान दें कि यहां मैं नुकसान समारोह की चर्चा करते हुए हूँ प्रशिक्षण सेट पर मूल्यांकन ; यह सभी संभावित मूल्यों पर परिभाषित एक पूर्ण सतह हैXi+1Xi+1(Wi)एक्समैं(डब्ल्यूमैं)एक्समैं+1एक्समैंएक्सडब्ल्यूउस नुकसान के मूल्यांकन के बजाय, जो एक विशिष्ट मूल्य के लिए (जो सिर्फ एक अदिश राशि है) । यह भी ध्यान दें कि यदि मिनी-बैचेस को फेरबदल के बिना उपयोग किया जाता है, तो नुकसान सतहों की "विविधीकरण" की एक डिग्री अभी भी है, लेकिन सॉल्वर द्वारा देखी गई अद्वितीय त्रुटि सतहों की एक परिमित (और अपेक्षाकृत छोटी) संख्या होगी (विशेष रूप से, यह देखेंगे) मिनी-बैचों का एक ही सटीक सेट - और इसलिए नुकसान की सतहों - प्रत्येक अवधि के दौरान)।डब्ल्यू

एक बात जो मैंने जानबूझकर टाल दी थी, वह मिनी-बैच आकारों की चर्चा थी, क्योंकि इस पर एक लाख राय हैं और इसके महत्वपूर्ण व्यावहारिक निहितार्थ हैं (बड़े बैचों के साथ अधिक से अधिक समानता प्राप्त की जा सकती है)। हालांकि, मेरा मानना ​​है कि निम्नलिखित उल्लेख के लायक है। क्योंकि का मूल्यांकन की प्रत्येक पंक्ति के लिए मान की गणना करके किया जाता है (और एक औसत ऑपरेटर; यानी, एक मैटेरियल ऑपरेटर) जो कि दिए गए वेट मैट्रिसेस सेट के लिए होता है , की पंक्तियों की व्यवस्था का पूर्ण उपयोग करते समय कोई प्रभाव नहीं पड़ता है। बैच ग्रैडिएंट डिसेंट (जब प्रत्येक बैच पूर्ण , और पुनरावृत्तियों और युग एक ही बात है)।एक्सडब्ल्यूएक्स एक्स


इस उपयोगी स्पष्टीकरण के लिए धन्यवाद। आपके उत्तर को गहराई से पढ़ने के बाद, मेरे पास दो प्रश्न हैं: 1. आपने बताया कि मिनी-बैच सीमित विविधीकरण की आपूर्ति करता है। मुझे समझ नहीं आता कि स्थानीय न्यूनतम में अटकने से बचने के लिए यह पर्याप्त क्यों नहीं है। यदि सॉल्वर एक बैच की सतह के स्थानीय मिनीमा में होता है, तो यह उच्च संभावना के साथ होता है कि अगले बैच की सतह की स्थानीय मिनीमा में नहीं है, इस प्रकार, यह अटक नहीं जाना चाहिए? 2. सॉल्वर नुकसान फ़ंक्शन की सतह में कैसे परिवर्तित होता है जबकि सतह हमेशा अलग-अलग बैचों का उपयोग करके बदलती है?
कोड पोप

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

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

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

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

4

कल्पना करें कि आपके पिछले कुछ मिनीबैच लेबल में वास्तव में अधिक शोर है। फिर ये बैच गलत तरीके से अंतिम सीखा भार खींच लेंगे। यदि आप हर बार फेरबदल करते हैं, तो पिछले कुछ बैचों के असमान रूप से शोर होने की संभावना कम हो जाती है।


1

जब आप एक निश्चित डेटा सेट का उपयोग करके अपने नेटवर्क को प्रशिक्षित करते हैं, तो इसका अर्थ है कि प्रशिक्षण के दौरान आप कभी भी फेरबदल नहीं करते हैं। आप बहुत अधिक वजन प्राप्त करने की संभावना रखते हैं जो बहुत अधिक हैं और बहुत कम हैं जैसे कि 40,70, -101,200 ... आदि। इसका सीधा सा मतलब है कि आपके नेटवर्क ने प्रशिक्षण डेटा नहीं सीखा है, लेकिन इसने आपके प्रशिक्षण डेटा का शोर सीख लिया है। एक ओवरफिट मॉडल का क्लासिक मामला। इस तरह के नेटवर्क से आपको प्रशिक्षण के लिए आपके द्वारा उपयोग किए जाने वाले डेटा की भविष्यवाणियों पर स्पॉट मिलेगा। यदि आप इसका परीक्षण करने के लिए किसी अन्य इनपुट का उपयोग करते हैं, तो आपका मॉडल अलग हो जाएगा। अब, जब आप प्रत्येक युग (समग्र सेट का पुनरावृत्ति) के बाद प्रशिक्षण डेटा में फेरबदल करते हैं, तो आप बस प्रत्येक युग में न्यूरॉन्स को अलग-अलग इनपुट खिलाते हैं और यह केवल वजन को नियंत्रित करता है जिसका अर्थ है कि आप "कम" वजन प्राप्त करने की संभावना रखते हैं जो शून्य के करीब हैं। , और इसका मतलब है कि आपका नेटवर्क बेहतर सामान्यीकरण कर सकता है।

मुझे उम्मीद है कि स्पष्ट था।


1

यहाँ एक और अधिक सहज व्याख्या है:

ढाल वंश का उपयोग करते समय, हम चाहते हैं कि नुकसान ढाल की दिशा में कम हो जाए। ग्रेडिएंट की गणना वेट अपडेटिंग के प्रत्येक राउंड के लिए एक सिंगल-बैच के डेटा द्वारा की जाती है। जिस चीज को हम चाहते हैं, वह यह है कि यह मिनी-बैच-आधारित ढाल है, जो लगभग जनसंख्या ढाल है, क्योंकि यह एक त्वरित अभिसरण का उत्पादन करने की उम्मीद है। (कल्पना करें कि यदि आप नेटवर्क को एक मिनी-बैच में 100 क्लास 1 डेटा और दूसरे में 100 क्लास 2 डेटा खिलाते हैं, तो नेटवर्क लगभग घूम जाएगा। बेहतर तरीका यह है कि इसे प्रत्येक मिनी-बैच में 50 क्लास 1 + 50 क्लास 2 के साथ फीड किया जाए।)

इसे कैसे प्राप्त किया जा सकता है क्योंकि हम मिनी-बैच में जनसंख्या डेटा का उपयोग नहीं कर सकते हैं? आंकड़ों की कला हमें बताती है: जनसंख्या में फेरबदल, और पहले बैच_ डेटा के टुकड़े आबादी का प्रतिनिधित्व कर सकते हैं। यही कारण है कि हमें जनसंख्या में फेरबदल करने की आवश्यकता है।

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

यही मेरी समझ है। आशा करता हूँ की ये काम करेगा।

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