The
idea behind probabilistic programming is that in order to specify a probabilistic
model, the modeler writes a program, often in a functional programming
language, describing how the world is stochastically generated. One advantage
of this approach is that it provides an extremely powerful and general language
for specifying models, with the full expressiveness of programming languages.
Another advantage is that it allows us to utilize the insights developed
through years of programming languages research. A third advantage is that it
is a natural way to describe models for people who know how to program. I
pioneered this approach in a 1987 paper, and today it is gathering a growing
amount of interest, as evidenced by a workshop on this topic at the conference
on Neural Information Processing Systems. In recent years I developed a
language called IBAL, which is a powerful, general purpose functional
probabilistic programming language, whose inference algorithm generalizes and
unifies ideas from a number of different frameworks, including Bayesian
networks, hidden Markov models, and probabilistic context free grammars.
I am now again turning to the issue of dynamics. Modeling dynamics in a probabilistic programming language is extremely appealing because we have the opportunity to make time a first class element of the language. A modeler should be able to specify the passage of time using the same language and constructs as other elements of the model. If we can write a program describing how the world is generated, we should be able to write a program describing how the amount of time taken for things to happen is generated. How can we create expressive models of time in a clear and efficient way?
Selected publications: