2009-03-16 25 views
17

मेरे पास एक प्रश्न है जो छोटा हो सकता है लेकिन यह कहीं भी नहीं देखा गया है। मैं तंत्रिका नेटवर्क का अध्ययन कर रहा हूं और हर जगह मैं कुछ सिद्धांत और कुछ मामूली उदाहरण देखता हूं जिसमें कुछ 0s और 1s इनपुट के रूप में होते हैं। मैं सोच रहा हूं: क्या मुझे एक न्यूरॉन के लिए इनपुट मान के रूप में केवल एक मान रखना है, या यह एक वेक्टर हो सकता है, मान लें, 3 मान (उदाहरण के लिए आरजीबी रंग)?तंत्रिका नेटवर्क - इनपुट मान

उत्तर

1

यह वही हो सकता है जब तक आप अपना आंतरिक कार्य लिखते हैं।

आपके द्वारा उपयोग किए जाने वाले उदाहरण [0; 1] अपने डोमेन के रूप में उपयोग करते हैं, लेकिन आप आर, आर², या जो कुछ भी चाहते हैं उसका उपयोग कर सकते हैं, जब तक कि आप अपने न्यूरॉन्स में उपयोग किए जाने वाले फ़ंक्शन को इस डोमेन पर परिभाषित किया गया हो।

आपके मामले में, आप अनुमति देने के लिए R3 पर अपने कार्यों को परिभाषित कर सकते हैं आरजीबी मूल्यों

एक तुच्छ उदाहरण नियंत्रित किया जा करने के लिए के लिए: (x1, y1, z1), (x2, y2, z2) का उपयोग -> (ax1 + x2, by1 + y2, cz1 + z2) आपके फ़ंक्शन को दो रंगों को एक में बदलने के लिए, एबी और सी आपके सीखने के कोफ हैं, जिन्हें आप सीखने के चरण के दौरान निर्धारित करेंगे।

बहुत विस्तृत जानकारी (आपके प्रश्न का उत्तर सहित) on Wikipedia उपलब्ध है।

+0

लेकिन यदि कोई डेटासेट किसी अन्य डेटासेट के संबंध में रहता है तो उन्हें विभिन्न न्यूरॉन्स को प्रदान किया जाना चाहिए, है ना? या यह एक वेक्टर इनपुट हो सकता है? – agnieszka

+0

हाँ, यह एक वेक्टर इनपुट हो सकता है; आर 3 का अर्थ है 3-सदस्य वेक्टर (अच्छी तरह से, मामूली बोलने वाला) – Brann

+0

अच्छी तरह से हाँ मुझे यह मिलता है: डी मेरा मतलब है कि यदि आपके पास 3 बाद की छवियों में एक पिक्सेल के 3 रंग हैं और आप जानते हैं कि इन रंगों के बीच अंतर आपके परिणाम को प्रभावित करते हैं इन 3 रंगों वाले इनपुट के लिए इन 3 रंगों या एक न्यूरॉन के लिए 3 न्यूरॉन्स? या मैं चुनता हूँ? – agnieszka

6

बहु-आयामी डेटा से निपटने पर, मेरा मानना ​​है कि दो परत तंत्रिका नेटवर्क बेहतर परिणाम देने के लिए कहा जाता है।

आपके मामले में:

R[0..1] => (N1)----\ 
        \ 
G[0..1] => (N2)-----(N4) => Result[0..1] 
        /
B[0..1] => (N3)----/ 

आप देख सकते हैं, N4 neurone 3 प्रविष्टियों संभाल कर सकते हैं।

[0..1] अंतराल एक सम्मेलन है लेकिन एक अच्छा आईएमओ है। इस तरह, आप जेनेरिक न्यूरॉन कक्षाओं के एक सेट को आसानी से कोड कर सकते हैं जो अनियंत्रित संख्या में प्रविष्टियां ले सकता है (मेरे पास टेम्प्लेट सी ++ कक्षाएं व्यक्तिगत रूप से टेम्पलेट पैरामीटर के रूप में प्रविष्टियों की संख्या के साथ थीं)। तो आप एक बार अपने न्यूरॉन्स के तर्क को कोड करते हैं, फिर आप अपने न्यूरॉन्स के भीतर नेटवर्क की संरचना और/या कार्यों के संयोजन के साथ खिलौना करते हैं।

+0

लेकिन यह 3-आयामी डेटा नहीं है .... यह एक न्यूरॉन – agnieszka

+0

के लिए एक मान है समस्या यह है कि मैंने एक छवि के पिक्सल सेट किए हैं, मेरे पास कुछ दृश्य (3?) एक दृश्य के बाद की छवियां हैं जो मुझे कुछ देती हैं (3?) एक पिक्सेल के विभिन्न रंग। प्रत्येक रंग में 3 मान होते हैं। सवाल यह है कि – agnieszka

+1

जारी रखने के लिए सवाल यह है कि मुझे प्रत्येक छवि के लिए प्रत्येक पिक्सेल के लिए प्रत्येक आर और जी और बी के लिए एक इनपुट न्यूरॉन चाहिए और क्या मैं एक न्यूरॉन के लिए इनपुट के रूप में रंग (आर, जी, बी मान) डाल सकता हूं , या शायद 3 बाद के रंग? – agnieszka

2

आम तौर पर एक एकल न्यूरॉन अपने इनपुट के रूप में कई वास्तविक संख्याओं को लेता है और वास्तविक संख्या को आउटपुट करता है, जिसे आम तौर पर सिग्मोइड फ़ंक्शन को वास्तविक संख्याओं के योग (स्केल किए गए, और फिर प्लस या निरंतर ऑफसेट को कम करने) के रूप में गणना करने के रूप में गणना की जाती है।

यदि आप दो आरजीबी वैक्टर (2 x 3 वास्तविक) कहते हैं, तो आपको यह तय करने की आवश्यकता है कि आप मूल्यों को कैसे जोड़ना चाहते हैं। यदि आप सभी तत्वों को एक साथ जोड़ते हैं और सिग्मोइड फ़ंक्शन लागू करते हैं, तो यह छह वास्तविक "फ्लैट" में प्राप्त करने के बराबर है। दूसरी तरफ, यदि आप आर तत्वों को संसाधित करते हैं, तो जी तत्व, और बी तत्व, सभी व्यक्तिगत रूप से (उदा। जोड़ों को जोड़ या घटाना), आप अभ्यास में तीन स्वतंत्र न्यूरॉन्स हैं।

तो संक्षेप में, नहीं, एक न्यूरॉन वेक्टर मूल्यों में नहीं लेता है।

+0

में बहुत मदद की है, इसलिए आपने बताया कि आपके पास 3 इनपुट न्यूरॉन्स हैं, प्रत्येक को एक मूल्य मिल रहा है जिसमें तीन मान होते हैं, उदाहरण के लिए तीन रुपये? – agnieszka

+0

आह, जहां वास्तव में उपरोक्त उदाहरण में केवल दो आर है, लेकिन हां, एक तरीका प्रति तत्व एक न्यूरॉन समर्पित करना होगा। –

9

उपर्युक्त उत्तर तकनीकी रूप से सही हैं, लेकिन सरल सत्य की व्याख्या नहीं करते: कभी भी ऐसी स्थिति है जहां आपको एक न्यूरॉन को संख्याओं का वेक्टर देना होगा।

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

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

संक्षेप में: कृत्रिम तंत्रिका नेटवर्क का उपयोग इनपुट इकाई को वेक्टर देने के बिना किया जाता है, लेकिन इसके कारण कोई कम्प्यूटेशनल पावर नहीं खोता है।

1

इनपुट के रूप में दिखाई देने वाले स्पेक्ट्रम को सामान्य तरंग दैर्ध्य का उपयोग करें।

नेट पर कुछ अनुमानित समीकरण हैं। आरजीबी के लिए तरंगदैर्ध्य रूपांतरण या एचएसएल रंग मॉडल का उपयोग करें और ह्यू घटक निकालें और संभवतः संतृप्ति और हल्कापन का उपयोग करें। खैर ...

3

आम तौर पर, एक न्यूरॉन के लिए इनपुट 0 और 1 के बीच का मान होता है। यह सम्मेलन केवल कार्यान्वयन की आसानी के लिए नहीं है बल्कि इनपुट मानों को समान श्रेणी में सामान्यीकृत करने से यह सुनिश्चित होता है कि प्रत्येक इनपुट में समान भार होता है । (यदि आपके पास 0 और 7 के बीच पिक्सेल मानों के साथ 8 बिट रंग वाली कुछ छवियां हैं और 0 और 255 के बीच पिक्सेल मानों के साथ 16 बिट रंग वाली कुछ छवियां हैं, तो संभवतः आप 24 बिट रंग छवियों का पक्ष नहीं लेना चाहेंगे क्योंकि संख्यात्मक मान हैं इसी प्रकार, आप शायद अपनी छवियों को एक ही आयाम मानना ​​चाहेंगे।)

इनपुट के रूप में पिक्सेल मानों का उपयोग करने के रूप में, छवि के उच्च स्तर का प्रतिनिधित्व अपने पिक्सेल (more info) से इकट्ठा करने के लिए बहुत आम है)।

[1 1 1 1 1] 
[0 0 1 0 0] 
[0 0 1 0 0] 
[0 0 1 0 0] 
[0 0 1 0 0] 

हम मदद करने के लिए छवियों का क्षैतिज, ऊर्ध्वाधर, और विकर्ण सुविधाओं की खोज एक निम्नलिखित सुविधा मैट्रिक्स इस्तेमाल कर सकते हैं: उदाहरण के लिए, एक 5 x 5 (सामान्यीकृत) ग्रे पैमाने छवि दी। अधिक जानकारी के लिए python haar face detection देखें।

[1 1] [0 0] [1 0] [0 1] [1 0], [0 1] 
[0 0], [1 1], [1 0], [0 1], [0 1], [1 0] 

इनपुट वेक्टर, वी बनाने के लिए, इस छवि के लिए, पहली 2x2 सुविधा मैट्रिक्स लेने के लिए और छवि में प्रथम स्थान के लिए तत्व के लिहाज से गुणा के साथ "लागू करें"। को लागू करना,

[1 1] (the first feature matrix) to [1 1] (the first position in the image) 
[0 0]        [0 0] 

इस छवि के लिए अपने इनपुट वेक्टर के पीछे 2 क्योंकि 1 * 1 + 1 * 1 + 0 * 0 + 0 * 0 = 2. संलग्न 2 का परिणाम देगा। फिर इस सुविधा मैट्रिक्स को अगली स्थिति में ले जाएं, दाईं ओर एक, और इनपुट वेक्टर में परिणाम जोड़कर इसे फिर से लागू करें। फीचर मैट्रिक्स की प्रत्येक स्थिति और प्रत्येक फीचर मैट्रिक्स के लिए बार-बार ऐसा करें। यह एक एकल छवि के लिए आपके इनपुट वेक्टर का निर्माण करेगा। सुनिश्चित करें कि आप प्रत्येक छवि के लिए उसी क्रम में वैक्टर बनाते हैं।

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

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