अनुमान इंजन

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

वास्तुकला
एक अनुमान इंजन जिस तर्क का उपयोग करता है उसे आम तौर पर IF-THEN नियमों के रूप में दर्शाया जाता है। ऐसे नियमों का सामान्य प्रारूप IF <लॉजिकल एक्सप्रेशन> THEN <लॉजिकल एक्सप्रेशन> है। विशेषज्ञ प्रणालियों और अनुमान इंजनों के विकास से पहले, कृत्रिम बुद्धिमत्ता शोधकर्ताओं ने अधिक शक्तिशाली प्रमेय-सिद्धकर्ता वातावरण पर ध्यान केंद्रित किया, जो प्रथम-क्रम तर्क के अधिक पूर्ण कार्यान्वयन की पेशकश करता था। उदाहरण के लिए, सामान्य कथन जिनमें सार्वभौमिक परिमाणीकरण शामिल है (सभी एक्स के लिए कुछ कथन सत्य हैं) और अस्तित्वगत परिमाणीकरण (कुछ एक्स मौजूद हैं जैसे कि कुछ कथन सत्य हैं)। शोधकर्ताओं ने जो पाया वह यह है कि इन प्रमेय-सिद्ध करने वाले वातावरणों की शक्ति भी उनकी खामी थी। 1965 में, तार्किक अभिव्यक्तियाँ बनाना बहुत आसान था जिसे समाप्त होने में अनिश्चित या अनंत समय लग सकता था। उदाहरण के लिए, सार्वभौमिक परिमाणीकरण में सभी प्राकृतिक संख्याओं के सेट जैसे अनंत सेट पर बयान देना आम बात है। इस तरह के कथन पूरी तरह से उचित हैं और गणितीय प्रमाणों में भी आवश्यक हैं, लेकिन जब कंप्यूटर पर निष्पादित होने वाले स्वचालित प्रमेय प्रोवर में शामिल किया जाता है तो कंप्यूटर अनंत लूप में गिर सकता है। IF-THEN कथनों (जिसे तर्कशास्त्री मूड सेट करना कहते हैं) पर ध्यान केंद्रित करने से अभी भी डेवलपर्स को तर्क का प्रतिनिधित्व करने के लिए एक बहुत शक्तिशाली सामान्य तंत्र मिला है, लेकिन एक जिसे कम्प्यूटेशनल संसाधनों के साथ कुशलतापूर्वक उपयोग किया जा सकता है। इससे भी अधिक, कुछ मनोवैज्ञानिक शोध हैं जो इंगित करते हैं कि मनुष्य भी जटिल ज्ञान संग्रहीत करते समय IF-THEN प्रतिनिधित्व का पक्ष लेते हैं। परिचयात्मक तर्क पुस्तकों में अक्सर उपयोग किए जाने वाले मोडस पोनेन्स का एक सरल उदाहरण है यदि आप मानव हैं तो आप नश्वर हैं। इसे छद्मकोड में इस प्रकार दर्शाया जा सकता है:

नियम 1: मानव(x) => नश्वर(x)

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

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

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

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

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

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

मुक्त स्रोत कार्यान्वयन
clipsRules और RefPerSys (CAIA से प्रेरित) और जैक्स पिट्रैट का काम)। [https://frama-c.com/ Frama-C स्थिर स्रोत कोड विश्लेषक कुछ अनुमान इंजन तकनीकों का भी उपयोग करता है।

यह भी देखें

 * ज्यामितीय और टोपोलॉजिकल अनुमान
 * कार्य चयन
 * पिछली जंजीर
 * विशेषज्ञ प्रणाली
 * आगे की ओर जंजीर लगाना
 * आगमनात्मक अनुमान