Automated learning with a probabilistic programming language: Birch
  This work offers a broad perspective on probabilistic modeling and inference
in light of recent advances in probabilistic programming, in which models are
formally expressed in Turing-complete programming languages. We consider a
typical workflow and how probabilistic programming languages can help to
automate this workflow, especially in the matching of models with inference
methods. We focus on two properties of a model that are critical in this
matching: its structure---the conditional dependencies between random
variables---and its form---the precise mathematical definition of those
dependencies. While the structure and form of a probabilistic model are often
fixed a priori, it is a curiosity of probabilistic programming that they need
not be, and may instead vary according to random choices made during program
execution. We introduce a formal description of models expressed as programs,
and discuss some of the ways in which probabilistic programming languages can
reveal the structure and form of these, in order to tailor inference methods.
We demonstrate the ideas with a new probabilistic programming language called
Birch, with a multiple object tracking example.
