В лекции курса Stanford CS236 «Глубокие генеративные модели» подробно разбирается устройство и математическое обоснование вариационных автокодировщиков (VAE). Слушатели узнают, как с помощью вспомогательной модели вывода и математических трюков превратить обычный автокодировщик в гибкую генеративную систему, способную моделировать сложные распределения данных.
🤖 VAE: От автокодировщика к генеративной модели 0:05
Вариационный автокодировщик (VAE) — это генеративная модель, которую в упрощенном виде можно представить как процесс из двух этапов. Сначала из простого априорного распределения (например, многомерного нормального распределения с нулевым средним и единичной ковариацией) выбирается скрытая переменная $z$. Затем эта переменная пропускается через две нейронные сети, $\mu_{\theta}$ и $\sigma_{\theta}$, которые вычисляют параметры другого гауссова распределения, из которого уже генерируется конечная точка данных $x$.
Несмотря на простоту отдельных блоков, итоговое маргинальное распределение $p(x)$ получается чрезвычайно гибким. По словам лектора, это происходит потому, что модель можно рассматривать как смесь бесконечного числа гауссовых распределений — для каждого значения $z$ существует свой «купол» Гаусса.
Ключевые преимущества модели:
- Гибкость: способность описывать сложные зависимости в данных за счет бесконечного смешивания простых распределений.
- Обучение без учителя: возможность обнаруживать скрытые факторы вариации (структуру данных) без разметки.
- Масштабируемость: расширение идей метода k-средних для поиска более сложных факторов вариации.
Однако за эту гибкость приходится платить отсутствием «бесплатного сыра». Главная проблема VAE заключается в сложности обучения: вычисление правдоподобия $p(x)$ требует интеграции по всем возможным значениям скрытых переменных $z$, что вычислительно невозможно (интрактабельно). Это резко отличает VAE от авторегрессионных моделей, где правдоподобие вычисляется тривиальным умножением условных вероятностей.
📉 Математический фундамент: ELBO и вариационный вывод 8:00
Чтобы обойти проблему невозможности прямого вычисления $p(x)$, используется техника вариационного вывода. Вводится вспомогательная модель (inference model) $q$, которая также является нейронной сетью и обучается совместно с генеративной моделью.
Центральным понятием здесь становится ELBO (Evidence Lower Bound) — нижняя граница доказательства. Используя неравенство Йенсена, разработчики строят оптимизируемую величину, которая всегда ниже или равна истинному логарифму правдоподобия.
Объектив ELBO можно разложить на две составляющие:
- Ожидаемое логарифмическое правдоподобие: средняя вероятность данных при условии, что скрытые переменные $z$ «угадываются» моделью $q$.
- Энтропия распределения $q$: показатель того, насколько неопределенной или случайной является модель вывода.
Лектор подчеркивает важный теоретический момент: если в качестве $q$ выбрать истинное апостериорное распределение $p(z|x)$, то неравенство превращается в равенство, и ELBO становится точно равным маргинальному правдоподобию. Это связывает вариационное обучение с классическим EM-алгоритмом, который используется для моделей с пропущенными данными.
🎯 Оптимизация и выбор аппроксимирующего распределения 22:56
Поскольку вычислить истинное апостериорное распределение $p(z|x)$ в глубоких моделях невозможно (нужно инвертировать нейронную сеть, что крайне сложно), его аппроксимируют семейством простых распределений, параметризованных весами $\phi$.
В процессе обучения решается задача оптимизации: мы меняем параметры $\phi$ так, чтобы наше простое распределение $q$ (например, Гауссиана) стало как можно ближе к сложному истинному распределению в смысле расстояния Кульбака-Лейблера (KL-дивергенция).
«Мы собираемся совместно оптимизировать и $p$, и $q$, чтобы максимизировать нижнюю границу доказательства. Одна компонента — это декодер ($p$), другая — энкодер ($q$)», — поясняет ведущий.
Графически это выглядит как попытка поднять «красную кривую» (нижнюю границу) как можно ближе к «черной кривой» (истинному правдоподобию). Чем гибче мы выбираем семейство $q$ (например, авторегрессионные модели вместо простых гауссиан), тем теснее будет эта граница и тем лучше обучится модель.
🧬 Трюк с репараметризацией (Reparameterization Trick) 1:01:02
Одной из самых больших технических сложностей при обучении VAE является вычисление градиентов по параметрам $\phi$. Проблема в том, что мы берем ожидание от функции, где само распределение (из которого мы берем выборки) зависит от оптимизируемых параметров. Обычное дифференцирование здесь не работает напрямую.
Для решения этой задачи в случае непрерывных скрытых переменных используется «трюк с репараметризацией».
Суть метода заключается в следующем:
- Мы представляем случайную переменную $z$ как детерминированное преобразование простого фиксированного шума $\epsilon$ (например, стандартного нормального распределения).
- Например, если $q$ — Гауссиана, то $z = \mu + \sigma \cdot \epsilon$.
- Теперь параметры $\phi$ ($\mu$ и $\sigma$) вынесены из-под знака случайного выбора.
- Это позволяет «пробрасывать» градиенты через процесс сэмплирования с помощью автоматического дифференцирования.
Важно отметить, что этот метод не работает для дискретных переменных (например, когда $z$ принимает значения 1, 2, 3), так как в этом случае преобразование будет разрывным и недифференцируемым.
⚡ Амортизированный вывод: масштабирование на Big Data 1:10:27
В базовом варианте вариационного вывода нам пришлось бы подбирать свои параметры $\phi$ для каждой отдельной точки данных в датасете, что абсолютно не масштабируется на миллионы изображений.
Решением становится амортизированный вывод (amortized inference). Вместо оптимизации индивидуальных параметров для каждого $x$, мы обучаем одну общую нейронную сеть — энкодер. Эта сеть принимает на вход точку данных $x_i$ и сразу выдает (предсказывает) оптимальные параметры вариационного распределения для этой точки.
Преимущества амортизации:
- Скорость: для новых данных не нужно заново решать задачу оптимизации, достаточно одного прямого прохода через сеть.
- Регуляризация: общая сеть накладывает ограничения на модель, что помогает предотвратить переобучение.
- Генерализация: модель учится предсказывать скрытые переменные даже для тех данных, которые она не видела при обучении.
В конечном итоге архитектура VAE замыкается: энкодер отображает изображение в параметры распределения в скрытом пространстве, а декодер восстанавливает изображение из этого пространства. Оптимизация ELBO превращается в задачу обучения автокодировщика с дополнительной регуляризацией скрытого пространства.