11

क्या आनुवांशिक एल्गोरिदम छिपे हुए नोड्स की संख्या को अनुकूलित करने और कृत्रिम तंत्रिका नेटवर्क पर किए गए प्रशिक्षण की मात्रा को अनुकूलित करने का सबसे प्रभावी तरीका है?तंत्रिका नेट ऑप्टिमाइज़ डब्ल्यू/जेनेटिक एल्गोरिदम

मैं मैटलैब में एनएनटीयूएलबॉक्स का उपयोग करके तंत्रिका नेटवर्क को कोडिंग कर रहा हूं। मैं अनुकूलन तकनीकों के किसी अन्य सुझाव के लिए खुला हूं, लेकिन मैं जीए के साथ सबसे ज्यादा परिचित हूं।

उत्तर

11

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

आनुवांशिक एल्गोरिदम कभी भी सबसे कुशल नहीं होंगे, लेकिन आमतौर पर जब आप का उपयोग करने के लिए कितनी संख्याएं होती हैं तो वे आमतौर पर उपयोग करते हैं।

प्रशिक्षण के लिए, आप backpropagation, nelder-mead आदि सहित अन्य एल्गोरिदम का उपयोग कर सकते हैं ..

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

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

+0

धन्यवाद। यह वह सटीक जानकारी है जिसे मैं ढूंढ रहा था। – ServAce85

+0

मुझे इसे सी/सी ++ में कोड करना अच्छा लगेगा, फिर उस पर कुछ घंटों के लिए 1000 अमेज़ॅन ईसी 2 सर्वर चालू करें। –

+0

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

0

मुझे यकीन नहीं है कि आपको इसके लिए आनुवंशिक एल्गोरिदम का उपयोग करना चाहिए या नहीं।

मुझे लगता है कि आपके आनुवंशिक एल्गोरिदम के लिए प्रारंभिक समाधान आबादी में आपके तंत्रिका नेटवर्क (एक विशिष्ट प्रशिक्षण विधि दी गई) के लिए प्रशिक्षण सेट शामिल होंगे। आम तौर पर प्रारंभिक समाधान आबादी में आपकी समस्या के यादृच्छिक समाधान होते हैं। हालांकि, यादृच्छिक प्रशिक्षण सेट वास्तव में आपके तंत्रिका नेटवर्क को प्रशिक्षित नहीं करेंगे।

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

तो, यदि आप इसे चलाते हैं, तो आपको प्रशिक्षण सेट मिलेगा जो तंत्रिका नेटवर्क गुणवत्ता (= प्रशिक्षण समय, संख्या छिपा नोड्स, नेटवर्क की समस्या निवारण क्षमताओं) के संदर्भ में सर्वोत्तम परिणाम प्रदान करेगा।

या आप एक पूरी तरह से अलग दृष्टिकोण पर विचार कर रहे हैं?

0

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

एनएन के प्रशिक्षण पुनरावृत्तियों के लिए अक्सर यही सच है। अधिक प्रशिक्षण नेटवर्क को एक बिंदु तक मदद करता है, लेकिन जल्द ही बहुत अधिक प्रभाव पड़ता है।

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

+0

ब्रूट फोर्स मेरे आवेदन के लिए काम नहीं करता है क्योंकि मेरा डेटा बहुत शोर है (ईईजी डेटा सोचें)। – ServAce85

0

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

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

2

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

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

एक संशोधित जेनेटिक एल्गोरिदम के साथ एक और तकनीक बैक-प्रोपेगेशन के साथ किसी समस्या पर काबू पाने के लिए उपयोगी हो सकती है। बैक-प्रोपेगेशन आमतौर पर स्थानीय मिनीमा पाता है, लेकिन यह उन्हें सटीक और तेज़ी से पाता है। बैक-प्रोपेगेशन के साथ जेनेटिक एल्गोरिदम का संयोजन, उदाहरण के लिए, लैमरिकियन जीए में, दोनों के फायदे देते हैं। इस तकनीक को संक्षेप में GAUL tutorial

4

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

उन्होंने नीरो नामक एक गेम भी बनाया। काफी अद्वितीय और बहुत ही अद्भुत मूर्त परिणाम।

डॉ स्टेनली के होमपेज:

http://www.cs.ucf.edu/~kstanley/

यहाँ आप बस सब कुछ NEAT संबंधित के बारे में मिल जाएगा के रूप में वह एक है जो यह आविष्कार किया है।

+0

इसके लिए सी # लाइब्रेरी भी है -> SHARPNEAT http://sharpneat.sourceforge.net/ – JohnIdol

1

कभी-कभी एक तंत्रिका नेटवर्क को प्रशिक्षित करने के लिए आनुवांशिक एल्गोरिदम का उपयोग करना उपयोगी होता है जब आपका उद्देश्य कार्य निरंतर नहीं होता है।

+0

क्यों न केवल उस मामले में जीपी का उपयोग करें?यदि आप तंत्रिका नेटवर्क में वजन को अद्यतन करने के लिए जीए का उपयोग करते हैं, तो कुछ स्मार्ट विधि की बजाय यह सुनिश्चित करता है कि वजन सही दिशा में अपडेट हो जाए, ऐसा लगता है कि आप जीपी का उपयोग करके एक तंत्रिका नेट का उपयोग करने का लाभ खो देते हैं। – HelloGoodbye

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