5 ms·
From my robotics point of view, probabilistic programming looks really attractive, and this paper seems to give very interesting/neat examples for control and K
by jefft255 6y ago
From my robotics point of view, probabilistic programming looks really attractive, and this paper seems to give very interesting/neat examples for control and Kalman filtering.
I wonder what has prevented these languages from being widely adopted by the robotics community? My suspicion is that it's always easier to work with general purpose languages, but even then "probabilistic programming libraries" for Python, e.g. Pyro or Edward, haven't really taken off either... Most people write SLAM algorithms in C++ and don't pay much attention to what the PPL people are doing.
- ssivark 6y agoI think we're still on the path to making (efficient) inference work for broader classes of problems (expressive problem formulation). One of the most interesting recent projects I've come across is "Gen" by the probcomp group at MIT (BTW, a lot of interesting work related to PPL seems to be happening in the Julia language).
- mccoyb 6y agoI’m happy someone mentioned the community in Julia! We’re always looking for interested people to join and try out some of the systems. For easy access to some of the active PP frameworks: Turing.jl https://turing.ml/dev/ https://turing.ml/dev/ Gen.jl https://www.gen.dev/ https://www.gen.dev/ Soss.jl https://github.com/cscherrer/Soss.jl https://github.com/cscherrer/Soss.jl Jaynes.jl https://github.com/femtomc/Jaynes.jl https://github.com/femtomc/Jaynes.jl Why so many? The design space is just beginning to be well-explored! And the community has welcomed experimentation! Gen.jl and Jaynes.jl are research projects aiming to push the boundary of what you can express inside a PP framework - inference here is sample-based, with incremental computation providing most of the optimization. Gen.jl is much more mature than the latter (which I develop) and has tons of great and thought-provoking documentation. Turing.jl is also very mature, and they have a great number of resources showing how to express a number of classic models in their language, as well as how to compose sampling-based inference algorithms. The Turing folks also implemented the de-facto version of HMC in Julia https://github.com/TuringLang/AdvancedHMC.jl https://github.com/TuringLang/AdvancedHMC.jl. Soss.jl is also very cool - and works by AST re-writing - with cool functionality integration from SymPy in Python. I’m not sure the state of the docs for Soss.jl - but the researchers for each of these systems are always willing to discuss the systems on the Julia Slack or Zulip!
- cf 6y agoThe reason Julia is a good fit is it has both good numerics support (arrays, matrices, autodiff, samplers, etc) and good metaprogramming support. Probabilistic programming systems really need both to feel natural and well-integrated while still being able to have nice inference algorithms. A PPS in an environment without those two things is at a disadvantage.
- nightski 6y agoI am pretty new to all of this but I get the impression that Stan and PyMC3 are the leaders in this area and I don't see them as having great meta-programming support. Maybe I am wrong? Are they currently hitting limitations in that regard? Or is this in a particular area of PPL such as non-parametrics?
- FridgeSeal 6y agoI don't know quite enough about the field, but it's possible they're the leaders (like Python) because they're just "good enough" and they were the best options widely available when they were adopted + took off?
- cf 6y agoThe reality is that most of a modelling task is preprocessing your data before it can be passed to a probabilistic model and postprocessing to make decisions using it. The code is usually written in R or Python so there is a strong pressure for your library to be in that language as well. And being rough around the edges is an ok price to pay for not losing an ecosystem.
- bacr 6y agoMy take is that most modern PPLs have language bindings in JavaScript/Python/R because they are explicitly courting analysts/data-scientists/applied-statisticians, or they are taking advantage of modern technical stacks implementing auto-diff and co-processor routines. Most pre- and post- processing (with the exception of visualization) should probably be a part of your model!
- kbumsik 6y agoMost of them are from engineering fields, not from computer science. Their interest is designing and implementing engineering models rather than programming itself. So they are not as adventurous as computer science guys in investing new programming tools (languages). Also, I am pretty sure more than 90% of them have never learned functional programming or related computational theories, even in schools.
- jefft255 6y agoYou're answering to a guy who's been in 2 computer science labs focused on robotics! It is true that a lot of people have an EE/ME background, but I think you'd be surprised at the amount of CS people in robotics. Especially in SLAM which I mentioned, given that this is a probabilistic inference problem.