>> Firstly -- let's forget about finding modes. HMC is never going to be good at transitioning between nodes even if we can find them.
>
> We're not trying to find all the modes, it's just one of
> the motivations for using R-hat. If different chains are
> stuck in different modes, there's not mixing.
Sure, but making any suggestion that we can find all modes, or even some modes, by trying lots of different initialization values is a bit of a false flag. Once you're trying to deal with mode finding you really want a global, compressive algorithm like nested sampling (perhaps tempering or annealing if you have a particularly well-behaved model) and not a local algorithm like MCMC.
>> Consequently the main advantage of multiple starting points is to ensure that either our adaptation hasn't gone awry or we're not missing parts of the distribution with significantly different curvature (for example, the triangle or the Cauchy). I would argue that most of the problems we're seeing are due to bad adaptation and the multiple starting point is doing exactly what it should. In particular, I really like how the combined approach of putting more thought into the initializations and choosing better priors has proved so useful. Better models for a better tomorrow!
>>
>> On the other hand, if we really do have a model with very different curvature (again, think triangle or Cauchy) then running with many small chains and ignoring those with small ESS can hide that fact and the false belief that everything is automatic could lead to bias.
>
> This is what I'm worried about. We get the same problem if we don't
> choose an init point and get stuck.
Right, but it's easier to diagnose if we run a few chains for a while. My concern with lots of little chains is that there'd be so much Monte Carlo noise that you won't be able to diagnose anything. Give that we're seeing lots of chains getting stuck in initial models with only four chains, it seems like a reasonable choice.
>> Personally I think the best way forward is to improve the adaption. The first easy fix is to add a period of adaptation-free warmup (which I've been playing with on and off since coming to London but just haven't had time to run significant tests). Then, once the higher-order autodiff is ready, we can starting using a running average of the SoftAbs metric instead of estimating the global covariance.
>
> Until then, what do we do? What I think users will do is keep
> running until none of the chains are stuck. It's what I'd do.
>
> If that introduces bias, we need to warn users not to do it.
>
> And then to do what, instead?
I think we've had lots of success in the past few days with the usual suggestions -- think of your model more deeply and consider either better initialization (yes, this can potentially lead to bias so it's not perfect) and better priors that clean up the tail behavior. To channel Andrew, "Folk theorem folk theorem folk theorem." ;-)