9

मैंने अपने एनीमेशन इंजन के व्यवहार बनाने के लिए एक तंत्रिका नेटवर्क के साथ जाने का फैसला किया। तंत्रिका नेटवर्क में मेरे शरीर के प्रत्येक हिस्से के लिए 3 वेक्टर 3 और 1 यूलर कोण होता है। पहला वेक्टर 3 स्थिति है, दूसरा इसकी गति है, और तीसरा इसकी कोणीय वेग है। यूलर कोण शरीर के हिस्से में घूर्णन क्या होता है। और मेरे पास 7 शरीर के अंग हैं। उन डेटा प्रकारों में से प्रत्येक में 3 फ्लोट हैं। 7 * 4 * 3 = 84, इसलिए मेरे पास मेरे तंत्रिका नेटवर्क के लिए 84 इनपुट हैं। आउटपुट को चरित्र की मांसपेशियों में मैप किया जाता है। वे प्रत्येक मांसपेशियों पर लागू करने के लिए ताकत की मात्रा प्रदान करते हैं, और उनमें से 15 हैं।एनीमेशन सिस्टम के लिए तंत्रिका नेटवर्क आकार

मैं 10 सेकंड के लिए एक साथ 15 नेटवर्क चला रहा हूं, कम से कम ऊर्जा उपयोग की गणना करके अपनी फिटनेस को रेट करता हूं, जिसमें कम से कम ज़ेड और एक्स आंदोलन होता है, और यदि शरीर के अंग बाकी की तुलना में सही y स्थिति में हैं (hips.y> upperleg.y, upperleg.y> lowerleg.y आदि), और फिर उन्हें आनुवांशिक एल्गोरिदम के माध्यम से चला रहा है। मैं 8 छिपी हुई परतों के साथ प्रति छिपी हुई परत के 168 न्यूरॉन्स का एक तंत्रिका नेटवर्क चला रहा था। मैं चरित्र को सीधे खड़े होने की कोशिश कर रहा हूं और बहुत ज्यादा नहीं घूमता हूं। मैंने इसे 3000 पीढ़ियों तक चलाया और मैं भी करीब नहीं आया।

तंत्रिका नेटवर्क और आनुवंशिक एल्गोरिथ्म this tutorial की सी # संस्करण हैं। मैंने क्रॉसओवर विधि को एक बिंदु से मिश्रण करने के लिए बदल दिया।

मेरे पास 84 इनपुट और 15 आउटपुट हैं। मेरा तंत्रिका नेटवर्क कितना बड़ा होना चाहिए?

उत्तर

5

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

हालांकि

, अगर आप इस पर कुछ समय बिताने के लिए जो अधिक या कम एक ही समस्या के साथ सौदों HyperNEAT for Locomotion Control in Modular Robots पर एक नजर है तैयार हैं। वे हाइपरनेट नामक एक बहुत उन्नत जीए तकनीक का उपयोग करते हैं और कुछ अच्छे परिणामों की रिपोर्ट करते हैं।

HyperNEAT NEAT (Neuroevolution of augmenting topologies) के शीर्ष पर बनाया गया है। NEAT न केवल एएनएन के वजन, बल्कि उनकी संरचना विकसित करने में सक्षम है। यह सरल नेटवर्क से शुरू होता है और धीरे-धीरे उन्हें अधिक जटिल बनाता है जब तक कि आप अपने लक्ष्य तक पहुंच न जाएं (या छोड़ दें)।

फिर एनईएटी थोड़ा सक्रिय हो गया है, विभिन्न सक्रियण कार्यों का उपयोग करने में सक्षम होने के लिए। यह इसे विभिन्न प्रकार के "पैटर्न" का उत्पादन करने में सक्षम करेगा जब यह बिंदुओं के सेट पर लागू होता है उदा।एक समन्वय प्रणाली में। पैटर्न में कुछ रोचक लक्षण हो सकते हैं, जैसे कि पूर्ण/अपूर्ण समरूपता या वे आवधिक हो सकते हैं। इस संस्करण को Compositional pattern-producing network या सीपीपीएन कहा जाता है। इस तकनीक का एक शानदार अनुप्रयोग PicBreeder है जहां नेटवर्क चित्रों को "ड्रा" करने के लिए उपयोग किया जाता है।

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

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

सब कुछ आपको अपनी जटिल समस्या को हल करने का मौका देगा।

जैसा कि आप देख सकते हैं कि इस तकनीक की विभिन्न परतें हैं, इसलिए इसे स्वयं के लिए कार्यान्वित करना इतना आसान नहीं है। सौभाग्य से इसके कुछ अच्छे कार्यान्वयन हैं, आप उन्हें अन्य 0 दस्तावेज़ों, कागजात और ट्यूटोरियल के साथ, NEAT home page पर पा सकते हैं।

+0

मुझे आपका जवाब पसंद नहीं है, लेकिन यह सच है। फिर भी आगाह करने के लिए धन्यवाद। साहित्य के माध्यम से देखकर मैं उत्सुक हूं। एनईएटी और हाइपरनेट के बीच का अंतर सीपीपीएन है, सही? सीपीपीएन तंत्रिका नेटवर्क बनाने में सक्षम है, लेकिन खुद न्यूरल नेटवर्क नहीं है? या यह एक तंत्रिका नेटवर्क है जो विकसित होता है और फिर अन्य तंत्रिका नेटवर्क बनाता है? बहुत उपयोगी, धन्यवाद। – DrSammyD

+0

NEAT प्रत्यक्ष एन्कोडिंग का उपयोग करता है, जिसका अर्थ है कि प्रत्येक न्यूरॉन और जीनोम में कनेक्शन के लिए आपके पास अंतिम नेटवर्क में समान होगा। HyperNEAT अप्रत्यक्ष एन्कोडिंग का उपयोग करता है। जीनोम एक नेटवर्क है (सीईपीएन एनईएटी के साथ विकसित), जो - जब आप सब्सट्रेट के न्यूरॉन जोड़े (~ दूसरे नेटवर्क के न्यूरॉन्स + कुछ और जानकारी, आमतौर पर 2 डी/3 डी समन्वय प्रणाली में इसके निर्देशांक) पर लागू होते हैं - उत्पादन करेंगे कनेक्शन वजन। मुझे लगता है कि तकनीकी रूप से सीपीपीएन भी एनएन है, लेकिन यह सामान्य सिग्मोइड/तनह की बजाय फैंसी सक्रियण कार्यों का उपयोग कर सकता है। हालांकि, कुछ और मामूली अंतर हो सकते हैं। –

0

क्या आप इसे कम आवश्यकताओं के लिए सरल बना सकते हैं? एक पैर और एक शिन है, और यह है; दो शरीर के अंग, दो कोण, और इसे खड़े हो जाओ।

0

दिलचस्प दृष्टिकोण! मैं थोड़ी देर के लिए कुछ इसी बारे में सोच रहा हूं, आपको यह सुनना अच्छा लगेगा कि आपको क्या परिणाम मिलते हैं।

आप परीक्षण करने के लिए होगा, लेकिन मुझे लगता है कि चाहते हैं यदि आप बहुत अधिक छिपा परतें होती हैं। मुझे लगता है कि यह एप्लिकेशन सबसे ज्यादा एक या दो के साथ काम कर सकता है।

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

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

+0

वास्तव में, मैंने खड़े मीट्रिक से छुटकारा पा लिया, और केवल ऊर्जा को कम करने और एक एक्स जेड स्थान पर रहने पर ध्यान केंद्रित किया। यहां तक ​​कि वह 30 पीढ़ियों से भी कम समय में काम नहीं कर रहा है। – DrSammyD

+0

यह संभव है कि मेरे अनुवांशिक एल्गोरिदम के साथ कुछ गलत हो। – DrSammyD

+0

जिस तरह से मैं फिटनेस की गणना कर रहा था, यह कुछ गलत था। यह कम ऊर्जा के लिए काम करना शुरू कर दिया है और एक एक्स जेड स्थान में रहना शुरू कर दिया है। मैं आपको बताता हूं कि यह खड़े होकर कैसे जाता है। – DrSammyD