4 ms·
JAGS defined the optimizers you're allowed to use for you. Its MCMC algorithm is what you get. For simple problems, that works, but in many complex cases you mi
by ChrisRackauckas 7y ago
JAGS defined the optimizers you're allowed to use for you. Its MCMC algorithm is what you get. For simple problems, that works, but in many complex cases you might want have to tweak things to make them work. For example, you may want to make it explore the space more easily at first, and then fix to a few discrete variables to find the max of some variables, then jiggle all a little bit in that area. The authors of Gen were really keen about this ability to tweak when I talked to them, and it's a core capability of Gen. They showed cases which wouldn't converge in other systems because they were lacking this ability to take user input. This is probably the biggest change from previous iterations like JAGS, Stan, PyMC3, Turing.jl, etc.
And then the dynamic compiler mode uses AD to work with Julia packages, so you can easily set it up to do Bayesian inference on neural (Flux.jl) partial differential equations with high order adaptive implicit integrators with DifferentialEquations.jl, which is why I am starting to use this library :). At the same time, there is also a static compiled sublanguage of Gen which is extremely fast (but cannot use arbitrary Julia packages of course).