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
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).
|