Я только что начал проект, в котором мне нужно сделать выборку из многомерного (сейчас ~ 10 ^ 3-мерного, но должен перейти к ~ 10 ^ 6) и сильно негауссовского апостериорного распределения с помощью гамильтониана Монте-Карло (HMC) пробоотборник. В моем конкретном случае градиенты потенциала могут быть вычислены аналитически, а массовая матрица может быть грубо аппроксимирована. Насколько я понимаю, большинство пакетов вероятностного программирования (например, stan, tf.probability, edward, pymcx, ...) используют какой-то численный/стохастический градиентный расчет/аппроксимацию, который может занимать больше времени, а также менее эффективен для конвергенция.
Прямо сейчас у меня есть очень наивная реализация Python в виде этого псевдокода, который это способ замедлить многомерные вычисления. Знаете ли вы, существуют ли какие-либо модификации этого алгоритма, повышающие производительность, или уже есть хорошие и быстрые пробоотборники, которые явно учитывают эти аналитические результаты?