Вероятность
Монте-Карло
Интеграл как ожидание, несмещённость против дисперсии, и почему importance sampling не хитрость
Интеграл — это ожидание
Метод Монте-Карло целиком стоит на одном переписывании: любой интеграл можно прочитать как ожидание, а ожидание — оценить средним.
Смысл этого хода в том, что
Два свойства оценки
Несмещённость. по линейности ожидания — при любом , даже при . Оценка по одному сэмплу уже несмещена. Это то, на чём стоит SGD: один минибатч даёт несмещённую оценку градиента.
Дисперсия. для независимых сэмплов. Отсюда стандартная ошибка : чтобы получить лишний десятичный знак, нужно в сто раз больше сэмплов. Скорость — не недостаток реализации, а свойство метода, и обойти её можно только уменьшив числитель.
Здесь и появляется урок предыдущего шага в новом виде. Несмещённость у нас есть бесплатно; вся работа — в дисперсии.
Когда несмещённость бесполезна
Возьмём задачу, где это видно без всякой философии: оценить для . Оценка — доля сэмплов, попавших в хвост, и она безупречно несмещена.
При в хвост попадает один сэмпл из . Взяв сэмплов, вы с вероятностью не поймаете ни одного и получите ответ ровно нуль. Оценка при этом сообщит нулевую стандартную ошибку — то есть «», ответ, ошибочный на и не подающий никаких признаков беды.
Виджет открыт как раз в этой конфигурации: , сэмплов.
- попаданий в хвост
- 0 / 500
- наивная MC · оценка
- 0.000e+0
- наивная MC · ст. ошибка
- 0.00e+0
Importance sampling
Идея: сэмплировать из другого распределения , которое чаще заглядывает туда, где не равно нулю, и исправить перекос весами.
Всё преобразование — умножить и поделить на . Отношение
называется
Включите тумблер в виджете. При с предложением оценка попадает в против истины , и её стандартная ошибка — , тогда как у наивной оценки её просто нет.
Выигрыш по дисперсии на один сэмпл, посчитанный точно:
| выигрыш при | ||
|---|---|---|
Чем реже событие, тем больше выигрыш — то есть importance sampling помогает тем сильнее, чем безнадёжнее наивный подход.
Выбор — это вся сложность
Метод несмещён при любом с достаточным носителем, но дисперсия зависит от резко. Подвигайте слайдер сдвига при :
| сдвиг | выигрыш по дисперсии |
|---|---|
| (это и есть наивная MC) | |
Оптимум около , и уход в обе стороны портит дело. Слишком маленький сдвиг возвращает исходную проблему. Слишком большой создаёт новую: сэмплирует далеко в хвост, где огромно, и оценку начинают определять несколько сэмплов с гигантскими весами.
Два правила, которые из этого следуют:
- носитель должен покрывать носитель . Если там, где , оценка смещена, и никакое этого не исправит — вклад этой области просто не может появиться;
- тяжёлые хвосты у безопаснее лёгких. Ошибка « уже, чем » даёт неограниченные веса и бесконечную дисперсию; ошибка « шире, чем нужно» стоит лишь части эффективности.
Практический индикатор — эффективный размер выборки
Если из тысячи сэмплов равно десяти, вы фактически считаете по десяти точкам, что бы ни показывала формальная стандартная ошибка. В байесовском выводе это стандартная диагностика, и смотреть на неё нужно раньше, чем на сам ответ.
Где это встретится дальше
Importance sampling — не приём для хвостовых вероятностей, а несущая конструкция:
- off-policy RL: оценить отдачу политики по данным, собранным политикой . Веса — , и клипование этих весов есть буквально PPO;
- ELBO: ожидание по вместо недоступного — блок 4;
- оценка перплексии и нормировок в моделях, где сумма по словарю неподъёмна.
Во всех трёх случаях структура одна: считать ожидание по неудобному распределению через удобное, платя весами.
Источники
- MacKay — Information Theory, Inference, and Learning Algorithms, гл. 29 — Монте-Карло и importance sampling
- Owen — Monte Carlo theory, methods and examples, гл. 2, 9 — Дисперсия оценок, importance sampling
Проверки
0 из 2Свойства оценки Монте-Карло
Отметьте все верные утверждения об оценках Монте-Карло и importance sampling.
Диагностика importance sampling
Вам даны веса
weights() и значенияvalues(), посчитанные на одних и тех же сэмплах из .Реализуйте
importance_stats(weights, values)— верните список[estimate, variance, n_eff, efficiency]:estimate= — сама оценка;variance= — разброс слагаемых, делитель ;n_eff= — эффективный размер выборки;efficiency=n_eff / n.
Проверить себя можно так: обязан лежать в и равняться ровно тогда и только тогда, когда все веса одинаковы. Если у вас получилось больше , перепутаны числитель и знаменатель.
Загрузка редактора…
Ctrl/⌘ + Enter