annealed_flow_transport
annealed_flow_transport copied to clipboard
Several suggestions re. SMC implementation
- Ineffective option hmc_steps_per_iter has no effect. In markov_kernel.py, there should be a loop and run hmc_steps_per_iter times hmc_wrapped()
- optimization: the normalization/log_solftmax() operation in reweight_no_flow() does not seem to be necessary. The unnormalized weights would be normalized in the end anyway in get_log_normalizer_increment_no_flow()
- optimization: using Eq. (15) in Del Moral, Douce, and Jasra (2006) is more optimal, as many normalization/log_solftmax() and expectation/ logsumexp() operations can be spared in between resampling events. In all the models we ran, only a few (<10) resampling events occurred.
Not sure how much juice one can squeeze out by removing these redundant operations though.
Hi @dblueeye, thank you for pointing out. You mean we can still improve the implementation for SMC?
Yes, as explained in the original post. I'm not sure how much more efficiency one can gain though.