# Как работают нормализующие потоки: основы генеративного моделирования

Источник: https://www.youtube.com/watch?v=qgTvgBCOyn8
Канал: Stanford Online
Опубликовано: 06.05.2024

---

## 📈 Введение в нормализующие потоки: основы и архитектура
[[JUMP:00:05]]

Нормализующие потоки (Normalizing Flows) представляют собой мощный класс генеративных моделей, позволяющих точно оценивать правдоподобие данных, не прибегая к вариационному выводу, как это происходит в вариационных автокодировщиках (VAE). В отличие от VAE, где связь между наблюдаемыми переменными $X$ и латентными переменными $Z$ является стохастической, в нормализующих потоках это преобразование является **детерминированным и обратимым**.

Главная идея заключается в использовании формулы замены переменных для оценки вероятности генерации данных. Чтобы получить корректную функцию плотности вероятности, необходимо не только оценить плотность латентного вектора $Z$ в априорном распределении, но и отмасштабировать результат, учитывая абсолютное значение определителя Якобиана обратного преобразования. Последний показывает, насколько локально расширяется или сжимается пространство при трансформации.

### Ключевые принципы архитектуры
[[JUMP:05:08]]

Нормализующие потоки получили свое название благодаря двум аспектам:

*   **«Нормализующие»:** Формула замены переменных гарантирует, что плотность вероятности остается нормализованной.
*   **«Потоки»:** Сложные преобразования строятся путем композиции (последовательного наслоения) нескольких простых, обратимых блоков нейронных сетей.

Если каждый отдельный слой обратим, то и вся их комбинация обладает этим свойством. Параметры ($\theta$) для каждого слоя обычно различаются, создавая сложную цепочку трансформаций. Основной технический вызов заключается в том, чтобы спроектировать такие архитектуры, где:

1.  Обратимость гарантирована при любом выборе параметров.
2.  Вычисление обратной функции происходит эффективно.
3.  Вычисление определителя Якобиана не требует кубической сложности ($O(n^3)$), что является критичным для данных высокой размерности.

## 🏗️ Простые архитектуры: NICE и RealNVP
[[JUMP:29:06]]

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

### Аддитивные слои (NICE)
[[JUMP:29:19]]

В модели **NICE** (Non-linear Independent Components Estimation) применяется аддитивный связывающий слой (additive coupling layer):

1.  Переменные $Z$ разбиваются на две группы.
2.  Первая группа остается неизменной (тождественное преобразование).
3.  Вторая группа модифицируется путем сдвига, вычисляемого нейронной сетью $m_\theta$ от первой группы.

Это преобразование легко обратимо: достаточно просто вычесть сдвиг, полученный от первой части, которая осталась неизменной. Определитель Якобиана такой матрицы равен **1**, что делает модель «сохраняющей объем» (volume preserving).

### Аффинные слои (RealNVP)
[[JUMP:39:06]]

Модель **RealNVP** расширяет этот подход, добавляя масштабирование помимо сдвига. Каждая размерность во второй группе не только сдвигается, но и умножается на коэффициент, зависящий от первой группы переменных. Это делает модель более гибкой, так как позволяет «сжимать» или «расширять» пространство.

## 🧠 Авторегрессионные модели как частный случай потоков
[[JUMP:48:45]]

Авторегрессионные модели могут быть интерпретированы как нормализующие потоки. Генерация из них эквивалентна «потоку» от простых независимых случайных величин (например, нормальных) к сложному распределению данных через цепочку сдвигов и масштабирований, зависящих от предыдущих элементов.

### MAF vs. IAF
[[JUMP:57:09]]

Существует два основных способа реализации такой архитектуры:

*   **MAF (Masked Autoregressive Flow):** В нем эффективна оценка правдоподобия (обучение), но медленная генерация (последовательная обработка).
*   **IAF (Inverse Autoregressive Flow):** Обратная версия, которая позволяет генерировать данные очень быстро (в один проход, параллельно), но делает оценку правдоподобия для новых данных затратной.

Обе архитектуры являются, по сути, одним и тем же типом модели, отличающимся лишь направлением использования. 

## 🚀 Дистилляция и реальные применения
[[JUMP:1:06:06]]

Интересным подходом к оптимизации является метод, использованный в **Parallel WaveNet** от Google для генерации речи. Авторы обучали «учителя» (авторегрессионную модель / MAF) с помощью максимального правдоподобия, а затем дистиллировали его в «студента» (IAF), который может генерировать семплы параллельно и быстро. Обучение студента основано на минимизации дивергенции Кульбака — Лейблера (KL) между ним и учителем, что оказывается эффективным, так как позволяет оценивать правдоподобие на собственных сгенерированных примерах.

---