2010-10-14 13 views
7

के लिए तंत्रिका नेटवर्क मैं एक परत परत तंत्रिका नेटवर्क के लिए कोड में जोड़ने की कोशिश कर रहा हूं जो इनपुट के रूप में बिटमैप लेता है और वर्णमाला में प्रत्येक अक्षर की संभावना के लिए 26 आउटपुट होता है।पत्र पहचान

मेरे पास पहला प्रश्न है जो एक छिपी हुई परत के बारे में है। क्या मैं यह सोचने में सही हूं कि छिपी हुई परत के पास केवल आउटपुट मानों और वजन का सेट होगा? इसे अपने स्वयं के पूर्वाग्रह की आवश्यकता नहीं है?

क्या मैं यह भी पुष्टि कर सकता हूं कि मैं feedforward पहलू के बारे में सोच रहा हूं? यहां कुछ छद्म कोड है:

// input => hidden 
for j in hiddenOutput.length: 
    sum=inputs*hiddenWeights 
    hiddenOutput[j] = activationFunction(sum) 
// hidden => output 
for j in output.length: 
    sum=hiddenOutputs*weights 
    output[j] = activationFunction(sum) 

मान लें कि यह सही है, क्या प्रशिक्षण ऐसा कुछ होगा?

def train(input[], desired[]): 
    iterate through output and determine errors[] 
    update weights & bias accordingly 
    iterate through hiddenOutput and determine hiddenErrors[] 
    update hiddenWeights & (same bias?) accordingly 

किसी भी मदद के लिए अग्रिम धन्यवाद, मैं इतने सारे उदाहरण और ट्यूटोरियल पढ़ा है और मैं अभी भी कैसे सब कुछ सही ढंग ऐसा करने के लिए निर्धारित करने में समस्या हो रही।

+4

क्या यह होमवर्क है? यदि ऐसा है, तो कृपया इसे इस तरह टैग करें। प्रयोग है या नहीं, प्रयोग; मैंने प्रारंभिक तंत्रिका नेटवर्क सिमुलेशन में मेरी असफलताओं से टन सीखा। ऐसा नहीं है कि आप गलती से SkyNet और मानव जाति या Sumptin की गिरावट के लिए जा रहे हैं। – msw

+1

हां यह अब टैग किया गया है।मैं प्रयोग कर रहा हूं लेकिन दुर्भाग्यवश वर्तमान स्थिति बेहद खराब प्रदर्शन कर रही है, इसलिए मैं स्पष्ट रूप से कुछ गलत कर रहा हूं – dylan

उत्तर

1

डायलन, यह आपके होमवर्क असाइनमेंट के बाद शायद यह संभव है, लेकिन मेरे पास आपके द्वारा पोस्ट किए गए कार्यों के बारे में कुछ विचार हैं।

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

जो चीज मैंने तंत्रिका जाल के बारे में सीखा वह यह है कि आप कभी नहीं जानते कि वे क्यों काम कर रहे हैं (या काम नहीं कर रहे हैं)। वह अकेला ही दवा और वित्त के क्षेत्र से बाहर रखने का कारण है।

+0

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

0

आप http://www.ai-junkie.com/ann/evolved/nnt1.html पढ़ना चाहेंगे। वहां आप जो कुछ कर रहे हैं उसके बारे में बिल्कुल कुछ उल्लेख करते हैं। यह कोड सीखने के बारे में एक (अधिकतर) सरल स्पष्टीकरण के साथ कोड भी प्रदान करता है। यद्यपि सीखने का पहलू फ़ीड से पूरी तरह अलग है, लेकिन उम्मीद है कि आपको एनएन की प्रकृति के बारे में कुछ विचार दें।

यह मेरा विश्वास है कि छुपा और आउटपुट परतों में भी पूर्वाग्रह होना चाहिए।

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

0

जहां तक ​​पूर्वाग्रह शर्तों का उपयोग किया गया है, मुझे में अनुभाग बहुत उपयोगी पाया गया है। मैं अत्यधिक पूछे जाने वाले प्रश्न पढ़ने की सलाह देता हूं।

संबंधित मुद्दे