तंत्रिका नेटवर्क वजन का अभिसरण


10

मैं ऐसी स्थिति में आया, जहां मेरे तंत्रिका नेटवर्क का वजन 500 पुनरावृत्तियों के बाद भी परिवर्तित नहीं हो रहा है। मेरे तंत्रिका नेटवर्क में 1 इनपुट परत, 1 छिपी परत और 1 आउटपुट परत है। वे इनपुट परत में लगभग 230 नोड्स, हिडन लेयर में 9 नोड्स और आउटपुट लेयर में 1 आउटपुट नोड हैं। मैं जानना चाहता था, अगर मैं जल्दी रुकने की स्थिति (100 पुनरावृति के बाद अपने तंत्रिका नेटवर्क प्रशिक्षण को रोकना कहता हूं)। मॉडल पर इसका क्या प्रभाव पड़ेगा?

यह भी जानना चाहता था कि अगर तंत्रिका नेटवर्क में वजन परिवर्तित नहीं हो रहा है, तो चारों ओर उद्योग मानक क्या है?


क्या आपका डेटा ठीक से सामान्यीकृत है? यह आमतौर पर इस तरह के व्यवहार का कारण है।
साश्केलो

आमतौर पर छिपी हुई परत में न्यूरॉन की संख्या आपकी इनपुट परत की तुलना में एक ही आकार की होनी चाहिए। मुझे लगता है कि 9 न्यूरॉन्स बहुत छोटे हैं। क्या आपने 200-300 न्यूरॉन्स तक बढ़ाने की कोशिश की?
ThiS

@sashkello हाँ डेटा ठीक से सामान्यीकृत हैं।
शिक्षार्थी

1
@ जाम्पा में छिपी हुई परत में 9 नोड होने का कोई कारण नहीं है। हमने महसूस किया कि छिपी हुई परत में अधिक नोड होने से नेटवर्क की जटिलता बढ़ जाएगी और डेटा ओवरफिट हो जाएगा।
शिक्षार्थी

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

जवाबों:


13

पूछने के लिए कई प्रश्न हैं:

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

आप पंचांग के तरीके में क्या दे सकते हैं? क्या आप हमें डेटा की प्रकृति के बारे में कुछ बता सकते हैं?

आप न्यूरल नेटवर्क्स का ग्रेडिएंट बूस्टेड ट्री बना सकते हैं।

आपने पूछा कि अगर आप जल्दी रुक जाते हैं तो क्या होता है।

आप खुद आजमा सकते हैं। 300x चलाएं जहां आप यादृच्छिक आरंभिक भार के साथ शुरू करते हैं, और फिर पुनरावृत्तियों की एक निर्दिष्ट संख्या पर रोकते हैं, 100 बताते हैं। उस बिंदु पर अपने कलाकारों की टुकड़ी त्रुटि, आपके प्रशिक्षण-सबसेट की त्रुटि, और आपके परीक्षण-सेट त्रुटि की गणना करें। दोहराएँ। आपके पास यह बताने के लिए 300 मान हैं कि त्रुटि क्या है, आप 100 सीखने के पुनरावृत्तियों को देखते हुए अपने त्रुटि वितरण का अंदाजा लगा सकते हैं। यदि आप चाहें, तो आप उस वितरण को सीखने के कई अन्य मूल्यों पर देख सकते हैं। मैं 200, 500 और 1000 पुनरावृत्तियों का सुझाव देता हूं। इससे आपको पता चल जाएगा कि समय के साथ आपका SNR कैसे बदलता है। SNR बनाम पुनरावृत्ति गिनती का एक भूखंड आपको "चट्टानों" या "काफी अच्छा" के बारे में एक विचार दे सकता है। कभी-कभी ऐसी चट्टानें होती हैं जहाँ त्रुटि होती है। कभी-कभी त्रुटि उस बिंदु पर स्वीकार्य होती है।

यह आपके सिस्टम के लिए "अपेक्षाकृत सरल" डेटा या "बहुत अच्छा" भाग्य लेता है जो लगातार 100 पुनरावृत्तियों में परिवर्तित होता है। जो दोनों दोहराव के बारे में नहीं हैं और न ही वे सामान्य हैं।

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

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

अब आप नहीं जानते कि वास्तव में "अच्छा" कहाँ है। आपके पास क्या है एक स्थानीय "ढलान" है। आप स्थानीय "बेहतर" की दिशा में ढाल मूल प्रदर्शन कर सकते हैं, जहां आपकी बात अभी है। यह आपको "सार्वभौमिक" बेहतर नहीं बताता है, लेकिन स्थानीय कुछ भी नहीं से बेहतर है।

तो आप पुनरावृत्ति करना शुरू कर देते हैं, जो कि विश्वासघात की घाटी की ओर नीचे की ओर चलना है। आप तब तक पुनरावृति करते हैं जब तक आपको लगता है कि आप कर चुके हैं। हो सकता है कि आपके वज़न का मूल्य बड़ा हो। हो सकता है कि वे सभी जगह उछल रहे हों। शायद गणना "बहुत लंबा समय ले रही है"। आप करना चाहते हैं।

तो आप कैसे जानते हैं कि क्या आप "अच्छे पर्याप्त" हैं?

यहाँ एक त्वरित परीक्षण है जो आप कर सकते हैं:

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

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

आपने पूछा कि अगर वज़न नहीं जुटाता तो क्या होता है।

तंत्रिका नेटवर्क एक उपकरण हैं। वे एकमात्र उपकरण नहीं हैं। और भी हैं। मैं उनमें से एक का उपयोग करके देखूंगा।

मैं सूचना मानदंड के संदर्भ में काम करता हूं, इसलिए मैं दोनों भार (पैरामीटर गणना) और त्रुटि को देखता हूं। आप उनमें से एक को आजमा सकते हैं।

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

मुझे कम्प्रेस्ड सेंसिंग का विचार दिलचस्प लगता है। यह सामान्यीकरण के नुकसान के बिना कुछ प्रणालियों के कट्टरपंथी उप-नमूने की अनुमति दे सकता है। मैं यह निर्धारित करने के लिए कुछ बूटस्ट्रैप री-सैंपल किए गए आँकड़ों और आपके डेटा के वितरण को देखूंगा कि प्रशिक्षण सेट का उप-नमूना किस स्तर पर प्रतिनिधि बनता है। यह आपको आपके डेटा के "स्वास्थ्य" का कुछ माप देता है।

कभी-कभी यह अच्छी बात है कि वे नहीं जुटे

क्या आपने कभी मतदान विरोधाभास के बारे में सुना है? आप इसे दोतरफा गति के लिए एक उच्च-गिनती के चचेरे भाई के रूप में सोच सकते हैं। यह एक पाश है। 2-व्यक्ति मतदान विरोधाभास में पहला व्यक्ति "ए" चाहता है जबकि दूसरा उम्मीदवार "बी" (या नहीं-ए या ऐसा) चाहता है। महत्वपूर्ण हिस्सा यह है कि आप इसे लूप के रूप में सोच सकते हैं।

तंत्रिका नेटवर्क में लूप महत्वपूर्ण हैं। प्रतिपुष्टि। प्रत्यावर्तन। इसने अवधारणात्मक को XOR जैसी समस्याओं को हल करने में सक्षम बनाया। यह लूप बनाता है, और कभी-कभी लूप वोटिंग विरोधाभास की तरह काम कर सकते हैं, जहां वे अनंत पुनरावृत्तियों होने पर वज़न बदलते रहेंगे। वे अभिसरण करने के लिए नहीं हैं क्योंकि यह अलग-अलग वजन नहीं है जो मायने रखता है, लेकिन लूप में वजन की बातचीत।

ध्यान दें:

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

चेन, आरबी, चांग, ​​एसपी, वांग, डब्ल्यू।, और वोंग, डब्ल्यूके, (2011, सितंबर)। पार्टिकल झुंड ऑप्टिमाइज़ेशन मेथड्स (प्रिप्रिंट) के जरिए ऑप्टिमल एक्सपेरिमेंटल डिज़ाइन्स, 25 मार्च, 2012 को http://www.math.ntu.edu.tw/~mathlib/preprint/2011-03.pdf से प्राप्त


2

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

यदि ऐसा है, तो कृपया यह देखने के लिए कि क्या यह है, ग्रेडिएंट के परिमाण की जाँच करें। इस समस्या से निपटने के लिए कई अलग-अलग तकनीकें हैं, जैसे कि ग्रेडिएंट में एक गति को जोड़ना।

तकनीकों और व्यापार की चाल के बारे में विस्तार से जानकारी के लिए, Yann LeCun द्वारा इस (पेपर को अवश्य पढ़ें) पर एक नज़र डालें


1

सुनिश्चित करें कि आपके ग्रेडिएंट सीमा से परे नहीं जा रहे हैं या यह भी संभव है कि ग्रेडिएंट शून्य हो रहे हैं। यह लोकप्रिय रूप से धमाकेदार ग्रेडिएंट्स और लुप्त ग्रेडिएंट्स समस्याओं के रूप में जाना जाता है।

एक संभव समाधान AdaGrad या एडम जैसे एक अनुकूली अनुकूलक का उपयोग करना है।

जब मुझे तंत्रिका नेटवर्क के साथ शुरुआत की जा रही थी, तो मुझे एक साधारण तंत्रिका नेटवर्क का प्रशिक्षण देते समय इसी तरह की समस्या का सामना करना पड़ा था।

कुछ संदर्भ: https://en.wikipedia.org/wiki/Vanishing_gradient_problem https://www.youtube.com/watch?v=VuamhbEWEWA


0

मेरे पास कई डेटा सेट हैं जो धीरे-धीरे परिवर्तित होते हैं - शायद क्योंकि इनपुट अत्यधिक सहसंबद्ध थे।

मैंने अपना C ++ NN विश्लेषक लिखा, और इसके साथ, मैं प्रत्येक वजन के लिए सीखने की दर को भिन्न कर सकता हूं। प्रत्येक किनारे पर प्रत्येक वजन के लिए मैं दो चीजें करता हूं जो कुछ मदद करते हैं।

सबसे पहले, मैं प्रत्येक सीखने की दर को [0,1] से समान रूप से वितरित यादृच्छिक संख्या से गुणा करता हूं। मैं अनुमान लगा रहा हूँ कि सहसंबंध समस्या के साथ मदद करता है।

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

मेरे पास उन चालों में से किसी के लिए कोई विशेष औचित्य नहीं है, लेकिन वे बहुत अच्छी तरह से काम करते हैं।

उम्मीद है की यह मदद करेगा।

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