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