📈 Введение в нормализующие потоки: основы и архитектура 0:05
Нормализующие потоки (Normalizing Flows) представляют собой мощный класс генеративных моделей, позволяющих точно оценивать правдоподобие данных, не прибегая к вариационному выводу, как это происходит в вариационных автокодировщиках (VAE). В отличие от VAE, где связь между наблюдаемыми переменными $X$ и латентными переменными $Z$ является стохастической, в нормализующих потоках это преобразование является детерминированным и обратимым.
Главная идея заключается в использовании формулы замены переменных для оценки вероятности генерации данных. Чтобы получить корректную функцию плотности вероятности, необходимо не только оценить плотность латентного вектора $Z$ в априорном распределении, но и отмасштабировать результат, учитывая абсолютное значение определителя Якобиана обратного преобразования. Последний показывает, насколько локально расширяется или сжимается пространство при трансформации.
Ключевые принципы архитектуры 5:08
Нормализующие потоки получили свое название благодаря двум аспектам:
- «Нормализующие»: Формула замены переменных гарантирует, что плотность вероятности остается нормализованной.
- «Потоки»: Сложные преобразования строятся путем композиции (последовательного наслоения) нескольких простых, обратимых блоков нейронных сетей.
Если каждый отдельный слой обратим, то и вся их комбинация обладает этим свойством. Параметры ($\theta$) для каждого слоя обычно различаются, создавая сложную цепочку трансформаций. Основной технический вызов заключается в том, чтобы спроектировать такие архитектуры, где:
- Обратимость гарантирована при любом выборе параметров.
- Вычисление обратной функции происходит эффективно.
- Вычисление определителя Якобиана не требует кубической сложности ($O(n^3)$), что является критичным для данных высокой размерности.
🏗️ Простые архитектуры: NICE и RealNVP 29:06
Для эффективного вычисления определителя Якобиана архитектуры часто проектируются так, чтобы матрица Якобиана была треугольной. Это позволяет вычислять определитель как произведение элементов на диагонали за линейное время.
Аддитивные слои (NICE) 29:19
В модели NICE (Non-linear Independent Components Estimation) применяется аддитивный связывающий слой (additive coupling layer):
- Переменные $Z$ разбиваются на две группы.
- Первая группа остается неизменной (тождественное преобразование).
- Вторая группа модифицируется путем сдвига, вычисляемого нейронной сетью $m_\theta$ от первой группы.
Это преобразование легко обратимо: достаточно просто вычесть сдвиг, полученный от первой части, которая осталась неизменной. Определитель Якобиана такой матрицы равен 1, что делает модель «сохраняющей объем» (volume preserving).
Аффинные слои (RealNVP) 39:06
Модель RealNVP расширяет этот подход, добавляя масштабирование помимо сдвига. Каждая размерность во второй группе не только сдвигается, но и умножается на коэффициент, зависящий от первой группы переменных. Это делает модель более гибкой, так как позволяет «сжимать» или «расширять» пространство.
🧠 Авторегрессионные модели как частный случай потоков 48:45
Авторегрессионные модели могут быть интерпретированы как нормализующие потоки. Генерация из них эквивалентна «потоку» от простых независимых случайных величин (например, нормальных) к сложному распределению данных через цепочку сдвигов и масштабирований, зависящих от предыдущих элементов.
MAF vs. IAF 57:09
Существует два основных способа реализации такой архитектуры:
- MAF (Masked Autoregressive Flow): В нем эффективна оценка правдоподобия (обучение), но медленная генерация (последовательная обработка).
- IAF (Inverse Autoregressive Flow): Обратная версия, которая позволяет генерировать данные очень быстро (в один проход, параллельно), но делает оценку правдоподобия для новых данных затратной.
Обе архитектуры являются, по сути, одним и тем же типом модели, отличающимся лишь направлением использования.
🚀 Дистилляция и реальные применения 1:06:06
Интересным подходом к оптимизации является метод, использованный в Parallel WaveNet от Google для генерации речи. Авторы обучали «учителя» (авторегрессионную модель / MAF) с помощью максимального правдоподобия, а затем дистиллировали его в «студента» (IAF), который может генерировать семплы параллельно и быстро. Обучение студента основано на минимизации дивергенции Кульбака — Лейблера (KL) между ним и учителем, что оказывается эффективным, так как позволяет оценивать правдоподобие на собственных сгенерированных примерах.