Probabilistic Programming Language

From GM-RKB
(Redirected from PPL)
Jump to navigation Jump to search

A Probabilistic Programming Language is a programming language that can naturally describe and infer with probabilistic models.



References

2015

  • (Goodman & Andreas, 2015) ⇒ Noah D. Goodman, and Andreas Stuhlmüller. (2014). “The Design and Implementation of Probabilistic Programming Languages."
    • ABSTRACT: Probabilistic programming languages (PPLs) unify techniques for the formal description of computation and for the representation and use of uncertain knowledge. PPLs have seen recent interest from the artificial intelligence, programming languages, cognitive science, and natural languages communities. This book explains how to implement PPLs by lightweight embedding into a host language. We illustrate this by designing and implementing WebPPL, a small PPL embedded in Javascript. We show how to implement several algorithms for universal probabilistic inference, including priority-based enumeration with caching, particle filtering, and Markov chain Monte Carlo. We use program transformations to expose the information required by these algorithms, including continuations and stack addresses. We illustrate these ideas with examples drawn from semantic parsing, natural language pragmatics, and procedural graphics.

2014

  • (Wikipedia, 2014) ⇒ http://en.wikipedia.org/wiki/probabilistic_programming_language Retrieved:2014-9-21.
    • A probabilistic programming language (PPL) is a programming language specially designed to describe and infer with probabilistic models.

      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.