इंडक्टिव प्रोग्रामिंग

प्रेरक प्रोग्रामिंग (आईपी) स्वचालित प्रोग्रामिंग का विशेष क्षेत्र है, जो कृत्रिम बुद्धिमत्ता और कंप्यूटर प्रोग्रामिंग से अनुसंधान को कवर करता है, जो आम तौर पर घोषणात्मक प्रोग्रामिंग (तर्क प्रोग्रामिंग या कार्यात्मक प्रोग्रामिंग) की यंत्र अधिगम  को संबोधित करता है और अक्सर इनपुट / आउटपुट जैसे अधूरे विनिर्देशों से  प्रत्यावर्तन  प्रोग्राम को संबोधित करता है। उदाहरण या बाधाएँ.

प्रयुक्त प्रोग्रामिंग भाषा के आधार पर, प्रेरक प्रोग्रामिंग कई प्रकार की होती है। प्रेरक कार्यात्मक प्रोग्रामिंग, जो लिस्प (प्रोग्रामिंग भाषा) या हास्केल (प्रोग्रामिंग भाषा) जैसी कार्यात्मक प्रोग्रामिंग भाषाओं का उपयोग करती है, और विशेष रूप से प्रेरक तर्क प्रोग्रामिंग, जो प्रोलॉग जैसी तर्क प्रोग्रामिंग भाषाओं और विवरण तर्क जैसे अन्य तार्किक प्रतिनिधित्व का उपयोग करती है, अधिक रही है प्रमुख, लेकिन अन्य (प्रोग्रामिंग) भाषा प्रतिमानों का भी उपयोग किया गया है, जैसे बाधा प्रोग्रामिंग या संभाव्य प्रोग्रामिंग भाषा।

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

आईपी ​​सिस्टम का आउटपुट कुछ मनमानी प्रोग्रामिंग भाषा में प्रोग्राम है जिसमें सशर्त और लूप या पुनरावर्ती नियंत्रण संरचनाएं, या किसी अन्य प्रकार की ट्यूरिंग पूर्णता | ट्यूरिंग-पूर्ण ज्ञान प्रतिनिधित्व और तर्क भाषा शामिल है।

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

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

प्रेरक प्रोग्रामिंग की विविधता आम तौर पर अनुप्रयोगों और उपयोग की जाने वाली भाषाओं से आती है: तर्क प्रोग्रामिंग और कार्यात्मक प्रोग्रामिंग के अलावा, अन्य प्रोग्रामिंग प्रतिमान और प्रतिनिधित्व भाषाओं का उपयोग प्रेरक प्रोग्रामिंग में किया गया है या सुझाया गया है, जैसे कार्यात्मक तर्क प्रोग्रामिंग, बाधा प्रोग्रामिंग, संभाव्य प्रोग्रामिंग भाषा, अपहरणात्मक तर्क प्रोग्रामिंग, मोडल तर्क, क्रिया भाषाएँ, एजेंट भाषाएँ और कई प्रकार की अनिवार्य भाषाएँ।

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

लॉजिक प्रोग्रामिंग के आगमन ने 1980 के दशक की शुरुआत में नई उत्साह के साथ-साथ नई दिशा भी लाई, विशेष रूप से शापिरो की एमआईएस प्रणाली के कारण अंततः प्रेरक तर्क प्रोग्रामिंग (आईएलपी) के नए क्षेत्र को जन्म दिया। प्लॉटकिन के प्रारंभिक कार्य, और उनके सापेक्ष न्यूनतम सामान्यीकरण (आरएलजीजी) का प्रेरक तर्क प्रोग्रामिंग में भारी प्रभाव पड़ा। आईएलपी का अधिकांश कार्य समस्याओं के व्यापक वर्ग को संबोधित करता है, क्योंकि फोकस न केवल पुनरावर्ती तर्क कार्यक्रमों पर है, बल्कि तार्किक अभ्यावेदन से प्रतीकात्मक परिकल्पनाओं की मशीन सीखने पर भी है। हालाँकि, पुनरावर्ती प्रोलॉग प्रोग्राम सीखने पर कुछ उत्साहजनक परिणाम मिले जैसे उदाहरण के लिए उपयुक्त पृष्ठभूमि ज्ञान के साथ उदाहरणों से त्वरित सॉर्ट, GOLEM के साथ। लेकिन फिर, प्रारंभिक सफलता के बाद, पुनरावर्ती कार्यक्रमों को शामिल करने के बारे में सीमित प्रगति से समुदाय निराश हो गया   ILP के साथ पुनरावर्ती कार्यक्रमों पर कम से कम ध्यान केंद्रित किया जा रहा है और संबंधपरक डेटा खनन और ज्ञान खोज में अनुप्रयोगों के साथ मशीन लर्निंग सेटिंग की ओर अधिक से अधिक झुकाव हो रहा है। ILP, कोज़ा में काम करने के समानांतर 1990 के दशक की शुरुआत में सीखने के कार्यक्रमों के लिए जनरेट-एंड-टेस्ट आधारित दृष्टिकोण के रूप में प्रस्तावित आनुवंशिक प्रोग्रामिंग। आनुवंशिक प्रोग्रामिंग के विचार को आगे चलकर प्रेरक प्रोग्रामिंग प्रणाली ADATE में विकसित किया गया और व्यवस्थित-खोज-आधारित प्रणाली मैजिकहास्केलर। यहां फिर से, कार्यात्मक कार्यक्रमों को आउटपुट मूल्यांकन (फिटनेस) फ़ंक्शन के साथ सकारात्मक उदाहरणों के सेट से सीखा जाता है जो सीखे जाने वाले प्रोग्राम के वांछित इनपुट/आउटपुट व्यवहार को निर्दिष्ट करता है।

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

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

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

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

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

यह भी देखें

 * विकासवादी प्रोग्रामिंग
 * विवेचनात्मक तार्किकता
 * परीक्षण संचालित विकास

अग्रिम पठन

 * https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/
 * https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/
 * https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/
 * https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/
 * https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/
 * https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/
 * https://web.archive.org/web/20040906084947/http://www-ai.ijs.si/SasoDzeroski/ILPBook/

बाहरी संबंध

 * Inductive Programming community page, hosted by the University of Bamberg.