Я разрабатываю алгоритм выборки Гибридного Монте-Карло для PyMC , и я стараюсь сделать его максимально беспроблемным и общим, поэтому я ищу хороший совет по разработке алгоритма HMC. Я прочитал главу обзора Рэдфорда и Beskos et. В недавней статье al. об оптимальной (размер шага) настройке HMC я собрал следующие советы:
- Переменные импульса должны распределяться с ковариацией , где C обычно является чем-то вроде ковариационной матрицы распределения (для простых распределений), но, возможно, может быть иным (для распределений смешной формы). По умолчанию я использую гессиан в режиме.
- Траектории должны быть рассчитаны с помощью метода скачка (другие интеграторы, кажется, не стоят того)
- Оптимальный коэффициент принятия составляет 0,615 для действительно больших проблем и в противном случае выше.
- Размер шага должен быть масштабирован , как , где L является свободной переменной , и d представляет число измерений.
- Размер шага должен быть меньше, если есть легкие хвосты или другие области с нечетными характеристиками устойчивости. В этом может помочь рандомизация размера шага.
Есть ли другие идеи, которые я должен принять или, по крайней мере, рассмотреть? Другие документы, которые я должен прочитать? Например, существуют ли алгоритмы адаптивного размера шага, которые того стоят? Есть хороший совет по длине траектории? Есть ли на самом деле лучшие интеграторы?
Кто-нибудь, пожалуйста, сделайте это вики-сообществом.
источник