इंडक्टिव प्रोग्रामिंग: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Programming paradigms}} | {{Programming paradigms}} | ||
'''प्रेरक प्रोग्रामिंग (आईपी)''' [[स्वचालित प्रोग्रामिंग]] का | '''प्रेरक प्रोग्रामिंग (आईपी)''' [[स्वचालित प्रोग्रामिंग]] का विशेष क्षेत्र है, जो कृत्रिम बुद्धिमत्ता और [[कंप्यूटर प्रोग्रामिंग]] से अनुसंधान को कवर करता है, जो आम तौर पर [[घोषणात्मक प्रोग्रामिंग]] ([[तर्क प्रोग्रामिंग]] या [[कार्यात्मक प्रोग्रामिंग]]) की [[ यंत्र अधिगम ]] को संबोधित करता है और अक्सर इनपुट / आउटपुट जैसे अधूरे विनिर्देशों से [[ प्रत्यावर्तन ]] प्रोग्राम को संबोधित करता है। उदाहरण या बाधाएँ. | ||
प्रयुक्त प्रोग्रामिंग भाषा के आधार पर, प्रेरक प्रोग्रामिंग कई प्रकार की होती है। प्रेरक कार्यात्मक प्रोग्रामिंग, जो [[लिस्प (प्रोग्रामिंग भाषा)]] या [[हास्केल (प्रोग्रामिंग भाषा)]] जैसी कार्यात्मक प्रोग्रामिंग भाषाओं का उपयोग करती है, और विशेष रूप से [[आगमनात्मक तर्क प्रोग्रामिंग|प्रेरक तर्क प्रोग्रामिंग]], जो [[प्रोलॉग]] जैसी तर्क प्रोग्रामिंग भाषाओं और [[विवरण तर्क]] जैसे अन्य तार्किक प्रतिनिधित्व का उपयोग करती है, अधिक रही है प्रमुख, लेकिन अन्य (प्रोग्रामिंग) भाषा प्रतिमानों का भी उपयोग किया गया है, जैसे [[बाधा प्रोग्रामिंग]] या [[संभाव्य प्रोग्रामिंग भाषा]]। | प्रयुक्त प्रोग्रामिंग भाषा के आधार पर, प्रेरक प्रोग्रामिंग कई प्रकार की होती है। प्रेरक कार्यात्मक प्रोग्रामिंग, जो [[लिस्प (प्रोग्रामिंग भाषा)]] या [[हास्केल (प्रोग्रामिंग भाषा)]] जैसी कार्यात्मक प्रोग्रामिंग भाषाओं का उपयोग करती है, और विशेष रूप से [[आगमनात्मक तर्क प्रोग्रामिंग|प्रेरक तर्क प्रोग्रामिंग]], जो [[प्रोलॉग]] जैसी तर्क प्रोग्रामिंग भाषाओं और [[विवरण तर्क]] जैसे अन्य तार्किक प्रतिनिधित्व का उपयोग करती है, अधिक रही है प्रमुख, लेकिन अन्य (प्रोग्रामिंग) भाषा प्रतिमानों का भी उपयोग किया गया है, जैसे [[बाधा प्रोग्रामिंग]] या [[संभाव्य प्रोग्रामिंग भाषा]]। | ||
Line 6: | Line 6: | ||
== परिभाषा == | == परिभाषा == | ||
प्रेरक प्रोग्रामिंग में वे सभी दृष्टिकोण शामिल होते हैं जो अधूरे (औपचारिक विनिर्देश) विनिर्देशों से सीखने के कार्यक्रमों या एल्गोरिदम से संबंधित हैं। | प्रेरक प्रोग्रामिंग में वे सभी दृष्टिकोण शामिल होते हैं जो अधूरे (औपचारिक विनिर्देश) विनिर्देशों से सीखने के कार्यक्रमों या एल्गोरिदम से संबंधित हैं। आईपी सिस्टम में संभावित इनपुट प्रशिक्षण इनपुट और संबंधित आउटपुट या आउटपुट मूल्यांकन फ़ंक्शन का सेट है, जो इच्छित प्रोग्राम के वांछित व्यवहार, ट्रेसिंग (सॉफ़्टवेयर) या एक्शन अनुक्रमों का वर्णन करता है जो विशिष्ट आउटपुट, [[बाधा (गणित)]] की गणना करने की प्रक्रिया का वर्णन करता है। प्रोग्राम को उसकी समय दक्षता या उसकी जटिलता के संबंध में प्रेरित करने के लिए, विभिन्न प्रकार के पृष्ठभूमि ज्ञान जैसे मानक [[डेटा प्रकार]], उपयोग किए जाने वाले पूर्वनिर्धारित फ़ंक्शन, प्रोग्राम योजनाएं या इच्छित प्रोग्राम के डेटा प्रवाह का वर्णन करने वाले टेम्पलेट, खोज के मार्गदर्शन के लिए अनुमान समाधान या अन्य पूर्वाग्रह. | ||
आईपी सिस्टम का आउटपुट कुछ मनमानी प्रोग्रामिंग भाषा में | आईपी सिस्टम का आउटपुट कुछ मनमानी प्रोग्रामिंग भाषा में प्रोग्राम है जिसमें सशर्त और लूप या पुनरावर्ती नियंत्रण संरचनाएं, या किसी अन्य प्रकार की [[ट्यूरिंग पूर्णता]] | ट्यूरिंग-पूर्ण [[ज्ञान प्रतिनिधित्व और तर्क]] भाषा शामिल है। | ||
कई अनुप्रयोगों में आउटपुट प्रोग्राम को उदाहरणों और आंशिक विनिर्देशों के संबंध में सही होना चाहिए, और इससे स्वचालित प्रोग्रामिंग या प्रोग्राम संश्लेषण के अंदर | कई अनुप्रयोगों में आउटपुट प्रोग्राम को उदाहरणों और आंशिक विनिर्देशों के संबंध में सही होना चाहिए, और इससे स्वचालित प्रोग्रामिंग या प्रोग्राम संश्लेषण के अंदर विशेष क्षेत्र के रूप में प्रेरक प्रोग्रामिंग पर विचार किया जाता है,<ref>{{cite journal|first1=A.W.|last1=Biermann|title=स्वचालित प्रोग्रामिंग|editor1-first=S.C.|editor1-last=Shapiro|journal=Encyclopedia of Artificial Intelligence|pages=18–35|year=1992}}</ref><ref>{{cite book|first1=C.|last1=Rich|first2=R.C.|last2=Waters|title=स्वचालित प्रोग्रामिंग के लिए दृष्टिकोण|editor1-first=M.C.|editor1-last=Yovits|journal=Advances in Computers|volume=37|pages=1–57|year=1993|url=http://www.merl.com/publications/docs/TR92-04.pdf|doi=10.1016/S0065-2458(08)60402-7|isbn=9780120121373}}</ref> आमतौर पर 'निगमनात्मक' कार्यक्रम संश्लेषण का विरोध किया जाता है,<ref>{{cite book|editor1-first=M.L.|editor1-last=Lowry|editor2-first=R.D.|editor2-last=McCarthy|title=स्वचालित सॉफ़्टवेयर डिज़ाइन|year=1991}}</ref><ref>{{cite journal|first1=Z.|last1=Manna|first2=R.|last2=Waldinger|title=निगमनात्मक कार्यक्रम संश्लेषण के मूल सिद्धांत|journal=IEEE Trans Softw Eng|volume=18 | issue = 8|pages=674–704|year=1992|doi=10.1109/32.153379|citeseerx=10.1.1.51.817}}</ref><ref>{{Cite book|first1=P.|last1=Flener|title=Computational Logic: Logic Programming and Beyond|chapter=Achievements and prospects of program synthesis|editor1-first=A.|editor1-last=Kakas|editor2-first=F.|editor2-last=Sadri|journal=Computational Logic: Logic Programming and Beyond; Essays in Honour of Robert A. Kowalski|volume=LNAI 2407|pages=310–346|year=2002|doi=10.1007/3-540-45628-7_13|series=Lecture Notes in Computer Science|isbn=978-3-540-43959-2}}</ref> जहां विशिष्टता आमतौर पर पूर्ण होती है. | ||
अन्य मामलों में, प्रेरक प्रोग्रामिंग को | अन्य मामलों में, प्रेरक प्रोग्रामिंग को अधिक सामान्य क्षेत्र के रूप में देखा जाता है जहां किसी भी घोषणात्मक प्रोग्रामिंग या प्रतिनिधित्व भाषा का उपयोग किया जा सकता है और हमें उदाहरणों में कुछ हद तक त्रुटि भी हो सकती है, जैसे सामान्य मशीन लर्निंग में, [[संरचना खनन]] का अधिक विशिष्ट क्षेत्र या [[प्रतीकात्मक कृत्रिम बुद्धि]]मत्ता का क्षेत्र। विशिष्ट विशेषता आवश्यक उदाहरणों की संख्या या आंशिक विशिष्टता है। आमतौर पर, प्रेरक प्रोग्रामिंग तकनीकें केवल कुछ उदाहरणों से सीखी जा सकती हैं। | ||
प्रेरक प्रोग्रामिंग की विविधता आम तौर पर अनुप्रयोगों और उपयोग की जाने वाली भाषाओं से आती है: तर्क प्रोग्रामिंग और कार्यात्मक प्रोग्रामिंग के अलावा, अन्य प्रोग्रामिंग प्रतिमान और प्रतिनिधित्व भाषाओं का उपयोग प्रेरक प्रोग्रामिंग में किया गया है या सुझाया गया है, जैसे [[कार्यात्मक तर्क प्रोग्रामिंग]], बाधा प्रोग्रामिंग, संभाव्य प्रोग्रामिंग भाषा, [[अपहरणात्मक तर्क प्रोग्रामिंग]], [[मोडल तर्क]], [[क्रिया भाषा]]एँ, एजेंट भाषाएँ और कई प्रकार की [[अनिवार्य भाषाएँ]]। | प्रेरक प्रोग्रामिंग की विविधता आम तौर पर अनुप्रयोगों और उपयोग की जाने वाली भाषाओं से आती है: तर्क प्रोग्रामिंग और कार्यात्मक प्रोग्रामिंग के अलावा, अन्य प्रोग्रामिंग प्रतिमान और प्रतिनिधित्व भाषाओं का उपयोग प्रेरक प्रोग्रामिंग में किया गया है या सुझाया गया है, जैसे [[कार्यात्मक तर्क प्रोग्रामिंग]], बाधा प्रोग्रामिंग, संभाव्य प्रोग्रामिंग भाषा, [[अपहरणात्मक तर्क प्रोग्रामिंग]], [[मोडल तर्क]], [[क्रिया भाषा]]एँ, एजेंट भाषाएँ और कई प्रकार की [[अनिवार्य भाषाएँ]]। | ||
Line 19: | Line 19: | ||
पुनरावर्ती कार्यात्मक कार्यक्रमों के प्रेरक संश्लेषण पर अनुसंधान 1970 के दशक की शुरुआत में शुरू हुआ और इसे समर्स की मौलिक थीसिस प्रणाली के साथ मजबूत सैद्धांतिक नींव पर लाया गया।<ref>{{cite journal|first1=P.D.|last1=Summers|title=उदाहरणों से एलआईएसपी कार्यक्रम निर्माण की एक पद्धति|journal=J ACM|volume=24 | issue = 1|pages=161–175|year=1977|doi=10.1145/321992.322002|s2cid=7474210|doi-access=free}}</ref> और बर्मन का काम।<ref>{{cite journal|first1=A.W.|last1=Biermann|title=उदाहरणों से नियमित एलआईएसपी कार्यक्रमों का निष्कर्ष|journal=IEEE Trans Syst Man Cybern|volume=8 | issue = 8|pages=585–600|year=1978|doi=10.1109/tsmc.1978.4310035|s2cid=15277948}}</ref> | पुनरावर्ती कार्यात्मक कार्यक्रमों के प्रेरक संश्लेषण पर अनुसंधान 1970 के दशक की शुरुआत में शुरू हुआ और इसे समर्स की मौलिक थीसिस प्रणाली के साथ मजबूत सैद्धांतिक नींव पर लाया गया।<ref>{{cite journal|first1=P.D.|last1=Summers|title=उदाहरणों से एलआईएसपी कार्यक्रम निर्माण की एक पद्धति|journal=J ACM|volume=24 | issue = 1|pages=161–175|year=1977|doi=10.1145/321992.322002|s2cid=7474210|doi-access=free}}</ref> और बर्मन का काम।<ref>{{cite journal|first1=A.W.|last1=Biermann|title=उदाहरणों से नियमित एलआईएसपी कार्यक्रमों का निष्कर्ष|journal=IEEE Trans Syst Man Cybern|volume=8 | issue = 8|pages=585–600|year=1978|doi=10.1109/tsmc.1978.4310035|s2cid=15277948}}</ref> | ||
इन दृष्टिकोणों को दो चरणों में विभाजित किया गया था: पहला, इनपुट-आउटपुट उदाहरणों को बुनियादी ऑपरेटरों के | इन दृष्टिकोणों को दो चरणों में विभाजित किया गया था: पहला, इनपुट-आउटपुट उदाहरणों को बुनियादी ऑपरेटरों के छोटे सेट का उपयोग करके गैर-पुनरावर्ती कार्यक्रमों (ट्रेस) में बदल दिया जाता है; दूसरा, निशानों में नियमितताओं की खोज की जाती है और उन्हें पुनरावर्ती कार्यक्रम में मोड़ने के लिए उपयोग किया जाता है। 1980 के दशक के मध्य तक मुख्य परिणामों का सर्वेक्षण स्मिथ द्वारा किया गया।<ref>{{cite journal|first1=D.R.|last1=Smith|title=The synthesis of LISP programs from examples: a survey|editor1-first=A.W.|editor1-last=Biermann|editor2-first=G.|editor2-last=Guiho|journal=Automatic Program Construction Techniques|pages=307–324|year=1984|url=https://www.researchgate.net/publication/239059541}}</ref> संश्लेषित किए जा सकने वाले कार्यक्रमों की श्रृंखला के संबंध में सीमित प्रगति के कारण, अगले दशक में अनुसंधान गतिविधियों में काफी कमी आई। | ||
लॉजिक प्रोग्रामिंग के आगमन ने 1980 के दशक की शुरुआत में | लॉजिक प्रोग्रामिंग के आगमन ने 1980 के दशक की शुरुआत में नई उत्साह के साथ-साथ नई दिशा भी लाई, विशेष रूप से शापिरो की एमआईएस प्रणाली के कारण<ref>{{cite book|first1=E.Y.|last1=Shapiro|title=एल्गोरिथम प्रोग्राम डिबगिंग|publisher=The MIT Press|year=1983}}</ref> अंततः प्रेरक तर्क प्रोग्रामिंग (आईएलपी) के नए क्षेत्र को जन्म दिया।<ref>{{Cite journal | last1 = Muggleton | first1 = S. | title = आगमनात्मक तर्क प्रोग्रामिंग| doi = 10.1007/BF03037089 | journal = New Generation Computing | volume = 8 | issue = 4 | pages = 295–318 | year = 1991 | citeseerx = 10.1.1.329.5312 | s2cid = 5462416 }}</ref> प्लॉटकिन के प्रारंभिक कार्य,<ref>{{cite journal|first1=Gordon D.|last1=Plotkin|title=आगमनात्मक सामान्यीकरण पर एक नोट|editor1-first=B.|editor1-last=Meltzer|editor2-first=D.|editor2-last=Michie|journal=Machine Intelligence|volume=5|pages=153–163|year=1970|url=http://homepages.inf.ed.ac.uk/gdp/publications/MI5_note_ind_gen.pdf}}</ref><ref>{{cite journal|first1=Gordon D.|last1=Plotkin|title=आगमनात्मक सामान्यीकरण पर एक और नोट|editor1-first=B.|editor1-last=Meltzer|editor2-first=D.|editor2-last=Michie|journal=Machine Intelligence|volume=6|pages=101–124|year=1971}}</ref> और उनके सापेक्ष न्यूनतम सामान्यीकरण (आरएलजीजी) का प्रेरक तर्क प्रोग्रामिंग में भारी प्रभाव पड़ा। आईएलपी का अधिकांश कार्य समस्याओं के व्यापक वर्ग को संबोधित करता है, क्योंकि फोकस न केवल पुनरावर्ती तर्क कार्यक्रमों पर है, बल्कि तार्किक अभ्यावेदन से प्रतीकात्मक परिकल्पनाओं की मशीन सीखने पर भी है। हालाँकि, पुनरावर्ती प्रोलॉग प्रोग्राम सीखने पर कुछ उत्साहजनक परिणाम मिले जैसे उदाहरण के लिए उपयुक्त पृष्ठभूमि ज्ञान के साथ उदाहरणों से त्वरित सॉर्ट, GOLEM के साथ।<ref>{{cite journal|first1=S.H.|last1=Muggleton|first2=C.|last2=Feng|s2cid=14992676|title=तर्क कार्यक्रमों का कुशल प्रेरण|journal=Proceedings of the Workshop on Algorithmic Learning Theory|volume=6|pages=368–381|year=1990}}</ref> लेकिन फिर, प्रारंभिक सफलता के बाद, पुनरावर्ती कार्यक्रमों को शामिल करने के बारे में सीमित प्रगति से समुदाय निराश हो गया<ref>{{cite journal | ||
|first1=J.R.|last1=Quinlan|first2=R.M.|last2=Cameron-Jones | |first1=J.R.|last1=Quinlan|first2=R.M.|last2=Cameron-Jones | ||
|s2cid=11138624|title=Avoiding Pitfalls When Learning Recursive Theories | |s2cid=11138624|title=Avoiding Pitfalls When Learning Recursive Theories | ||
Line 67: | Line 67: | ||
</ref> यहां फिर से, कार्यात्मक कार्यक्रमों को आउटपुट मूल्यांकन (फिटनेस) फ़ंक्शन के साथ सकारात्मक उदाहरणों के सेट से सीखा जाता है जो सीखे जाने वाले प्रोग्राम के वांछित इनपुट/आउटपुट व्यवहार को निर्दिष्ट करता है। | </ref> यहां फिर से, कार्यात्मक कार्यक्रमों को आउटपुट मूल्यांकन (फिटनेस) फ़ंक्शन के साथ सकारात्मक उदाहरणों के सेट से सीखा जाता है जो सीखे जाने वाले प्रोग्राम के वांछित इनपुट/आउटपुट व्यवहार को निर्दिष्ट करता है। | ||
[[व्याकरण प्रेरण]] (व्याकरणिक अनुमान के रूप में भी जाना जाता है) में प्रारंभिक कार्य प्रेरक प्रोग्रामिंग से संबंधित है, क्योंकि उत्पादन नियमों का प्रतिनिधित्व करने के लिए पुनर्लेखन प्रणाली या तर्क कार्यक्रमों का उपयोग किया जा सकता है। वास्तव में, प्रेरक अनुमान के शुरुआती कार्यों में व्याकरण प्रेरण और लिस्प प्रोग्राम अनुमान को मूल रूप से | [[व्याकरण प्रेरण]] (व्याकरणिक अनुमान के रूप में भी जाना जाता है) में प्रारंभिक कार्य प्रेरक प्रोग्रामिंग से संबंधित है, क्योंकि उत्पादन नियमों का प्रतिनिधित्व करने के लिए पुनर्लेखन प्रणाली या तर्क कार्यक्रमों का उपयोग किया जा सकता है। वास्तव में, प्रेरक अनुमान के शुरुआती कार्यों में व्याकरण प्रेरण और लिस्प प्रोग्राम अनुमान को मूल रूप से ही समस्या माना जाता है।<ref> | ||
{{cite journal | {{cite journal | ||
|first1=D.|last1=Angluin|first2=Smith|last2=C.H. | |first1=D.|last1=Angluin|first2=Smith|last2=C.H. | ||
Line 118: | Line 118: | ||
|volume=30|issue=3|pages=473–513|year=2014 | |volume=30|issue=3|pages=473–513|year=2014 | ||
|doi=10.1111/coin.12004}} | |doi=10.1111/coin.12004}} | ||
</ref> संचयी सीखने और फ़ंक्शन आविष्कार के लिए अमूर्तता को | </ref> संचयी सीखने और फ़ंक्शन आविष्कार के लिए अमूर्तता को अधिक शक्तिशाली दृष्टिकोण के रूप में भी खोजा गया है।<ref> | ||
{{cite journal | {{cite journal | ||
|first1=R.J.|last1=Henderson|first2=S.H.|last2=Muggleton | |first1=R.J.|last1=Henderson|first2=S.H.|last2=Muggleton | ||
Line 238: | Line 238: | ||
* [[विकासवादी प्रोग्रामिंग]] | * [[विकासवादी प्रोग्रामिंग]] | ||
* [[विवेचनात्मक तार्किकता]] | * [[विवेचनात्मक तार्किकता]] | ||
* [[परीक्षण संचालित विकास]] | * [[परीक्षण संचालित विकास]] | ||
Revision as of 10:59, 12 July 2023
प्रेरक प्रोग्रामिंग (आईपी) स्वचालित प्रोग्रामिंग का विशेष क्षेत्र है, जो कृत्रिम बुद्धिमत्ता और कंप्यूटर प्रोग्रामिंग से अनुसंधान को कवर करता है, जो आम तौर पर घोषणात्मक प्रोग्रामिंग (तर्क प्रोग्रामिंग या कार्यात्मक प्रोग्रामिंग) की यंत्र अधिगम को संबोधित करता है और अक्सर इनपुट / आउटपुट जैसे अधूरे विनिर्देशों से प्रत्यावर्तन प्रोग्राम को संबोधित करता है। उदाहरण या बाधाएँ.
प्रयुक्त प्रोग्रामिंग भाषा के आधार पर, प्रेरक प्रोग्रामिंग कई प्रकार की होती है। प्रेरक कार्यात्मक प्रोग्रामिंग, जो लिस्प (प्रोग्रामिंग भाषा) या हास्केल (प्रोग्रामिंग भाषा) जैसी कार्यात्मक प्रोग्रामिंग भाषाओं का उपयोग करती है, और विशेष रूप से प्रेरक तर्क प्रोग्रामिंग, जो प्रोलॉग जैसी तर्क प्रोग्रामिंग भाषाओं और विवरण तर्क जैसे अन्य तार्किक प्रतिनिधित्व का उपयोग करती है, अधिक रही है प्रमुख, लेकिन अन्य (प्रोग्रामिंग) भाषा प्रतिमानों का भी उपयोग किया गया है, जैसे बाधा प्रोग्रामिंग या संभाव्य प्रोग्रामिंग भाषा।
परिभाषा
प्रेरक प्रोग्रामिंग में वे सभी दृष्टिकोण शामिल होते हैं जो अधूरे (औपचारिक विनिर्देश) विनिर्देशों से सीखने के कार्यक्रमों या एल्गोरिदम से संबंधित हैं। आईपी सिस्टम में संभावित इनपुट प्रशिक्षण इनपुट और संबंधित आउटपुट या आउटपुट मूल्यांकन फ़ंक्शन का सेट है, जो इच्छित प्रोग्राम के वांछित व्यवहार, ट्रेसिंग (सॉफ़्टवेयर) या एक्शन अनुक्रमों का वर्णन करता है जो विशिष्ट आउटपुट, बाधा (गणित) की गणना करने की प्रक्रिया का वर्णन करता है। प्रोग्राम को उसकी समय दक्षता या उसकी जटिलता के संबंध में प्रेरित करने के लिए, विभिन्न प्रकार के पृष्ठभूमि ज्ञान जैसे मानक डेटा प्रकार, उपयोग किए जाने वाले पूर्वनिर्धारित फ़ंक्शन, प्रोग्राम योजनाएं या इच्छित प्रोग्राम के डेटा प्रवाह का वर्णन करने वाले टेम्पलेट, खोज के मार्गदर्शन के लिए अनुमान समाधान या अन्य पूर्वाग्रह.
आईपी सिस्टम का आउटपुट कुछ मनमानी प्रोग्रामिंग भाषा में प्रोग्राम है जिसमें सशर्त और लूप या पुनरावर्ती नियंत्रण संरचनाएं, या किसी अन्य प्रकार की ट्यूरिंग पूर्णता | ट्यूरिंग-पूर्ण ज्ञान प्रतिनिधित्व और तर्क भाषा शामिल है।
कई अनुप्रयोगों में आउटपुट प्रोग्राम को उदाहरणों और आंशिक विनिर्देशों के संबंध में सही होना चाहिए, और इससे स्वचालित प्रोग्रामिंग या प्रोग्राम संश्लेषण के अंदर विशेष क्षेत्र के रूप में प्रेरक प्रोग्रामिंग पर विचार किया जाता है,[1][2] आमतौर पर 'निगमनात्मक' कार्यक्रम संश्लेषण का विरोध किया जाता है,[3][4][5] जहां विशिष्टता आमतौर पर पूर्ण होती है.
अन्य मामलों में, प्रेरक प्रोग्रामिंग को अधिक सामान्य क्षेत्र के रूप में देखा जाता है जहां किसी भी घोषणात्मक प्रोग्रामिंग या प्रतिनिधित्व भाषा का उपयोग किया जा सकता है और हमें उदाहरणों में कुछ हद तक त्रुटि भी हो सकती है, जैसे सामान्य मशीन लर्निंग में, संरचना खनन का अधिक विशिष्ट क्षेत्र या प्रतीकात्मक कृत्रिम बुद्धिमत्ता का क्षेत्र। विशिष्ट विशेषता आवश्यक उदाहरणों की संख्या या आंशिक विशिष्टता है। आमतौर पर, प्रेरक प्रोग्रामिंग तकनीकें केवल कुछ उदाहरणों से सीखी जा सकती हैं।
प्रेरक प्रोग्रामिंग की विविधता आम तौर पर अनुप्रयोगों और उपयोग की जाने वाली भाषाओं से आती है: तर्क प्रोग्रामिंग और कार्यात्मक प्रोग्रामिंग के अलावा, अन्य प्रोग्रामिंग प्रतिमान और प्रतिनिधित्व भाषाओं का उपयोग प्रेरक प्रोग्रामिंग में किया गया है या सुझाया गया है, जैसे कार्यात्मक तर्क प्रोग्रामिंग, बाधा प्रोग्रामिंग, संभाव्य प्रोग्रामिंग भाषा, अपहरणात्मक तर्क प्रोग्रामिंग, मोडल तर्क, क्रिया भाषाएँ, एजेंट भाषाएँ और कई प्रकार की अनिवार्य भाषाएँ।
इतिहास
पुनरावर्ती कार्यात्मक कार्यक्रमों के प्रेरक संश्लेषण पर अनुसंधान 1970 के दशक की शुरुआत में शुरू हुआ और इसे समर्स की मौलिक थीसिस प्रणाली के साथ मजबूत सैद्धांतिक नींव पर लाया गया।[6] और बर्मन का काम।[7] इन दृष्टिकोणों को दो चरणों में विभाजित किया गया था: पहला, इनपुट-आउटपुट उदाहरणों को बुनियादी ऑपरेटरों के छोटे सेट का उपयोग करके गैर-पुनरावर्ती कार्यक्रमों (ट्रेस) में बदल दिया जाता है; दूसरा, निशानों में नियमितताओं की खोज की जाती है और उन्हें पुनरावर्ती कार्यक्रम में मोड़ने के लिए उपयोग किया जाता है। 1980 के दशक के मध्य तक मुख्य परिणामों का सर्वेक्षण स्मिथ द्वारा किया गया।[8] संश्लेषित किए जा सकने वाले कार्यक्रमों की श्रृंखला के संबंध में सीमित प्रगति के कारण, अगले दशक में अनुसंधान गतिविधियों में काफी कमी आई।
लॉजिक प्रोग्रामिंग के आगमन ने 1980 के दशक की शुरुआत में नई उत्साह के साथ-साथ नई दिशा भी लाई, विशेष रूप से शापिरो की एमआईएस प्रणाली के कारण[9] अंततः प्रेरक तर्क प्रोग्रामिंग (आईएलपी) के नए क्षेत्र को जन्म दिया।[10] प्लॉटकिन के प्रारंभिक कार्य,[11][12] और उनके सापेक्ष न्यूनतम सामान्यीकरण (आरएलजीजी) का प्रेरक तर्क प्रोग्रामिंग में भारी प्रभाव पड़ा। आईएलपी का अधिकांश कार्य समस्याओं के व्यापक वर्ग को संबोधित करता है, क्योंकि फोकस न केवल पुनरावर्ती तर्क कार्यक्रमों पर है, बल्कि तार्किक अभ्यावेदन से प्रतीकात्मक परिकल्पनाओं की मशीन सीखने पर भी है। हालाँकि, पुनरावर्ती प्रोलॉग प्रोग्राम सीखने पर कुछ उत्साहजनक परिणाम मिले जैसे उदाहरण के लिए उपयुक्त पृष्ठभूमि ज्ञान के साथ उदाहरणों से त्वरित सॉर्ट, GOLEM के साथ।[13] लेकिन फिर, प्रारंभिक सफलता के बाद, पुनरावर्ती कार्यक्रमों को शामिल करने के बारे में सीमित प्रगति से समुदाय निराश हो गया[14][15][16] ILP के साथ पुनरावर्ती कार्यक्रमों पर कम से कम ध्यान केंद्रित किया जा रहा है और संबंधपरक डेटा खनन और ज्ञान खोज में अनुप्रयोगों के साथ मशीन लर्निंग सेटिंग की ओर अधिक से अधिक झुकाव हो रहा है।[17] ILP, कोज़ा में काम करने के समानांतर[18] 1990 के दशक की शुरुआत में सीखने के कार्यक्रमों के लिए जनरेट-एंड-टेस्ट आधारित दृष्टिकोण के रूप में प्रस्तावित आनुवंशिक प्रोग्रामिंग। आनुवंशिक प्रोग्रामिंग के विचार को आगे चलकर प्रेरक प्रोग्रामिंग प्रणाली ADATE में विकसित किया गया[19] और व्यवस्थित-खोज-आधारित प्रणाली मैजिकहास्केलर।[20] यहां फिर से, कार्यात्मक कार्यक्रमों को आउटपुट मूल्यांकन (फिटनेस) फ़ंक्शन के साथ सकारात्मक उदाहरणों के सेट से सीखा जाता है जो सीखे जाने वाले प्रोग्राम के वांछित इनपुट/आउटपुट व्यवहार को निर्दिष्ट करता है।
व्याकरण प्रेरण (व्याकरणिक अनुमान के रूप में भी जाना जाता है) में प्रारंभिक कार्य प्रेरक प्रोग्रामिंग से संबंधित है, क्योंकि उत्पादन नियमों का प्रतिनिधित्व करने के लिए पुनर्लेखन प्रणाली या तर्क कार्यक्रमों का उपयोग किया जा सकता है। वास्तव में, प्रेरक अनुमान के शुरुआती कार्यों में व्याकरण प्रेरण और लिस्प प्रोग्राम अनुमान को मूल रूप से ही समस्या माना जाता है।[21] सीखने की क्षमता के संदर्भ में परिणाम शास्त्रीय अवधारणाओं से संबंधित थे, जैसे कि सीमा में पहचान, जैसा कि गोल्ड के मौलिक कार्य में पेश किया गया था।[22] हाल ही में, भाषा सीखने की समस्या को प्रेरक प्रोग्रामिंग समुदाय द्वारा संबोधित किया गया था।[23][24] हाल के वर्षों में, शास्त्रीय दृष्टिकोण को फिर से शुरू किया गया है और बड़ी सफलता के साथ आगे बढ़ाया गया है। इसलिए, कार्यात्मक प्रोग्रामिंग की आधुनिक तकनीकों के साथ-साथ खोज-आधारित रणनीतियों के मध्यम उपयोग और पृष्ठभूमि ज्ञान के उपयोग के साथ-साथ उपप्रोग्राम के स्वचालित आविष्कार को ध्यान में रखते हुए, संश्लेषण समस्या को कंस्ट्रक्टर-आधारित शब्द पुनर्लेखन प्रणालियों की पृष्ठभूमि पर फिर से तैयार किया गया है। हाल ही में प्रोग्राम संश्लेषण से परे कई नए और सफल अनुप्रयोग सामने आए हैं, विशेष रूप से डेटा हेरफेर, उदाहरण के द्वारा प्रोग्रामिंग और संज्ञानात्मक मॉडलिंग (नीचे देखें) के क्षेत्र में।
परिकल्पनाओं के प्रतिनिधित्व के लिए घोषणात्मक भाषाओं का उपयोग करने की सामान्य विशेषता के साथ अन्य विचारों का भी पता लगाया गया है। उदाहरण के लिए, पुनरावर्ती डेटा प्रकारों और संरचनाओं के बेहतर प्रबंधन के लिए उच्च-क्रम सुविधाओं, योजनाओं या संरचित दूरियों के उपयोग की वकालत की गई है;[25][26][27] संचयी सीखने और फ़ंक्शन आविष्कार के लिए अमूर्तता को अधिक शक्तिशाली दृष्टिकोण के रूप में भी खोजा गया है।[28][29] एक शक्तिशाली प्रतिमान जिसका उपयोग हाल ही में प्रेरक प्रोग्रामिंग (आम तौर पर जनरेटिव मॉडल के रूप में) में परिकल्पनाओं के प्रतिनिधित्व के लिए किया गया है, संभाव्य प्रोग्रामिंग भाषा (और संबंधित प्रतिमान, जैसे स्टोकेस्टिक लॉजिक प्रोग्राम और बायेसियन लॉजिक प्रोग्रामिंग) है।[30][31][32][33]
आवेदन क्षेत्र
आईसी एमएल 2005 के संयोजन में आयोजित प्रेरक प्रोग्रामिंग (एएआईपी) के दृष्टिकोण और अनुप्रयोगों पर पहली कार्यशाला ने उन सभी अनुप्रयोगों की पहचान की जहां कार्यक्रमों को सीखना या पुनरावर्ती नियमों की आवश्यकता होती है, [...] सबसे पहले सॉफ्टवेयर इंजीनियरिंग के क्षेत्र में जहां संरचनात्मक शिक्षण, सॉफ्टवेयर सहायक और सॉफ्टवेयर एजेंट प्रोग्रामर को नियमित कार्यों से राहत देने में मदद कर सकते हैं, अंतिम उपयोगकर्ताओं के लिए प्रोग्रामिंग सहायता दे सकते हैं, या नौसिखिया प्रोग्रामर और प्रोग्रामिंग का समर्थन कर सकते हैं ट्यूटर सिस्टम. अनुप्रयोग के अन्य क्षेत्र हैं भाषा सीखना, एआई-योजना के लिए पुनरावर्ती नियंत्रण नियम सीखना, वेब-माइनिंग में पुनरावर्ती अवधारणाओं को सीखना या डेटा-प्रारूप परिवर्तनों के लिए।
तब से, ये और कई अन्य क्षेत्र प्रेरक प्रोग्रामिंग के लिए सफल एप्लिकेशन क्षेत्र साबित हुए हैं, जैसे अंतिम-उपयोगकर्ता विकास|एंड-यूज़र प्रोग्रामिंग,[34] उदाहरण के तौर पर प्रोग्रामिंग के संबंधित क्षेत्र[35] और प्रदर्शन द्वारा प्रोग्रामिंग,[36] और बुद्धिमान शिक्षण प्रणाली।
अन्य क्षेत्र जहां प्रेरक अनुमान को हाल ही में लागू किया गया है वे हैं ज्ञान अर्जन,[37] कृत्रिम सामान्य बुद्धि,[38] सुदृढीकरण सीखना और सिद्धांत मूल्यांकन,[39][40] और सामान्य तौर पर संज्ञानात्मक विज्ञान।[41][33]बुद्धिमान एजेंटों, गेम, रोबोटिक्स, वैयक्तिकरण, परिवेश बुद्धिमत्ता और मानव इंटरफेस में भी संभावित अनुप्रयोग हो सकते हैं।
यह भी देखें
संदर्भ
- ↑ Biermann, A.W. (1992). Shapiro, S.C. (ed.). "स्वचालित प्रोग्रामिंग". Encyclopedia of Artificial Intelligence: 18–35.
- ↑ Rich, C.; Waters, R.C. (1993). Yovits, M.C. (ed.). स्वचालित प्रोग्रामिंग के लिए दृष्टिकोण (PDF). pp. 1–57. doi:10.1016/S0065-2458(08)60402-7. ISBN 9780120121373.
{{cite book}}
:|journal=
ignored (help) - ↑ Lowry, M.L.; McCarthy, R.D., eds. (1991). स्वचालित सॉफ़्टवेयर डिज़ाइन.
- ↑ Manna, Z.; Waldinger, R. (1992). "निगमनात्मक कार्यक्रम संश्लेषण के मूल सिद्धांत". IEEE Trans Softw Eng. 18 (8): 674–704. CiteSeerX 10.1.1.51.817. doi:10.1109/32.153379.
- ↑ Flener, P. (2002). "Achievements and prospects of program synthesis". In Kakas, A.; Sadri, F. (eds.). Computational Logic: Logic Programming and Beyond. pp. 310–346. doi:10.1007/3-540-45628-7_13. ISBN 978-3-540-43959-2.
{{cite book}}
:|journal=
ignored (help) - ↑ Summers, P.D. (1977). "उदाहरणों से एलआईएसपी कार्यक्रम निर्माण की एक पद्धति". J ACM. 24 (1): 161–175. doi:10.1145/321992.322002. S2CID 7474210.
- ↑ Biermann, A.W. (1978). "उदाहरणों से नियमित एलआईएसपी कार्यक्रमों का निष्कर्ष". IEEE Trans Syst Man Cybern. 8 (8): 585–600. doi:10.1109/tsmc.1978.4310035. S2CID 15277948.
- ↑ Smith, D.R. (1984). Biermann, A.W.; Guiho, G. (eds.). "The synthesis of LISP programs from examples: a survey". Automatic Program Construction Techniques: 307–324.
- ↑ Shapiro, E.Y. (1983). एल्गोरिथम प्रोग्राम डिबगिंग. The MIT Press.
- ↑ Muggleton, S. (1991). "आगमनात्मक तर्क प्रोग्रामिंग". New Generation Computing. 8 (4): 295–318. CiteSeerX 10.1.1.329.5312. doi:10.1007/BF03037089. S2CID 5462416.
- ↑ Plotkin, Gordon D. (1970). Meltzer, B.; Michie, D. (eds.). "आगमनात्मक सामान्यीकरण पर एक नोट" (PDF). Machine Intelligence. 5: 153–163.
- ↑ Plotkin, Gordon D. (1971). Meltzer, B.; Michie, D. (eds.). "आगमनात्मक सामान्यीकरण पर एक और नोट". Machine Intelligence. 6: 101–124.
- ↑ Muggleton, S.H.; Feng, C. (1990). "तर्क कार्यक्रमों का कुशल प्रेरण". Proceedings of the Workshop on Algorithmic Learning Theory. 6: 368–381. S2CID 14992676.
- ↑ Quinlan, J.R.; Cameron-Jones, R.M. (1993). "Avoiding Pitfalls When Learning Recursive Theories". IJCAI: 1050–1057. S2CID 11138624.
- ↑ Quinlan, J.R.; Cameron-Jones, R.M. (1995). "Induction of logic programs: FOIL and related systems" (PDF). 13 (3–4). Springer: 287–312. Archived from the original (PDF) on 2017-09-07. Retrieved 2017-09-07.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Flener, P.; Yilmaz, S. (1999). "Inductive synthesis of recursive logic programs: Achievements and prospects". The Journal of Logic Programming. 41 (2): 141–195. doi:10.1016/s0743-1066(99)00028-x.
- ↑ Džeroski, Sašo (1996), "Inductive Logic Programming and Knowledge Discovery in Databases", in Fayyad, U.M.; Piatetsky-Shapiro, G.; Smith, P.; Uthurusamy, R. (eds.), Advances in Knowledge Discovery and Data Mining, MIT Press, pp. 117–152
- ↑ Koza, J.R. (1992). Genetic Programming: vol. 1, On the programming of computers by means of natural selection. MIT Press. ISBN 9780262111706.
- ↑ Olsson, J.R. (1995). "Inductive functional programming using incremental program transformation". Artificial Intelligence. 74 (1): 55–83. doi:10.1016/0004-3702(94)00042-y.
- ↑
Katayama, Susumu (2008). "Efficient exhaustive generation of functional programs using Monte-Carlo search with iterative deepening" (PDF). pp. 199–210. CiteSeerX 10.1.1.606.1447. doi:10.1007/978-3-540-89197-0_21. ISBN 978-3-540-89196-3.
{{cite book}}
:|journal=
ignored (help); Missing or empty|title=
(help) - ↑ Angluin, D.; C.H., Smith (1983). "Inductive inference: Theory and methods". ACM Computing Surveys. 15 (3): 237–269. doi:10.1145/356914.356918. S2CID 3209224.
- ↑ Gold, E.M. (1967). "Language identification in the limit". Information and Control. 10 (5): 447–474. doi:10.1016/s0019-9958(67)91165-5.
- ↑ Muggleton, Stephen (1999). "Inductive Logic Programming: Issues, Results and the Challenge of Learning Language in Logic". Artificial Intelligence. 114 (1–2): 283–296. doi:10.1016/s0004-3702(99)00067-3.; here: Sect.2.1
- ↑ Olsson, J.R.; Powers, D.M.W. (2003). "Machine learning of human language through automatic programming". Proceedings of the International Conference on Cognitive Science: 507–512.
- ↑
Lloyd, J.W. (2001). "Knowledge Representation, Computation, and Learning in Higher-order Logic" (PDF).
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Lloyd, J.W. (2003). Logic for learning: learning comprehensible theories from structured data. Springer. ISBN 9783662084069.
- ↑ Estruch, V.; Ferri, C.; Hernandez-Orallo, J.; Ramirez-Quintana, M.J. (2014). "Bridging the gap between distance and generalization". Computational Intelligence. 30 (3): 473–513. doi:10.1111/coin.12004. S2CID 7255690.
- ↑ Henderson, R.J.; Muggleton, S.H. (2012). "Automatic invention of functional abstractions" (PDF). Advances in Inductive Logic Programming.
- ↑ Irvin, H.; Stuhlmuller, A.; Goodman, N.D. (2011). "Inducing probabilistic programs by Bayesian program merging". arXiv:1110.5667 [cs.AI].
- ↑ Muggleton, S. (2000). "Learning stochastic logic programs" (PDF). Electron. Trans. Artif. Intell. 4(B): 141–153. Archived from the original (PDF) on 2017-09-07. Retrieved 2017-09-07.
- ↑ De Raedt, L.; Kersting, K. (2008). Probabilistic inductive logic programming. Springer.
- ↑ Irvin, H.; Stuhlmuller, A.; Goodman, N.D. (2011). "Inducing probabilistic programs by Bayesian program merging". arXiv:1110.5667 [cs.AI].
- ↑ 33.0 33.1 Stuhlmuller, A.; Goodman, N.D. (2012). "Reasoning about reasoning by nested conditioning: Modeling theory of mind with probabilistic programs". Cognitive Systems Research. 28: 80–99. doi:10.1016/j.cogsys.2013.07.003. S2CID 7602205.
- ↑ Lieberman, H.; Paternò, F.; Wulf, V. (2006). End user development. Springer.
- ↑ Lieberman, H. (2001). Your wish is my command: Programming by example. Morgan Kaufmann. ISBN 9781558606883.
- ↑ Cypher, E.; Halbert, D.C. (1993). Watch what I do: programming by demonstration. ISBN 9780262032131.
- ↑ Schmid, U.; Hofmann, M.; Kitzelmann, E. (2009). "Analytical inductive programming as a cognitive rule acquisition devise" (PDF). Proceedings of the Second Conference on Artificial General Intelligence: 162–167.
- ↑ Crossley, N.; Kitzelmann, E.; Hofmann, M.; Schmid, U. (2009). "Combining analytical and evolutionary inductive programming" (PDF). Proceedings of the Second Conference on Artificial General Intelligence: 19–24.
- ↑ Hernandez-Orallo, J. (2000). "Constructive reinforcement learning". International Journal of Intelligent Systems. 15 (3): 241–264. CiteSeerX 10.1.1.34.8877. doi:10.1002/(sici)1098-111x(200003)15:3<241::aid-int6>3.0.co;2-z. S2CID 123390956.
- ↑ Kemp, C.; Goodman, N.; Tenenbaum, J.B. (2007). "Learning and using relational theories" (PDF). Advances in Neural Information Processing Systems: 753–760.
- ↑ Schmid, U.; Kitzelmann, E. (2011). "Inductive rule learning on the knowledge level". Cognitive Systems Research. 12 (3): 237–248. doi:10.1016/j.cogsys.2010.12.002. S2CID 18613664.
अग्रिम पठन
- Flener, P.; Schmid, U. (2008). "An introduction to inductive programming". Artificial Intelligence Review. 29 (1): 45–62. doi:10.1007/s10462-009-9108-7. S2CID 26314997.
- Kitzelmann, E. (2010). "Inductive programming: A survey of program synthesis techniques" (PDF). pp. 50–73. CiteSeerX 10.1.1.180.1237. doi:10.1007/978-3-642-11931-6_3. ISBN 978-3-642-11930-9.
{{cite book}}
:|journal=
ignored (help); Missing or empty|title=
(help) - Partridge, D. (1997). "The case for inductive programming". Computer. 30 (1): 36–41. doi:10.1109/2.562924.
- Flener, P.; Partridge, D. (2001). "Inductive Programming". Automated Software Engineering. 8 (2): 131–137. doi:10.1023/a:1008797606116. S2CID 6675212.
- Hofmann, M.; Kitzelmann, E. (2009). "A unifying framework for analysis and evaluation of inductive programming systems". Proceedings of the Second Conference on Artificial General Intelligence: 55–60.
- Muggleton, S.; De Raedt, L. (1994). "Inductive Logic Programming: Theory and methods". The Journal of Logic Programming. 19–20: 629–679. doi:10.1016/0743-1066(94)90035-3.
- Lavrac, N.; Dzeroski, S. (1994). Inductive Logic Programming: Techniques and Applications. New York: Ellis Horwood. ISBN 978-0-13-457870-5. https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/
- Muggleton, S.; De Raedt, Luc.; Poole, D.; Bratko, I.; Flach, P.; Inoue, K.; Srinivasan, A. (2012). "ILP turns 20". Machine Learning. 86 (1): 3–23. doi:10.1007/s10994-011-5259-2.
- Gulwani, S.; Hernandez-Orallo, J.; Kitzelmann, E.; Muggleton, S.H.; Schmid, U.; Zorn, B. (2015). "Inductive Programming Meets the Real World". Communications of the ACM. 58 (11): 90–99. CiteSeerX 10.1.1.696.3800. doi:10.1145/2736282. hdl:10251/64984. S2CID 425881.
बाहरी संबंध
- Inductive Programming community page, hosted by the University of Bamberg.