Hacker News new | past | comments | ask | show | jobs | submit login
Design and Implementation of Probabilistic Programming Languages (dippl.org)
74 points by adamnemecek on Sept 3, 2016 | hide | past | favorite | 8 comments



Is anyone here knowledgeable enough about all the Probabilistic Programming languages and frameworks to give me a 'real world' run down? Like there's quite a few of them and I'm not sure how they all perform IRL. I'm somewhat familiar with PyMC, Stan, Figaro but I'm still not quite understanding all the differences (are there any major ones even?)?

I know that Stan is like the most production ready one right now but it's also somewhat large. This project seems much more tractable.

There's a whole list here http://probabilistic-programming.org/wiki/Home and I'm not sure which ones are like "real projects" that can be used in production and which ones are like toy/research projects and I'm not sure if they all interpret the idea of probabilistic programming fundamentally differently or if they are all just flavors.


It depends on what you are looking for in a probabilistic programming system. If you want something that is more of a library than a language you gain the advantages of being integrated into a mainstream language. This would point to systems like Figaro, PyMC, Edward and Anglican. If you don't mind a standalone language you can choose systems like WebPPL, Hakaru, Stan, or Venture. There are tradeoffs in expressivity as well. There are probabilistic models you can express in WebPPL or Anglican that you can't in Stan. Also different systems support different inference algorithms. So if you want to do something like Latent Dirichlet Allocation, I think JAGS still does better than Stan using a naive implementation. At the current time, to use these systems productively, you should have some idea of what model you want to write and given your data what inference methods you expect to work with that model.

I think Figaro, Stan and PyMC are the most "production-ready" in the sense they have been used for projects outside the realms of their creators. Still I would argue on some level all of them are research projects that aim to explore how to make probabilistic modeling more accessible to people. Ideas in one language often will appear in another down the line. So I encourage to explore a few of them and reach out to the people working on them.


Thanks for the answer.I think that you might have some answers for questions I'm trying to answer. Do you think that we could chat about this over email? My email is <username>@gmail.com.


Sure. I will also continue to answer any questions others have about these systems on this thread.


What work has been done in optimizing code / sampling?

My understanding is that if I write e.g. an HMM in any of these languages, the resulting code will be suboptimal in performance and accuracy vs e.g. Viterbi.


So there has been work done in compiling probabilistic programs directly into C or C++ [1]. Your intuition is correct that in many of these languages if you wrote an HMM and did MAP inference over it you wouldn't recover the Viterbi algorithm, but there is some code in WebPPL[2] that handles this case as outlined in https://arxiv.org/abs/1206.3555.

[1] https://web.stanford.edu/~ngoodman/papers/aistats2014-shred....

[2] http://docs.webppl.org/en/master/inference/methods.html#enum...


It seems like sampling based inference approaches are the most common. Could you possibly comment on the current state of the art regarding more analytical approaches? I sometimes deal with problems where it's possible to find closed form solutions but they're very painstaking to find by hand and can be extremely complicated. It would be incredible if a PPL compiler were able to do this grunt work and then produce code that could compute desired quantities directly.


There are two lines of research in this direction. So there is work from my lab [1] and some folks at ETH-Zurich [2] is automatically finding closed form solutions. These when used do give performance equivalent to handwritten methods.

Beyond that we are seeing some cool stuff with Blackbox Variational Inference [3] and other Automatic Variational [4] solvers coming out of Blei's lab. At present these capabilities are spread about the different system but I expect all them to eventually end up available in whichever you choose to use.

[1] http://homes.soic.indiana.edu/ccshan/rational/simplify-padl....

[2] http://www.srl.inf.ethz.ch/papers/psi-solver.pdf

[3] http://www.cs.columbia.edu/~blei/papers/RanganathGerrishBlei...

[4] http://arxiv.org/pdf/1603.00788v1.pdf




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: