एआईएस के लिए लिस्प इतनी अच्छी भाषा क्यों है?


30

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

जवाबों:


30

सबसे पहले, मुझे लगता है कि यह है कि आप मतलब कॉमन लिस्प (जो एक मानक भाषा विनिर्देश है, इसका देख HyperSpec ) (ए ला कुशल कार्यान्वयन के साथ SBCL )। लेकिन योजना के कुछ हालिया कार्यान्वयन प्रासंगिक भी हो सकते हैं ( बिगलो या चिकन / योजना जैसे अच्छे कार्यान्वयन के साथ )। कॉमन लिस्प और स्कीम (और यहां तक ​​कि क्लोजर ) दोनों एक ही लिस्प परिवार से हैं। और एक स्क्रिप्टिंग भाषा के रूप में जो बड़े डेटा या मशीन सीखने के अनुप्रयोगों को चलाती है , गुइल पायथन के लिए एक उपयोगी प्रतिस्थापन हो सकता है और एक लिस्पेक्ट कीट भी है। BTW, मैं SICP पढ़ने की सलाह देता हूं, योजना का उपयोग करके प्रोग्रामिंग के लिए एक उत्कृष्ट परिचय।

फिर, कॉमन लिस्प (और लिस्प की अन्य बोलियाँ) प्रतीकात्मक एआई के लिए बहुत अच्छा है। हालांकि, कई हालिया मशीन लर्निंग लाइब्रेरी को अधिक मुख्यधारा की भाषाओं में कोडित किया जाता है , उदाहरण के लिए TensorFlow को C ++ और Pyroon में कोडित किया गया है। डीप लर्निंग लाइब्रेरी को ज्यादातर C ++ या Python या C (और कभी-कभी GPU कंप्यूटिंग भागों के लिए OpenCL या Cuda का उपयोग करके ) कोडित किया जाता है ।

सामान्य लिस्प प्रतीकात्मक कृत्रिम बुद्धिमत्ता के लिए महान है क्योंकि:

  • इसके बहुत अच्छे कार्यान्वयन हैं (उदाहरण के लिए SBCL , जो REPL को दिए गए प्रत्येक एक्सप्रेशन को मशीन कोड के लिए संकलित करता है )
  • यह होम्योनिक है , इसलिए डेटा के रूप में कार्यक्रमों से निपटना आसान है, विशेष रूप से [उप] कार्यक्रमों को उत्पन्न करना आसान है, जो मेटा-प्रोग्रामिंग तकनीकों का उपयोग करता है।
  • इसमें इंटरेक्टिव प्रोग्रामिंग को आसान बनाने के लिए रीड-एवल-प्रिंट लूप है
  • यह एक बहुत शक्तिशाली मैक्रो मशीनरी प्रदान करता है (अनिवार्य रूप से, आप अपनी समस्या के लिए अपने स्वयं के डोमेन विशिष्ट उप-भाषा को परिभाषित करते हैं), सी जैसी अन्य भाषाओं की तुलना में अधिक शक्तिशाली।
  • यह एक कचरा संग्राहक को जमा करता है (यहां तक ​​कि कोड भी कचरा एकत्र किया जा सकता है)
  • यह कई कंटेनर सार डेटा प्रकार प्रदान करता है , और आसानी से प्रतीकों को संभाल सकता है।
  • आप दोनों उच्च-स्तरीय (डायनामिक रूप से टाइप किए गए) और निम्न-स्तर (अधिक या कम प्रारंभिक रूप से टाइप किए गए) कोड को उपयुक्त एनोटेशन के द्वारा कोड कर सकते हैं।

हालांकि अधिकांश मशीन लर्निंग और न्यूरल नेटवर्क लाइब्रेरी सीएल में कोडित नहीं हैं। ध्यान दें कि प्रतीकात्मक कृत्रिम बुद्धिमत्ता क्षेत्र में न तो तंत्रिका नेटवर्क और न ही गहन शिक्षा है। यह प्रश्न भी देखें ।

Eurisko या CyC जैसे कई प्रतीकात्मक AI सिस्टम को CL (वास्तव में, CL के ऊपर निर्मित कुछ DSL में) में विकसित किया गया है।

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


1
मैं यहां जोड़ना चाहता हूं, कि टेंसरफ़्लो और थीनो कम्प्यूटेशनल ग्राफ़ पर आधारित हैं, जो वास्तव में प्रतीकात्मक प्रोग्रामिंग है, लेकिन अनिवार्य भाषा के भीतर।
मैक्सिम

@ बैसिल: कृपया सामान्य एलआईएसपी ट्यूटोरियल या संदर्भ
वेद प्रकाश

@VedPrakash: मैं आपसे ईमेल द्वारा संपर्क करना चाहूंगा। मेरा है basile@starynkevitch.net; मैं ट्विटर का उपयोग करने के लिए बहुत पुराना हूं
बेसिल स्ट्राइनेवविच

15

डेविड Nolen (करने के लिए योगदान Clojure और ClojureScript ; कोर तर्क miniKanren के एक बंदरगाह के निर्माता) एक बात कहा जाता है में लिस्प बहुत शक्तिशाली रूप में कहा है कि उनके दिन लिस्प में वापस दशकों अन्य प्रोग्रामिंग भाषाओं से आगे थी। कर रहे हैं कारणों की संख्या क्यों भाषा यह के नाम बनाए रखने के लिए सक्षम नहीं था।

यह लेख कुछ प्रमुख बिंदुओं पर प्रकाश डालता है कि क्यों एलआईएसपी एआई के लिए अच्छा है

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

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


4

AI एक विस्तृत क्षेत्र है जो मशीन लर्निंग, डीप लर्निंग, न्यूरल नेटवर्क, आदि से कहीं आगे जाता है। इनमें से कुछ क्षेत्रों में, प्रोग्रामिंग भाषा बिल्कुल भी मायने नहीं रखती (गति के मुद्दों को छोड़कर), इसलिए LISP निश्चित रूप से एक विषय नहीं होगा ।

उदाहरण के लिए, खोज या AI नियोजन में, C ++ और Java जैसी मानक भाषाएं अक्सर पहली पसंद होती हैं, क्योंकि वे तेज़ होती हैं (विशेष रूप से C ++) और क्योंकि कई सॉफ्टवेयर परियोजनाएँ जैसे कि प्लानिंग सिस्टम खुला स्रोत हैं, इसलिए एक मानक भाषा का उपयोग करना महत्वपूर्ण है ( या कम से कम वार के मामले में कोई प्रतिक्रिया या एक्सटेंशन की सराहना करता है)। मुझे केवल एक ही योजनाकार के बारे में पता है जो LISP में लिखा गया है। एआई के इस क्षेत्र में प्रोग्रामिंग भाषा की पसंद की भूमिका के बारे में कुछ आभास देने के लिए, मैं कुछ सबसे प्रसिद्ध और सबसे महत्वपूर्ण योजनाकारों की सूची दूंगा:

फास्ट-डाउनवर्ड:
विवरण: संभवतः सबसे प्रसिद्ध शास्त्रीय नियोजन प्रणाली
URL: http://www.fast-downward.org/
भाषा: C ++, भागों (प्रीप्रोसेसिंग) पायथन में हैं

FF:
विवरण: साथ में फास्ट-डाउनवर्ड के साथ शास्त्रीय नियोजन प्रणाली को सभी जानते हैं
URL: https://fai.cs.uni-saarland.de/hoffmann/ff.html
भाषा: C

VHPOP:
वर्णन: सबसे प्रसिद्ध आंशिक-क्रम कारण लिंक (POCL) नियोजन सिस्टम
URL में से एक: http://www.tempastic.org/vhpop/
भाषा: C ++

SHOP और SHOP2:
विवरण: सबसे प्रसिद्ध HTN (पदानुक्रमित) नियोजन प्रणाली
URL: https://www.cs.umd.edu/projects/shop/
भाषा: SHOP और SHOP2 के दो संस्करण हैं। मूल संस्करण LISP में लिखे गए हैं। नए संस्करण (जिसे JSHOP और JSHOP2 कहा जाता है) जावा में लिखे गए हैं। पाइशोप एक और SHOP वैरिएंट है जिसे पायथन में लिखा गया है।

पांडा:
विवरण: एक और प्रसिद्ध HTN (और हाइब्रिड) नियोजन प्रणाली
URL: http://www.uni-ulm.de/en/in/ki/research/software/panda/panda-planning-system/
भाषा: वहाँ योजनाकार के विभिन्न संस्करण हैं: PANDA1 और PANDA2 जावा में लिखे गए हैं, PANDA3 मुख्य रूप से जावा में लिखा है, जिसमें कुछ भाग स्काला में हैं।

ये मेरे दिमाग में आने वाली कुछ सबसे प्रसिद्ध योजना प्रणालियाँ थीं। अधिक हाल के लोगों को अंतर्राष्ट्रीय योजना प्रतियोगिताओं (आईपीसी, http://www.icaps-conference.org/index.php/Main/Competitions ) से पुनर्प्राप्त किया जा सकता है , जो हर दो साल में होते हैं। प्रतिस्पर्धी योजनाकारों के कोड खुले स्रोत (कुछ वर्षों के लिए) प्रकाशित होते हैं।

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