AutoBayes -- A DSL For Bayesian Networks

Bayesian networks are one of the most important formalisms in contemporary machine learning. Given the structure of a network there are a number of well established inference algorithms, but the algorithms are quite involved to implement and applications are typically very performance sensitive. Hence the programmer faces a dilemma: quickly implement a solution in a high level language and suffer extended run time or grub around in C or Fortran for weeks but achieve good performance. This is a perfect application area for a DSL to neatly solve this dilemma, and this is exactly what AutoBayes does. Specify a high level description of the network and it generates high performance C++ code to solve it.

If you find this interesting you will also be interested in the links between probability theory and monads. Eric Kidd has had a great series of blog posts on this theme, and sigfpe has also posted on this theme. Those crazy academics have also been getting in on the action!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

The Drawback

Let me just mention the biggest problem with systems like AutoBayes:

Although there are reasonable general purpose algorithms, for a given class of networks there are typically much better special purpose algorithms. Additionally, a great deal of the current work is spent developing better algorithms. Hence tools like AutoBayes quickly become out of date. To give a system like AutoBayes the flexibility to encode just about any algorithm would require a great deal of work, and I don't see how it can be done without effectively making it a general purpose programming language, which then makes the compilation problem exponentially harder.

In other words...

... wouldn't it have been better to write AutoBayes as an Embedded DSL?

I mention this because my (unsuccessful) application to Google Summer of code was not too far from this idea: An Embedded DSL for Hidden Markov Models in Haskell. I'm not bitter....

Just came across this comment

An Embedded DSL for Hidden Markov Models in Haskell

I'm always at the trailing edge. I just took the first step towards something like that here. The last example is essentially the Viterbi algorithm. But it sounds like you've already been thinking along these lines. I found it interesting that the min-sum rule becomes a monadic bind.

Re: The Drawback

Hence tools like AutoBayes quickly become out of date.

Indeed, the paper was from 2003 (would be nice to mention the publication date in the story), and I can't find a project page for it. Is it dead?

Sorry if this comes off as overly critical. I do find the topic interesting. I think all front page submissions should have a date field filled in. It seems that many of the front page submissions have been missing this lately.

Main author has moved

One of the main authors, Bernd Fischer, has moved to Southhampton. He has continued the general research direction, but I don't know if AutoBayes itself is continuing.