Вероятность
Совместные распределения и замена переменных
Вероятность сохраняется, плотность нет — и весь механизм normalizing flows держится на этой разнице
Три распределения из одного
Для пары величин есть совместное , из него получаются маргинальные и условные:
Маргинализация — «проинтегрировать ненужное», обусловливание — «зафиксировать известное и перенормировать». Оба уже встречались: первое в блоке 2 как повод для кратного интеграла, второе в уроке про условную вероятность.
Из этих двух формул следует правило произведения , а из него — Байес. Ничего нового; полезно только привыкнуть, что все три объекта живут в одной картинке.
Сумма независимых величин — свёртка
Если и независимы, то плотность есть
Это свёртка. Формула читается прямо: чтобы сумма оказалась равна , нужно чтобы попал в , а — в оставшееся ; перебираем все способы и складываем.
Отсюда несколько известных фактов сразу: сумма гауссиан гауссовская, сумма пуассоновских пуассоновская, сумма равномерных — уже нет (получается треугольное распределение). А заодно и связь с ЦПТ: свёртка сглаживает, и многократное применение любой приличной плотности к себе даёт гауссиану.
Замена переменных
Пусть с обратимым . Тогда
Ключевое различие, которое стоит проговорить: вероятность сохраняется, плотность
нет. Событие « попал в интервал» и событие « попал в его образ» — одно и то
же событие, значит вероятности равны. Но если преобразование растянуло интервал
вдвое, та же вероятность распределилась по вдвое большей длине, и плотность упала
вдвое.
Столбики ниже — куски вероятности. Смотрите, что происходит с их шириной и высотой:
X равномерна на [0, 1]
Y = g(X)
- суммарная вероятность
- 1
- пик плотности
- 0.5
Каждый столбик — одна и та же порция вероятности до и после преобразования. Меняется его ширина, поэтому обязана измениться и высота: площадь сохраняется. Красная кривая — аналитическая плотность p_Y, и столбики ложатся на неё.
Линейное растяжение вдвое: все столбики вдвое шире и вдвое ниже. Плотность стала 0.5 — ровно 1/|dg/dx|.
Обратите внимание, что суммарная вероятность остаётся единицей при любом преобразовании, а пик плотности гуляет как угодно. Это и есть весь ответ на вопрос «почему плотность больше единицы».
Многомерный случай
Производная заменилась на определитель якобиана — коэффициент изменения объёма из блока 1. Больше ничего не изменилось.
Это и есть normalizing flows целиком. Берём простое распределение, применяем цепочку обратимых преобразований, честно накапливаем на каждом шаге:
Логарифм здесь не косметика: определители перемножаются, логарифмы складываются, и цепочка из сотни слоёв не переполняется. Тот же приём, что в блоке 2 для правдоподобия.
Отсюда и архитектурные ограничения потоков. Общий определитель стоит , что неприемлемо, поэтому преобразования выбирают с треугольным якобианом — тогда определитель это произведение диагонали, . Так устроены coupling layers и autoregressive flows: они не «трюк», а следствие требования дешёвого определителя.
Репараметризация
Частный случай, который стоит отдельного упоминания:
Зачем это нужно: случайность вынесена в , который не зависит от параметров. Значит по и можно дифференцировать обычным образом, пропуская градиент сквозь сэмплирование. Без этого приёма VAE не обучался бы градиентным спуском вовсе.
Многомерная версия — с , где — разложение Холецкого.
Графические модели: что означает стрелка
Нотация, которую достаточно уметь читать. Узлы — случайные величины, стрелки — зависимости в факторизации совместного распределения:
Стрелка означает, что обусловлен на . Отсутствие стрелки — это утверждение об условной независимости, и содержательная информация именно в нём.
Два узора из урока про независимость: общая причина делает и зависимыми, пока не наблюдён, а общее следствие — наоборот, независимыми, пока не наблюдён. Поэтому направление стрелок несёт смысл, а не только их наличие.
Источники
- Blitzstein, Hwang — Introduction to Probability, гл. 7–8 — Совместные распределения, свёртка, замена переменных
- Papamakarios и др. — Normalizing Flows for Probabilistic Modeling and Inference — Формула замены переменных как основа потоков
Проверки
0 из 2Что сохраняется при замене переменных
Пусть с обратимым гладким . Отметьте все верные утверждения.
Плотность после преобразования
Реализуйте
transformed_density(name, y)— плотность , если равномерна на и .По формуле замены переменных
а поскольку на , остаётся только модуль производной обратной функции. Поддержать нужно три преобразования:
nameобласть "double""square""exp"Вне области значений верните
0. Для неизвестного имени вернитеnull(в PythonNone).Проверьте себя интегрированием: каждая плотность обязана давать единицу.
Загрузка редактора…
Ctrl/⌘ + Enter