वास्तव में आनुवंशिक एल्गोरिदम क्या हैं और वे किस प्रकार की समस्याओं के लिए अच्छे हैं?


16

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

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

क्या आप मुझे एक छोटा स्पष्टीकरण दे सकते हैं, अधिमानतः कुछ प्रकार के व्यावहारिक उदाहरण भी शामिल हैं जो मूल सिद्धांतों को दर्शाता है?

जवाबों:


11

विकासवादी एल्गोरिदम डार्विनियन प्राकृतिक चयन के सिद्धांत के आधार पर अनुकूलन एल्गोरिदम का एक परिवार है । प्राकृतिक चयन के हिस्से के रूप में, किसी दिए गए वातावरण में व्यक्तियों की आबादी होती है जो अस्तित्व और प्रजनन के लिए प्रतिस्पर्धा करते हैं। इन लक्ष्यों को प्राप्त करने के लिए प्रत्येक व्यक्ति की क्षमता बच्चों के लिए उनके अवसर का निर्धारण करती है, दूसरे शब्दों में उनके जीन पर अगली पीढ़ी के व्यक्तियों को पारित करने के लिए, जो आनुवांशिक कारणों से इनको साकार करने में बेहतर प्रदर्शन करने का एक बेहतर मौका होगा। दो उद्देश्य।

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

एक व्यक्ति को एक जीनोटाइप के रूप में कोडित किया जाता है , जिसका कोई भी आकार हो सकता है, जैसे कि ** बिट वेक्टर ( आनुवंशिक एल्गोरिदम ) या वास्तविक (विकास रणनीतियों) का वेक्टर। प्रत्येक जीनोटाइप एक में तब्दील हो जाता फेनोटाइप जब व्यक्ति, यानी आकलन अपनी फिटनेस गणना की जाती है जब। कुछ मामलों में, फेनोटाइप जीनोटाइप के समान है: इसे प्रत्यक्ष कोडिंग कहा जाता है। अन्यथा, कोडिंग को अप्रत्यक्ष कहा जाता है। उदाहरण के लिए, मान लें कि आप अपनी लंबाई, ऊँचाई और चौड़ाई द्वारा परिभाषित आयताकार समानांतर चतुर्भुज के आकार का अनुकूलन करना चाहते हैं। उदाहरण को सरल बनाने के लिए, मान लें कि ये तीन मात्राएं 0 और 15. के बीच पूर्णांक हैं। फिर हम उनमें से प्रत्येक का वर्णन 4-बिट बाइनरी नंबर का उपयोग करके कर सकते हैं। संभावित समाधान का एक उदाहरण जीनोटाइप 0001 0111 01010 हो सकता है। संबंधित फेनोटाइप लंबाई 1, ऊंचाई 7 और चौड़ाई 10 का एक समानांतर चतुर्भुज है।

पुरानी से नई पीढ़ी में परिवर्तन के दौरान परिवर्तन संचालक कहलाते हैं , जिनका उद्देश्य व्यक्तियों में हेरफेर करना है। विभिन्न प्रकार के दो अलग-अलग प्रकार के ऑपरेटर हैं:

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

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

यहाँ छवि विवरण दर्ज करें


यहाँ इस पर जवाब देने के लिए धन्यवाद! हालाँकि मुझे व्यक्तिगत रूप से लगता है कि यह एआई एसई के लिए एक आदर्श प्रश्न है, क्योंकि यह बुनियादी और "उच्च-स्तरीय" है, इस विषय पर अधिक उन्नत प्रश्नों के लिए ओपी और पाठकों को क्रास वैलिडेट पर निर्देशित करने में संकोच नहीं करना चाहिए, जो उस स्टैक के लिए उपयुक्त हैं। ।
DukeZhou

8

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

इसके बाद यह देखने की कोशिश की जाती है कि दिए गए फिटनेस फंक्शन का उपयोग कर ये समस्या कितनी अच्छी तरह से हल हो जाती है । नई आबादी उत्पन्न करने के लिए सर्वोत्तम फिटनेस मूल्य के साथ समाधान का उपयोग किया जाता है। यह प्रयास किए गए समाधान (उत्परिवर्तन) में छोटे बदलाव करके या मौजूदा प्रयास समाधान (क्रॉसओवर) को जोड़कर किया जा सकता है।

यह विचार है कि, समय के साथ, एक हल किया गया समाधान निकलता है जिसमें समस्या को हल करने के लिए पर्याप्त उच्च फिटनेस मूल्य होता है।

इसके लिए प्रेरणा विकासवाद के सिद्धांत से मिली; सबसे अच्छे समाधान बचते हैं और बचते हैं।

उदाहरण 1

मान लीजिए आप लकड़ी के एक टुकड़े से कई आकृतियों को काटने के लिए सबसे कुशल तरीके की तलाश कर रहे थे। आप यथासंभव छोटी लकड़ी बर्बाद करना चाहते हैं।

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

उदाहरण 2

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


हालांकि, समाधान से क्या मतलब है ? क्या आप मुझे एक विशिष्ट समस्या के साथ एक व्यावहारिक उदाहरण दे सकते हैं, इसलिए मैं बेहतर कल्पना कर सकता हूं कि यह कैसा दिख सकता है?
लंचर ऑर्क

@InquisitiveLurker मैंने उदाहरण जोड़े हैं। मुझे पता है अगर वे पर्याप्त स्पष्ट नहीं हैं; मुझे अपना उत्तर अपडेट करने में खुशी होगी।
एसएल बर्थ -

6

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

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

यहां मैंने एक प्रदर्शन किया है, जो बुरी तरह से कोडित होने के बावजूद आपको समझने में मदद कर सकता है। http://khrabanas.github.io/projects/evo/evo.html लक्ष्यों के साथ विकसित बटन और गड़बड़ मारो।

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

आनुवंशिक एल्गोरिथ्म एक "न्यूरल नेटवर्क" बनाने की कोशिश कर रहा है, जो आरजीबी में लेने से आउटपुट कलर देगा। सबसे पहले यह एक यादृच्छिक आबादी उत्पन्न करता है। यह तब आबादी से 3 यादृच्छिक सदस्यों को लेकर, सबसे कम फिटनेस वाले व्यक्ति का चयन करके उसे आबादी से हटा देता है। फिटनेस शीर्ष गोल वर्ग में अंतर के बराबर है + नीचे गोल वर्ग में अंतर। यह फिर शेष दो को एक साथ प्रजनन करता है और बच्चे को मृत सदस्य के रूप में आबादी में उसी स्थान पर जोड़ता है। जब संभोग होता है, तो एक मौका होता है कि एक उत्परिवर्तन होगा। यह उत्परिवर्तन बेतरतीब ढंग से मूल्यों में से एक को बदल देगा।

एक साइड नोट के रूप में, इसे कैसे सेट किया गया है, इसके लिए कई मामलों में पूरी तरह से सही होना असंभव है, हालांकि यह बिना किसी स्पष्टता के पहुंच जाएगा।


6

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

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

अच्छा:

  • क्रॉसओवर फ़ंक्शंस को परिभाषित करना आसान और स्वाभाविक है : जब कुछ प्रकार के डेटा के साथ काम करते हैं, तो क्रॉसओवर / म्यूटेशन फ़ंक्शंस को परिभाषित करना आसान हो सकता है। उदाहरण के लिए तार (जैसे। डीएनए या जीन अनुक्रम) एक नया एक प्राप्त करने के लिए दो उम्मीदवार तार splicing द्वारा आसानी से उत्परिवर्तित किया जा सकता है (यही कारण है कि प्रकृति आनुवंशिक एल्गोरिदम का उपयोग करती है!)। पेड़ों (जैसे कि फ़ैलोजेनेटिक पेड़ या पार्स पेड़) को भी एक पेड़ की एक शाखा की जगह दूसरे से एक शाखा के द्वारा प्रतिस्थापित किया जा सकता है। आकार (हवाई जहाज के पंख या नाव के आकार की तरह) आसानी से आकृति पर एक ग्रिड ड्राइंग और एक बच्चे को प्राप्त करने के लिए माता-पिता से विभिन्न ग्रिड वर्गों के संयोजन द्वारा उत्परिवर्तित किया जा सकता है। आमतौर पर इसका मतलब है कि आपकी समस्या अलग-अलग हिस्सों से बनी है और अलग-अलग समाधानों से भागों को एक साथ रखना एक वैध उम्मीदवार समाधान है।
    • इसका मतलब यह है कि यदि आपकी समस्या को एक सदिश स्थान में परिभाषित किया गया है जहां निर्देशांक का कोई विशेष अर्थ नहीं है, तो GA एक अच्छा विकल्प नहीं है। यदि आपकी समस्या को GA के रूप में तैयार करना कठिन है, तो यह इसके लायक नहीं है।
  • ब्लैक बॉक्स मूल्यांकन : यदि एक उम्मीदवार के लिए, आपके फिटनेस फ़ंक्शन का मूल्यांकन कंप्यूटर के बाहर किया जाता है, तो GA एक अच्छा विचार है। उदाहरण के लिए, यदि आप एक वायु सुरंग में एक पंख के आकार का परीक्षण कर रहे हैं, तो आनुवंशिक एल्गोरिदम आपको कोशिश करने के लिए अच्छे उम्मीदवार आकार बनाने में मदद करेंगे।
    • अपवाद: सिमुलेशन । यदि आपका फिटनेस फ़ंक्शन माप रहा है कि एक नोजल डिज़ाइन कितनी अच्छी तरह से प्रदर्शन करता है और प्रत्येक नोजल आकार के लिए द्रव की गतिशीलता का अनुकरण करने की आवश्यकता होती है, तो जीए आपके लिए अच्छी तरह से काम कर सकता है। वे तब भी काम कर सकते हैं जब आप समय के माध्यम से एक भौतिक प्रणाली का अनुकरण कर रहे हैं और इस बात में रुचि रखते हैं कि आपका डिज़ाइन ऑपरेशन के दौरान कितना अच्छा प्रदर्शन करता है। मॉडलिंग लोकोमोटिव पैटर्न । हालाँकि, विधियाँ जो आंशिक अंतर समीकरणों का उपयोग करती हैं, क्योंकि बाधाएँ साहित्य में विकसित की जा रही हैं, उदा। पीडीई विवश अनुकूलन , इसलिए यह भविष्य में बदल सकता है।

उचित नहीं:

  • आप अपने फ़ंक्शन के लिए एक ग्रेडिएंट की गणना कर सकते हैं : यदि आपके पास अपने फ़ंक्शन के ग्रेडिएंट तक पहुंच है, तो आप ग्रेडिएंट डीसेंट कर सकते हैं, जो सामान्य रूप से GA की तुलना में अधिक कुशल है। धीरे-धीरे वंशज स्थानीय minima (GA के रूप में) के साथ समस्या हो सकती है लेकिन इसे कम करने के लिए कई तरीकों का अध्ययन किया गया है।
  • आप फिटनेस फ़ंक्शन को बंद रूप में जानते हैं : फिर, आप संभवतः ढाल की गणना कर सकते हैं। कई भाषाओं में स्वचालित भेदभाव का समर्थन करने वाले पुस्तकालय हैं , इसलिए आपको इसे मैन्युअल रूप से करने की आवश्यकता नहीं है। यदि आपका फ़ंक्शन अलग नहीं है, तो आप सबग्रेडिएंट डिसेंट का उपयोग कर सकते हैं
  • आपकी अनुकूलन समस्या एक ज्ञात रूप की है, जैसे एक रैखिक कार्यक्रम या एक द्विघात कार्यक्रम : GA (और सामान्य रूप से ब्लैक बॉक्स ऑप्टिमाइज़ेशन विधि) उन उम्मीदवारों की संख्या के मामले में बहुत अक्षम हैं, जिन्हें उनका मूल्यांकन करने की आवश्यकता है, और यदि संभव हो तो सबसे अच्छा टाला जाता है।
  • आपका समाधान स्थान छोटा है : यदि आप अपने खोज स्थान को कुशलता से ग्रिड कर सकते हैं, तो आप गारंटी दे सकते हैं कि आपको सबसे अच्छा समाधान मिल गया है, और समाधान स्थान के समोच्च भूखंड बना सकते हैं यह देखने के लिए कि क्या कोई क्षेत्र है जिसे आपको आगे तलाशने की आवश्यकता है।

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


सीएमए-ईएस उन समस्याओं के लिए अच्छा है जिनमें समाधान को वास्तविक मूल्यवान वैक्टर के रूप में दर्शाया जा सकता है।
नीत्शेचियन

5

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

यहाँ समस्याओं की कुछ विशेषताएँ हैं जो जेनेटिक एल्गोरिदम (और वास्तव में सामान्य रूप से मेटाह्यूरिस्टिक्स ) के लिए अच्छी हैं:

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

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

जीए की प्रयोज्यता पर अधिक विवरण एक प्रसिद्ध प्रारंभिक पेपर में दिया गया है "आनुवंशिक एल्गोरिथम के लिए एक समस्या क्या मुश्किल है?"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.