Вариационный вывод по сравнению с MCMC: когда выбрать один из других?

37

Я думаю, что я получил общее представление о VI и MCMC, включая различные разновидности MCMC, такие как выборка Гиббса, Metropolis Hastings и т. Д. Эта статья представляет собой прекрасное изложение обоих методов.

У меня есть следующие вопросы:

  • Если я хочу сделать байесовский вывод, почему я выбрал бы один метод вместо другого?
  • Каковы плюсы и минусы каждого из методов?

Я понимаю, что это довольно широкий вопрос, но любые идеи будут высоко оценены.

kedarps
источник

Ответы:

35

Для подробного ответа смотрите Блей, Кукукельбир и Маколифф здесь . Этот короткий ответ в значительной степени вытекает из этого.

  • MCMC асимптотически точен; VI нет . В пределе MCMC будет точно приближаться к целевому распределению. VI поставляется без гарантии.
  • MCMC вычислительно дорог . В общем, VI быстрее.

То есть, когда у нас есть время для вычисления и оценки точности наших оценок, MCMC побеждает. Если мы можем смириться с тем, чтобы пожертвовать этим ради целесообразности - или мы работаем с такими большими данными, что мы должны сделать компромисс - VI - это естественный выбор.

Или, как более красноречиво и подробно описано авторами, упомянутыми выше:

Таким образом, вариационный вывод подходит для больших наборов данных и сценариев, где мы хотим быстро изучить множество моделей; MCMC подходит для небольших наборов данных и сценариев, в которых мы с радостью платим более высокие вычислительные затраты за более точные выборки. Например, мы могли бы использовать MCMC в условиях, когда мы потратили 20 лет на сбор небольшого, но дорогого набора данных, где мы уверены, что наша модель подходит и где нам требуются точные выводы. Мы можем использовать вариационный вывод при подборе вероятностной модели текста для одного миллиарда текстовых документов и в тех случаях, когда эти выводы будут использоваться для предоставления результатов поиска большому количеству пользователей. В этом сценарии мы можем использовать распределенные вычисления и стохастическую оптимизацию для масштабирования и ускорения вывода, и мы можем легко исследовать множество различных моделей данных.

Шон Пасха
источник
Я думаю, что Stan - самое быстрое программное обеспечение для MCMC (NUTS). Какой самый быстрый (или более мощный) способ сделать вариационный вывод?
Скан
3
@skan Замечательный вопрос! Самое близкое, что я видел к программному обеспечению общего назначения, - это Эдвард , хотя я сам не использовал его. (Многие приложения VI являются пользовательскими, так как они выводят алгоритм, соответствующий конкретной интересующей модели.)
Шон Пасха,
2
Стэн также поддерживает VI. Единственным ограничением stan является то, что он не может выбирать дискретные переменные.
RJTK
Кроме того, я не верю, что Стэн запускает ADVI на GPU ... в любом случае. Наиболее быстрым программным обеспечением для вариационного вывода, вероятно, является TensorFlow Probability (TFP) или Pyro, оба построены на высокооптимизированных средах глубокого обучения (например, CUDA). TFP вырос из ранней работы над Эдвардом Дастина Трана, который сейчас, я думаю, возглавляет TFP в Google.
Адам Эриксон
@AdamErickson FYI: Стэн постепенно начинает использовать графические процессоры arxiv.org/abs/1907.01063
Тим