Вероятность
Практика: EM и сэмплирование
Смесь гауссиан через EM, условные распределения и три способа посчитать одно ожидание
Скрытая переменная
Смесь гауссиан — это модель с латентной переменной. Каждая точка пришла из одной из компонент, но из какой именно, мы не наблюдаем:
Если бы принадлежность была известна, задача распалась бы на независимых MLE — по формулам из урока 120, каждая в одну строку. Вся трудность именно в том, что скрыта, а сумма внутри логарифма не позволяет разделить слагаемые: не раскладывается так, как раскладывается .
EM: два шага, которые никогда не ухудшают ответ
Ключевое свойство: log-правдоподобие не убывает ни на одной итерации. Это теорема, а не эмпирическое наблюдение, и она даёт бесплатную проверку реализации — если ваш лосс дёрнулся вверх, в коде ошибка. На семи точках сходимость выглядит так:
| итерация | |||
|---|---|---|---|
Шесть итераций до пяти значащих цифр. EM сходится быстро в начале и медленно в конце — это его характерное поведение: он не использует градиент и не имеет скорости обучения, зато каждый шаг гарантированно не вреден.
В блоке 4 мы увидим, что EM — это координатный подъём по ELBO: E-шаг максимизирует по , M-шаг — по параметрам. Монотонность станет очевидной, а не удивительной.
Вырожденное решение
У правдоподобия смеси есть неприятное свойство: оно не ограничено сверху. Посадите одну компоненту точно на одну точку и стягивайте её дисперсию к нулю:
| компоненты | плотность в точке | |
|---|---|---|
Сравните с честным оптимумом : начиная примерно с вырожденное решение лучше по правдоподобию, а дальше уходит в .
То есть глобального максимума у этой задачи просто нет, и «найти MLE» здесь — некорректно поставленная задача. Что с этим делают на практике:
- нижняя граница на дисперсию (
reg_covarв scikit-learn — по умолчанию ); - prior на , то есть переход к MAP — обратное распределение Уишарта штрафует малые дисперсии;
- перезапуск компоненты, которая схлопнулась.
Все три — способы обойти отсутствие максимума, а не улучшить оптимизацию. И это третий раз в блоке, когда prior не подкручивает ответ, а делает задачу разрешимой: первый был ноль успехов из четырёх, второй — разделимые данные в логистической регрессии.
Условные распределения гауссианы
Для двумерной гауссианы и E-шага, и предсказание при частично известном входе делаются одной формулой:
Поставьте срез в виджете и подвигайте . Два наблюдения стоят того, чтобы их сделать самому:
- маргинальное ст. откл.
- 1
Первое: условная дисперсия всегда не больше маргинальной и не зависит от того, где именно стоит срез. Множитель — это доля дисперсии, которая остаётся необъяснённой; при остаётся , при — . Знакомая величина: — это в точности из линейной регрессии.
Второе: условное среднее — линейная функция . Отсюда факт, который стоит держать в голове: линейная регрессия оптимальна не потому, что мир линеен, а потому, что для совместно гауссовских величин условное ожидание в самом деле линейно. Как только совместное распределение перестаёт быть гауссовым, это перестаёт быть верным.
Что делать руками
- EM для смеси с нуля. Одномерный случай, две компоненты, семь точек из таблицы выше. Логируйте на каждой итерации и проверяйте монотонность assert’ом — это лучший тест на корректность E-шага.
- Воспроизведите вырождение. Инициализируйте одну компоненту в точке данных с
и убедитесь, что EM охотно уходит туда, а растёт без
предела. Затем добавьте
reg_covarи посмотрите, что изменится. - Сравните с -means. Прогоните оба на одном облаке. -means — это предельный случай EM, где ответственности округляются до и , а дисперсии считаются равными и фиксированными. Убедитесь, что на вытянутых кластерах он проигрывает.
- Три способа посчитать одно ожидание. Возьмите для (ответ ) и посчитайте: наивным Монте-Карло, importance sampling с , и точно. Сравните стандартные ошибки при том же — и заодно проверьте, что у второго способа меньше .
- Условные распределения численно. Сгенерируйте точек из двумерной гауссианы с , отберите те, у которых , и сравните их выборочные среднее и дисперсию с формулами выше. Совпасть должно до двух знаков.
- Соберите блок целиком. Логистическая регрессия из прошлого урока обучалась MLE. Добавьте к ней L2, то есть гауссов prior, и убедитесь, что это тот же из урока про MAP. Один вывод, три урока.
Источники
- Bishop — Pattern Recognition and Machine Learning, гл. 9 — Смеси гауссиан, EM, вырожденные решения
- Dempster, Laird, Rubin — Maximum Likelihood from Incomplete Data via the EM Algorithm — Оригинальная статья про EM
Проверки
0 из 2EM, смеси и условные распределения
Отметьте все верные утверждения.
Один шаг EM
Реализуйте одну итерацию EM для одномерной смеси двух гауссиан:
em_step(xs, pi0, mu0, mu1, var0, var1)— верните[loglik, new_pi0, new_mu0, new_mu1, new_var0, new_var1].E-шаг — ответственность первой компоненты за точку :
loglik= — сумма, не среднее, и считается она по старым параметрам, до обновления.M-шаг, где и :
и симметрично для второй компоненты с весами . Дисперсию считайте вокруг нового среднего.
Плотность: .
Загрузка редактора…
Ctrl/⌘ + Enter