न्यूरल नेटवर्क को हमेशा एकाग्र करना चाहिए?


16

परिचय

पहला कदम

मैंने तंत्रिका नेटवर्क का एक मानक backpropegating लिखा है, और इसका परीक्षण करने के लिए, मैंने इसे XOR मैप करने का निर्णय लिया।

यह एक 2-2-1 नेटवर्क है (तन सक्रियण फ़ंक्शन के साथ)

X1  M1
        O1
X2  M2

B1  B2

परीक्षण के प्रयोजनों के लिए, मैंने मैन्युअल रूप से शीर्ष मध्य न्यूरॉन (M1) को AND गेट और निचले न्यूरॉन (M2) को OR गेट (दोनों आउटपुट 1 यदि सत्य और -1 गलत है) होने के लिए सेट किया है।

अब, मैंने मैन्युअल रूप से कनेक्शन M1-O1 को -.5, M2-O1 को 1, और B2 को -75 तक सेट किया।

अतः यदि M1 = 1 और M2 = 1, योग (-0.5 +1 -0.75 = -.25) tanh (0.25) = -0.24 है

यदि M1 = -1 और M2 = 1, योग है ((-0.5) * (- 1) +1 -0.75 = .75) tanh (0.75) = 0.63।

यदि M1 = -1 और M2 = -1, योग है ((-0.5) * (- 1) -1 -0.75 = -1.25) tanh (1.25) = -0.8

यह "पहले पुनरावृत्ति" के लिए अपेक्षाकृत अच्छा परिणाम है।

दूसरा चरण

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

परीक्षण के लिए, मैं और .5 .4 .3 (क्रमशः एम 1, एम 2 और पूर्वाग्रह के लिए वजन) सेट करता हूं।

यहाँ, हालाँकि, मुझे समस्याएँ होने लगी हैं।


मेरा प्रश्न

मैंने अपनी सीखने की दर को .2 पर सेट किया और 10000 पुनरावृत्तियों या अधिक के लिए प्रशिक्षण डेटा (ABA ^ B) के माध्यम से कार्यक्रम को पुनरावृत्त होने दिया।

अधिकांश समय, वज़न एक अच्छे परिणाम के लिए परिवर्तित होता है। हालाँकि, कई बार, वे वेट (१) १.५, ५. and, और ९ में परिवर्तित हो जाते हैं, जिसके फलस्वरूप {१, १} (जब परिणाम एक -१ होना चाहिए) के इनपुट (सम) में होता है।

क्या यह अपेक्षाकृत सरल एएनएन के लिए संभव है जिसका समाधान बिल्कुल नहीं है या मेरे कार्यान्वयन में एक बग है?

जवाबों:


13

(मुझे लगता है कि "त्रुटि प्रसार" से मेरा मतलब है कि मैं जिसे "त्रुटि बैक -प्रोपेगेशन" कहता हूं। "

न्यूरल नेटवर्क्स के पेज 231 पर (हेकिन द्वारा), उनका कहना है कि बैक प्रोपगेशन हमेशा कंवर्ट होता है, हालांकि रेट (उनके शब्दों में) "धीरे-धीरे धीमा हो सकता है।"

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

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

यह पता लगाने के लिए कि क्या आपके कोड में कोई बग है, मैं त्रुटि शब्द को प्रिंट करूंगा और सत्यापित करूंगा कि यह प्रत्येक पुनरावृत्ति पर घटता है। यदि ऐसा है, तो आप शायद सिर्फ एक स्थानीय मिनीमा को मार रहे हैं।


सभी वज़न बढ़ जाते हैं (OR न्यूरॉन का वजन तेज़ी से बढ़ता है), जो त्रुटि को कम करता है जब इनपुट {1,0}, {0,1}, {0,0} होता है, लेकिन {1,1} होने पर त्रुटि को अधिकतम करता है। क्या यह बैच सीखने पर ऑन-लाइन सीखने के साथ एक समस्या है?

@ शमूएल: ऑनलाइन और बैच दोनों ग्रेडिएंट की दिशा में जाने वाले हैं। यदि वह क्रम गलत दिशा में इंगित करता है, तो वे दोनों गलत दिशा में जाएंगे। हिल क्लाइम्बिंग के विकिपीडिया पेज में इसके बारे में जानने के कुछ तरीके हैं, यदि आप रुचि रखते हैं।
एक्सोडोरैप

6

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

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

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