सीखने की दर मेरे तंत्रिका नेटवर्क के वजन को आसमान छूने का कारण क्यों बन रही है?


9

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

.001 की एक सीखने की दर का उपयोग करना (जो मुझे लगा कि बहुत रूढ़िवादी था), न्यूनतम फ़ंक्शन वास्तव में तेजी से नुकसान उठाएगा। एक युग के बाद नुकसान हजारों की संख्या में एक ट्रिलियन और फिर अनंत ('नान') में कूद सकता है। जब मैंने सीखने की दर को .0001 से कम किया, तो सब कुछ ठीक रहा।

1) परिमाण के एकल आदेश का ऐसा प्रभाव क्यों होता है?

2) न्यूनतम फ़ंक्शन वास्तव में अपने फ़ंक्शन के विपरीत प्रदर्शन क्यों करता है और नुकसान को अधिकतम करता है? मुझे लगता है कि ऐसा नहीं होना चाहिए, सीखने की दर से कोई फर्क नहीं पड़ता।


क्या आप बता सकते हैं कि आपने अपने वजन को कैसे बढ़ाया है?
हिमांशु राय

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

जवाबों:


9

आपको डीप लर्निंग का चैप्टर 8 मददगार लग सकता है। इसमें, लेखक तंत्रिका नेटवर्क मॉडल के प्रशिक्षण पर चर्चा करते हैं। यह बहुत जटिल है, इसलिए मुझे आश्चर्य नहीं है कि आपको कठिनाई हो रही है।

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

लेखकों से उद्धरण:

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

माना जाता है कि बीमार नेटवर्क समस्या तंत्रिका नेटवर्क प्रशिक्षण समस्याओं में मौजूद है। बीमार कंडीशनिंग से समझदारी के साथ प्रकट हो सकता है कि "अटक" को इस अर्थ में प्राप्त करें कि बहुत छोटे कदम लागत फ़ंक्शन को बढ़ाते हैं। [मेरा जोर जोड़ा]

लेखक यह दिखाने के लिए एक सरल व्युत्पत्ति प्रदान करते हैं कि यह मामला हो सकता है। ग्रेडिएंट डिसेंट का उपयोग करके, लागत फ़ंक्शन को (दूसरे क्रम में) बदलना चाहिए

ε22जीटीएचजी-εजीटीजी

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


2
मुझे ऐसा लगता है कि यह क्वोरा उत्तर हेस्सियन के बीमार कंडीशनिंग के लिए काफी सहज स्पष्टीकरण प्रदान करता है।
ओरेन मिलमैन

3

1) परिमाण के एकल आदेश का ऐसा प्रभाव क्यों होता है?

2) न्यूनतम फ़ंक्शन वास्तव में अपने फ़ंक्शन के विपरीत प्रदर्शन क्यों करता है और नुकसान को अधिकतम करता है? मुझे लगता है कि ऐसा नहीं होना चाहिए, सीखने की दर से कोई फर्क नहीं पड़ता।

दो मुख्य कारण हैं। पहले एक आप दूसरे में पहले चरण में एक ही डेटा का उपयोग नहीं कर रहे हैं। यदि पहले चरण में मॉडल उन मूल्यों को सीखता है और स्थानीय न्यूनतम में आता है तो नए मूल्यों के लिए बड़ा नुकसान होने की संभावना है।

दूसरा कारण लागत समारोह का आकार है। आप छोटे चरणों द्वारा मूल्य को कम करने की कोशिश करते हैं, उन चरणों की लंबाई दो कारकों द्वारा दी जाती है: ढाल और सीखने की दर। छवि आपका कार्य x ^ 2 की तरह है। यदि आपके मान 0 के करीब हैं, तो ग्रेडिएंट आगे की तुलना में छोटा होने जा रहा है, लेकिन यदि आपकी सीखने की दर बड़ी है, तो 0 के करीब होने के बजाय आप वास्तव में त्रुटि को बढ़ाते हैं क्योंकि ग्रेडिंग और उसके आधार पर आपका नया बिंदु आपके पिछले चरण की तुलना में सीखने की दर 0 है। और ऐसा कई बार हो सकता है।

इस लिंक पर एक नज़र डालें: http://www.statisticsviews.com/details/feature/5722691/Getting-to-the-Bottom-of-Regression-with-Gradient-Descent.html

यदि आप अल्फा 0.01 और अल्फा 0.12 के साथ आंकड़े देखते हैं, तो आप देखेंगे कि कैसे पहले आंकड़े में सीखने की दर छोटी है और इसलिए ढाल न्यूनतम के करीब हो रही है, लेकिन दूसरे मामले में सीखने की दर इतनी बड़ी है कि ढाल चलती है हर कदम में आगे।


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