संभाव्य प्रोग्रामिंग

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

संभाव्य प्रोग्रामिंग के लिए उपयोग की जाने वाली प्रोग्रामिंग भाषाओं को संभाव्य प्रोग्रामिंग भाषाएं (पीपीएल) कहा जाता है।

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

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

जनरल (संभाव्य प्रोग्रामिंग) लाइब्रेरी (जूलिया में भी लिखी गई) को दृष्टि और रोबोटिक्स कार्यों पर लागू किया गया है।

हाल ही में, संभाव्य प्रोग्रामिंग प्रणाली ट्यूरिंग.jl को विभिन्न फार्मास्युटिकल और अर्थशास्त्र अनुप्रयोगों में लागू किया गया है।

जूलिया पैकेज Zygote.jl को Turing.jl के साथ जोड़कर जूलिया में संभाव्य प्रोग्रामिंग को अलग-अलग प्रोग्रामिंग के साथ भी जोड़ा गया है।

अनुभूति के मॉडल को विकसित करने और मूल्यांकन करने के लिए बायेसियन संज्ञानात्मक विज्ञान में संभाव्य प्रोग्रामिंग भाषाओं का भी सामान्यतः उपयोग किया जाता है।

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

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

कई पीपीएल सक्रिय विकास में हैं, जिनमें कुछ बीटा परीक्षण में भी सम्मिलित हैं। और दो लोकप्रिय उपकरण स्टेन और PyMC हैं।

संबंधपरक
एक संभाव्य संबंधपरक प्रोग्रामिंग भाषा (पीआरपीएल) पीपीएल है जिसे विशेष रूप से संभाव्य संबंधपरक मॉडल (पीआरएम) का वर्णन और अनुमान लगाने के लिए डिज़ाइन किया गया है।

एक पीआरएम सामान्यतः संबंधित वितरणों को कम करने, अनुमान लगाने और खोज के लिए एल्गोरिदम के सेट के साथ विकसित किया जाता है, जो संबंधित पीआरपीएल में एम्बेडेड होते हैं।

संभाव्य प्रोग्रामिंग भाषाओं की सूची
यह सूची वर्तमान में उपलब्ध लोगों की विविधता का सारांश प्रस्तुत करती है, और उनकी उत्पत्ति को स्पष्ट करती है।

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

यह भी देखें

 * सांख्यिकीय संबंधपरक शिक्षा
 * आगमनात्मक प्रोग्रामिंग
 * बायेसियन प्रोग्रामिंग
 * प्लेट संकेतन

बाहरी संबंध

 * List of Probabilistic Model Mini Language Toolkits
 * Probabilistic programming wiki