परिचय
पहला कदम
मैंने तंत्रिका नेटवर्क का एक मानक 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, और ९ में परिवर्तित हो जाते हैं, जिसके फलस्वरूप {१, १} (जब परिणाम एक -१ होना चाहिए) के इनपुट (सम) में होता है।
क्या यह अपेक्षाकृत सरल एएनएन के लिए संभव है जिसका समाधान बिल्कुल नहीं है या मेरे कार्यान्वयन में एक बग है?