Probabilistic programming: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
Tag: references removed
Line 4:
 
 
'''Probabilistic programming''' ('''PP''') is a [[programming paradigm]] in which [[probabilistic model]]s are specified and inference for these models is performed automatically. It represents an attempt to unify probabilistic modelling and traditional general-purpose programming in order to make the former easier and more widely applicable.<ref name=physorg>{{cite newsweb|url=http://probabilistic-programming.org/wiki/Home|title=Probabilistic Programming|work=probabilistic-programming.org}}</ref> It can be used to create systems that help make decisions in the face of uncertainty.
| url=http://phys.org/news/2015-04-probabilistic-lines-code-thousands.html
| title=Probabilistic programming does in 50 lines of code what used to take thousands
| work=phys.org
| date=April 13, 2015
| accessdate=2015-04-13 }}
</ref> It represents an attempt to unify probabilistic modeling and traditional general purpose programming in order to make the former easier and more widely applicable.<ref>{{cite web|url=http://probabilistic-programming.org/wiki/Home|title=Probabilistic Programming|work=probabilistic-programming.org}}</ref><ref name="Pfeffer2014">Pfeffer, Avrom (2014), ''Practical Probabilistic Programming'', Manning Publications. p.28. {{ISBN|978-1 6172-9233-0}}</ref> It can be used to create systems that help make decisions in the face of uncertainty.
 
Programming languages used for probabilistic programming are often referred to as "Probabilistic programming languages" (PPLs). However many PPLs are simple extensions of existing programming languages with modelling and inference functionalities. More specifically, PPLs often consists of two parts: a frontend ___domain-specific language (DSL) for specifying probabilistic models, and a backend inference engine implementing common inference algorithms. Frontend DSLs often extend from a basic language. The choice of underlying basic language depends on the similarity of the model to the basic language's [[Ontology (information science)|ontology]], as well as commercial considerations and personal preference. For instance, [[Infer.NET]] is based on [[.NET framework|.NET]].<ref name="INFET"/> However, some PPLs such as [[WinBUGS]] and [[Stan (software)|Stan]] offer a self-contained language, with no obvious origin in another language.<ref name="BUGS"/><ref name="Stan"/> The choice of backend inference algorithms can often be categorised into gradient-based inference (e.g. [[Hamiltonian Monte Carlo]]), simulation-based inference (e.g. [[Approximate Bayesian Computation]], [[Particle filter | Sequential Monte Carlo]]), and graph-based inference (e.g. Gibbs sampling in [[WinBUGS]], Message Passing).