Probabilistic programming language
|This article relies too much on references to primary sources. (December 2014)|
A probabilistic programming language (PPL) is a programming language specially designed to describe and infer with probabilistic models. PPLs are closely related to graphical models and Bayesian networks, but are more expressive and flexible. Probabilistic programming represents an attempt to "[unify] general purpose programming with probabilistic modeling." 
Probabilistic reasoning is one of the foundational technologies of machine learning. It is used by companies such as Google, Amazon.com, and Microsoft to make sense of the data available to them. Probabilistic reasoning has been used for applications as diverse as predicting stock prices, recommending movies, diagnosing computers, and detecting cyber intrusions. Many of these applications use techniques you will learn in this book.
PPLs often extend from a basic language. The inventors' choices of underlying basic language depend on the similarity of their models to the basic language's ontology, as well as commercial considerations and personal preference. For instance, Dimple and Chimple are based on Java, Infer.NET is based on .NET framework, while PRISM extends from Prolog. However, some PPLs such as WinBUGS and Stan (software) define a self-contained language for their users to use, which is not obviously derived from a predecessor language.
Currently there are several PPLs in active development, some of them have advanced to the beta stage. However because PRMs are new, up to year 2010 there have been no well-known software projects utilizing those languages.
Probabilistic relational programming language
A probabilistic relational programming language (PRPL) is a PPL specially designed to describe and infer with probabilistic relational models (PRMs).
A PRM is usually developed with a set of algorithms for reducing, inference about and discovery of concerned distributions, which are embedded into the corresponding PRPL.
Probabilistic programming is a way to create systems that help make decisions in the face of uncertainty. Probabilistic reasoning combines knowledge of a situation with the laws of probability to determine those unobserved factors that are critical to the decision. Until recently, probabilistic reasoning systems have been limited in scope, and have been hard to apply to many real world situations. Probabilistic programming is a new approach that makes probabilistic reasoning systems easier to build and more widely applicable.
List of probabilistic programming languages
|Name||Extends from||Host language|
|Infer.NET||.NET Framework||.NET Framework|
|dimple ||MATLAB, Java|
|chimple ||MATLAB, Java|
|BAli-Phy (software) ||Haskell||C++|
- Pfeffer, Avrom (2014), Practical Probabilistic Programming, Manning Publications. p.28. ISBN 978-1 6172-9233-0
- Dimple Home Page
- Chimple Home Page
- Infer.NET Home Page
- PRISM Home Page
- BUGS Home Page
- Stan homepage
- Venture Home Page
- Anglican Home Page
- IBAL Home Page
- BLOG Home Page
- PSQL: A query language for probabilistic relational data, D. Dey etc
- FACTORIE Home Page
- PMTK Home Page
- Alchemy Home Page
- Dyna Home Page
- Figaro Home Page
- Church Wiki Page
- ProbLog Home Page
- ProBT Download Page
- Hakaru Home Page
- BAli-Phy Home Page
- ProbCog features wiki
- Tuffy as part of Hazy project