लिस्प का उपयोग AI के लिए क्यों किया जाता है? [बन्द है]


184

मैं अपने क्षितिज का विस्तार करने के लिए लिस्प सीख रहा हूं क्योंकि मैंने सुना है कि इसका उपयोग AI प्रोग्रामिंग में किया जाता है। कुछ खोज करने के बाद, मुझे अभी तक एआई उदाहरण या भाषा में कुछ भी खोजना है जो इसे इसके प्रति अधिक झुकाव देगा।

क्या पूर्व में लिस्प का उपयोग किया गया था क्योंकि यह उपलब्ध था, या क्या ऐसा कुछ है जो मुझे याद आ रहा है?


5
> ... कृपया नहीं मानें कि लिस्प केवल एनीमेशन और ग्राफिक्स के लिए उपयोगी है,> एआई, बायोइनफॉरमैटिक्स, बी 2 बी और ई-कॉमर्स, डाटा माइनिंग, ईडीए / सेमीकंडक्टर> एप्लिकेशन, विशेषज्ञ प्रणाली, वित्त, बुद्धिमान एजेंट, ज्ञान> प्रबंधन, मैकेनिकल सीएडी , मॉडलिंग और सिमुलेशन, प्राकृतिक भाषा,> अनुकूलन, अनुसंधान, जोखिम विश्लेषण, निर्धारण, दूरसंचार, और वेब> केवल इसलिए लेखन कि वे केवल>> सूची के लिए हुए हैं।
एवी

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

मैं इस सवाल को फिर से बताऊंगा कि "कठिन एअर इंडिया के लिए भाषा की कौन-सी विशेषताएं आवश्यक हैं?" यह एक मान्य और उपयोगी प्रश्न है, और इसका परिणाम यह होगा कि केवल लिस्प फोर्थ और असेंबलर के पास ही एआई करने के लिए क्या है।
अल्बर्ट वैन डेर होर्स्ट

जवाबों:


125

लिस्प WAS 1980 के दशक के अंत तक एआई में इस्तेमाल किया गया था। हालांकि, 80 के दशक में, कॉमन लिस्प "एआई भाषा" के रूप में व्यापारिक दुनिया की देखरेख में था; बैकलैश ने कुछ वर्षों के लिए अधिकांश AI प्रोग्रामर को C ++ के लिए मजबूर किया। इन दिनों, प्रोटोटाइप आमतौर पर एक युवा गतिशील भाषा (पर्ल, पायथन, रूबी, आदि) में लिखे जाते हैं और सफल अनुसंधान के कार्यान्वयन आमतौर पर सी या सी ++ (कभी-कभी जावा) में होते हैं।

यदि आप 70 के बारे में उत्सुक हैं ... ठीक है, मैं वहाँ नहीं था। लेकिन मुझे लगता है कि लिस्प एआई अनुसंधान में तीन कारणों (महत्व के क्रम में) में सफल रहा:

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

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

अस्वीकरण: मैं कम्प्यूटेशनल भाषा विज्ञान में एक स्नातक छात्र हूं। मुझे पता है कि अन्य क्षेत्रों की तुलना में प्राकृतिक भाषा के उपक्षेत्र बहुत बेहतर प्रसंस्करण करते हैं। शायद लिस्प अन्य उपक्षेत्रों में अधिक उपयोग किया जाता है।


33
लिस्प निश्चित रूप से अभी भी जीवित है और मशीन लर्निंग / आईएलपी दुनिया में लात मार रहा है
हसनहि

13
मेरे पास AI में पढ़ाया जाने वाला एक अंडरग्रेजुएट कोर्स था। I में नॉर्विग की किताब से पढ़ाया जाने वाला AI का स्नातक स्तर का कोर्स था। सी में पुस्तक एआई एल्गोरिदम और संरचनाओं पर केंद्रित है। नॉरविग की पुस्तक में ऐसा महसूस किया गया: "आइए इतिहास के बारे में पढ़ते हुए आइए LISP सीखें।" मेरी राय में, एक बिल्कुल समय-व्यर्थ।
सैन जैसिंटो

7
एक कारण सभी को याद आ रहा है कि जॉन मैक्कार्थी ने लिस्प लिखा और एक बहुत ही प्रभावशाली कंप्यूटर वैज्ञानिक थे, विशेष रूप से एआई के क्षेत्र में। स्वाभाविक रूप से, लिस्प में उनके बहुत से काम को कार्यान्वित किया गया था, और इस तरह लिस्प ने एक मुकाम हासिल किया।
18 दिसंबर को cha'site

2
आम लिस्प का एआई भाषा होने का कभी इरादा नहीं था , इसे उद्योग में उपयोग करने के लिए बनाया गया था। अनुसंधान के लिए, आमतौर पर योजना का उपयोग किया जाता है। और कभी नहीं, कभी भी किसी भाषा को उसकी उम्र से आंकें - यह सिर्फ ठंडक के लिए आनुपातिक नहीं है, और इसके विपरीत। सी पुरानी है, लेकिन शांत है, इसलिए लिस्प की उम्र क्यों मायने रखती है?
लुका रामिशविल्ली

1
मुझे यह सटीक नहीं लगता कि 1980 के अंत तक लिस WAS एआई के लिए इस्तेमाल किया गया था । वर्ष 2016 में एमआईटी एआई के क्षेत्र में एक काफी प्रसिद्ध संस्थान बना हुआ है। एमआईटी के अंडरग्रेजुएट रोबोटिक्स पाठ्यक्रम के लिए अनुशंसित पाठ्यपुस्तक है Artificial Intelligence by Patrick Henry Winston। दूसरे संस्करण के द्वारा उस पुस्तक के प्रोग्रामिंग चैप्टर को अपनी, सिंक्रोनाइज़्ड, बुक - में ब्रांच किया गया Lisp। जैसा कि नाम से ही स्पष्ट है कि प्रोग्रामिंग पूरी तरह से है Lisppeople.csail.mit.edu/phw/Books/LISPBACK.HTML
Hack-R

61

लिस्प का उपयोग एआई के लिए किया जाता है क्योंकि यह सॉफ्टवेयर के कार्यान्वयन का समर्थन करता है जो प्रतीकों के साथ गणना करता है। प्रतीक, प्रतीकात्मक अभिव्यक्ति और उन के साथ कंप्यूटिंग लिस्प के मूल में है।

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

यह कोई आश्चर्य की बात नहीं है कि इन डोमेन में कई प्रसिद्ध एआई एप्लिकेशन लिस्प में लिखे गए थे:

  • Macsyma पहले बड़े कंप्यूटर बीजगणित प्रणाली के रूप में।
  • एक व्यापक रूप से इस्तेमाल प्रमेय कहावत के रूप में ACL2, उदाहरण के लिए AMD द्वारा उपयोग किया जाता है।
  • अमेरिकी सेना द्वारा पहले खाड़ी युद्ध के दौरान उपयोग किए जाने वाले रसद योजनाकार के रूप में DART। यह Lisp आवेदन अकेले उस समय एअर इंडिया अनुसंधान में सभी अमेरिकी निवेश के लिए वापस भुगतान किया है कहा जाता है।
  • SPIKE, हबल स्पेस टेलीस्कोप के लिए नियोजन और शेड्यूलिंग एप्लिकेशन। कई अन्य बड़े दूरबीनों द्वारा भी उपयोग किया जाता है।
  • CYC, सबसे बड़ी सॉफ्टवेयर प्रणालियों में से एक है। मानव सामान्य ज्ञान ज्ञान के क्षेत्र में प्रतिनिधित्व और तर्क।
  • METAL, पहले व्यावसायिक रूप से प्रयुक्त प्राकृतिक भाषा अनुवाद प्रणालियों में से एक है।
  • अमेरिकन एक्सप्रेस 'ऑथराइज़र के सहायक, जो क्रेडिट कार्ड लेनदेन की जाँच करता है।

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

(ध्यान दें कि AI में भी बहुत सारी अन्य सामान्य प्रयोजन की प्रोग्रामिंग भाषाओं का उपयोग किया जाता है। मैंने यह उत्तर देने की कोशिश की है कि विशेष रूप से AI में लिस्प का उपयोग क्यों किया जाता है।)


10
हां, ऐतिहासिक रूप से AI कुछ और की तुलना में प्रतीकात्मक गणना के बारे में अधिक था। 80 के दशक में " एआई सर्दियों " शायद प्रतीकात्मक एआई का एक संकट था - उस समय में उप-प्रतीकात्मक तरीकों (तंत्रिका नेटवर्क, मशीन सीखने और इतने पर) में रुचि का पुनरुत्थान था। न्यूमेरिकल कंप्यूटिंग में लिस्प कार्यान्वयन आमतौर पर काफी कमजोर था। मुझे नहीं पता कि क्या वे इस मोर्चे पर बेहतर हुए हैं।
MaD70

2
@ MaD70: 80 के दशक में AI सर्दियों सामान्य रूप से AI के बारे में था। सेना ने फंडिंग को बहुत रोक दिया और एआई ज्यादातर वाणिज्यिक बाजार में विफल रहा। यहां तक ​​कि तंत्रिका नेटवर्क सामान जो उस समय मौजूद थे। अगर कोई एआई को 'उपन्यास सॉफ्टवेयर डेवलपमेंट मेथड्स' (नियम, तर्क, तंत्रिका नेटवर्क, कचरा संग्रह, ...) का उपयोग करता है - तो वह भी विफल हो जाता है। उनमें से अधिकांश आज भी व्यापक रूप से उपयोग / पसंद नहीं किए जाते हैं
रेनर जोसविग

उस समय और पूर्वव्यापी में मेरी धारणा अलग थी /: मुझे स्पष्ट रूप से रुचि का पुनरुत्थान याद है, दोनों शोध और बाजार में (यहां तक ​​कि समर्पित तंत्रिका प्रोसेसर भी थे), उप-प्रतीकात्मक तरीकों से '80 के दशक की दूसरी छमाही में " 90 के दशक के दशक के अंत में, ओस्ट्रिज्म के दशकों के बाद (मेरा उत्तर देखें, जहां मैं परसेप्ट्रॉन की मिनस्की और पैपर्ट आलोचना के प्रभाव का उल्लेख करता हूं: stackoverflow.com/questions/683124/neural-networks-obirect/… )।
MaD70

1
प्रतीकात्मक AI विफल, IMO, समय के हार्डवेयर के कारण (शक्तिशाली / सस्ते पर्याप्त नहीं) और क्योंकि प्रतीकात्मक बनाम उप-प्रतीकात्मक शिविरों के बीच इस तरह के कठोर विपरीत किसी भी तालमेल को रोकते हैं। राइट "आज भी व्यापक रूप से उपयोग / पसंद किया जाता है": मुझे संदेह है कि एआई (दोनों शिविरों में) में विकसित की गई कुछ तकनीकें एक से अधिक उपयोग कर सकती हैं, जो कि कोई सोच नहीं सकता है (सौभाग्य से, अधिक सौभाग्य से)।
MaD70

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

22

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


क्या आप इसका एक उदाहरण प्रदान या लिंक कर सकते हैं?
डकमास्ट्रो

9
@DuckMaestro: इस सप्ताह लगभग 30 मिनट के मैक्रो काम में, मैंने एसक्यूएल सिलेक्ट का एक एड-हॉक बग्गी संस्करण लागू किया। यह इस तरह से होता है: (क्वेरी सेलेक्ट * फ्रॉम डेटासेट व्हेयर एक्सपेयर)।
पॉल नाथन

लिस्प में एक बीजगणित सॉल्वर एम्बेडिंग youtube.com/ । लिस्प में एक सर्किट भाषा में एंबेडिंग youtube.com/ / ... लिस्प में
लिस्पिंग

youtube.com/watch?v=SLcZXbyGC3E <- यह एक अच्छा है
aoeu256

12

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

इसलिए स्व-निरीक्षण, स्व-संशोधित कोड आसानी से लिखा जा सकता है।


10
ऐसा नहीं है क्योंकि यह कार्यात्मक है। प्रोलॉग के पास समान संपत्ति है - सब कुछ एक "शब्द" है और शब्द डेटा के साथ-साथ कोड भी हैं। (प्रोलॉग एक लॉजिक प्रोग्रामिंग लैंग्वेज है और AI के लिए भी बहुत प्रयोग किया जाता है)
ह्यूग एलन

इसके लिए फैंसी शब्द को होमियोसोनिकिटी कहा जाता है - en.wikipedia.org/wiki/Homoiconicity
मोर्टन जेन्सेन

9

एक संभावित उत्तर यह है कि एआई बहुत कठिन समस्याओं का एक संग्रह है, और लिस्प केवल एआई नहीं, बल्कि कठिन समस्याओं को हल करने के लिए एक अच्छी भाषा है।

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


7

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

वैसे भी, मुझे लगता है कि यह इसलिए है क्योंकि ज्यादातर AI कोड अनिवार्य रूप से शोध कोड था। लिस्प, अन्वेषणात्मक प्रोग्रामिंग के लिए एक बड़ी भाषा है, मुश्किल एल्गोरिदम को लागू करने के लिए, आत्म-संशोधन और अक्सर संशोधित कोड के लिए। दूसरे शब्दों में, अनुसंधान कोड के लिए।

मैं अपने कुछ शोध कोड (गणित, सिग्नल प्रोसेसिंग) के लिए आज लिस्प का उपयोग करता हूं क्योंकि यह अधिकांश भाषाओं की तुलना में अधिक लचीला और शक्तिशाली है, जबकि अधिकांश भाषाओं की तुलना में अधिक कुशल कोड उत्पन्न करता है। मैं आमतौर पर c ++ गति के +/- 2 के एक कारक के भीतर प्रदर्शन प्राप्त कर सकता हूं, लेकिन मैं चीजों को बहुत तेजी से लागू कर सकता हूं, और जटिलता से निपट सकता हूं जो मुझे c ++, java, c # का उपयोग करने की तुलना में अधिक समय लगेगा।

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


6

मुझे लगता है कि एक बड़ा कारण एक बुनियादी डेटा संरचना के रूप में सूचियों का लचीलापन था।

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


4

मुझे लगता है कि आप सही हैं: लिस्प चीजों को हैक करने के लिए एक आसान उपकरण था। ऐसा इसलिए है क्योंकि यह प्रोग्राम और डेटा के बीच बहुत अंतर नहीं करता है। इसने हैकर्स को डेटा की तरह ही कार्यों में बहुत आसानी से हेरफेर करने की अनुमति दी।

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

विचार करने के लिए एक और बात मौजूदा पुस्तकालय / उपकरण / भाषा से संबंधित है। मैं अजगर पुस्तकालयों के साथ लिस्प पुस्तकालयों की तुलना करने की स्थिति में नहीं हूं, लेकिन मुझे लगता है कि पुस्तकालय और खुले स्रोत पहले की तुलना में बहुत अधिक मायने रखते हैं।

यह उत्तर लिस्प और अजगर के बीच निम्नलिखित तुलना से प्रेरित था: http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html


2
मुझे व्यक्तिगत रूप से अधिकांश भाषाओं की तुलना में लिस्प पढ़ने में आसान लगता है, और मैंने इसे केवल कुछ सप्ताह पहले सीखा। पाइथन ज्यादातर भाषाओं की तुलना में विशेष रूप से साफ है, हां, लेकिन अगर आप लिस्प की तुलना सी ++ जैसी किसी चीज से करते हैं तो यह बहुत साफ है और पढ़ने में आसान है। मेरे अनुभव में वैसे भी।
ज़्यूसोफलाइटिंग 125

4

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

यह मुझे विश्वविद्यालय में एआई पाठ्यक्रम के दौरान बताया गया था जहां हमने लिस्प का अध्ययन किया था।


1
लिस्प में मैक्रोज़ किसी भी चीज़ की तुलना में अधिक शक्तिशाली हैं, आपको लिस्प कोड की केवल 50 लाइनों में ओओपी लागू करने देता है और आरईपीएल आपको अपने प्रोग्राम को संपादित करने देता है जबकि अभी भी चल रहा है ... केवल लिस्प अपने स्वयं के सोर्स कोड को आसानी से संपादित कर सकता है ...
aoeu256

3

एक और निंदक जवाब हो सकता है "क्योंकि यह 1980 के दशक में जापान और अमेरिका के बीच एक राजनीतिक एआई युद्ध हार गया था"। एक मजेदार ब्लॉग पोस्ट है जो प्रोलॉग पर पांचवीं-पीढ़ी के कंप्यूटर सिस्टम के प्रभाव के बारे में अनुमान लगाता है

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