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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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

बाहरी संबंध

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