Генеративный AI
Diffusion Models: теория
2020 год. GAN-ы доминируют в генерации изображений - но нестабильны в обучении, склонны к mode collapse и требуют тонкой балансировки. Команда OpenAI публикует DDPM и показывает результаты лучше лучших GAN - без их недостатков. Секрет - в физическом процессе диффузии, вывернутом наизнанку.
- **Stable Diffusion, DALL-E 3, Midjourney** - все построены на диффузионных моделях
- **Drug discovery:** AlphaFold 3 генерирует молекулярные структуры через диффузию
- **Video generation:** Sora, Gen-3 - диффузия в пространстве-времени
- **Audio:** Stable Audio, MusicGen - диффузия в частотной области (спектрограммы)
От термодинамики к DDPM
Идея диффузионных моделей родилась в 2015 году: Jascha Sohl-Dickstein с коллегами в статье "Deep Unsupervised Learning using Nonequilibrium Thermodynamics" предложили обучать генеративную модель, обращая процесс постепенного зашумления данных. Подход опирался на неравновесную термодинамику и почти пять лет оставался нишевым. В 2019 году Yang Song и Stefano Ermon независимо пришли к близкой идее через score-based генеративные модели (оценку градиента лог-плотности данных). Переломным стал 2020 год, когда Jonathan Ho, Ajay Jain и Pieter Abbeel опубликовали DDPM и показали, что диффузия даёт изображения качеством выше лучших GAN. Именно DDPM запустил волну, приведшую к Stable Diffusion и DALL-E.
Предварительные знания
- Понимание VAE и латентных пространств
- Базовые свёрточные сети и U-Net
- Attention и трансформеры на уровне идеи
DDPM: Denoising Diffusion Probabilistic Models
Возьми фотографию и каждую итерацию добавляй чуть-чуть гауссовского шума. Через 1000 итераций это уже неразличимый белый шум. DDPM задаёт вопрос: можно ли научить нейросеть обращать этот процесс вспять? Оказывается, можно - если учить её предсказывать, какой именно шум был добавлен на каждом шаге.
**Forward process** - фиксированная цепочка Маркова: шаг t добавляет гауссовский шум к x_{t-1}, получая x_t. Ключевое свойство: x_t при любом t можно получить из x_0 напрямую без итераций - через репараметризацию с alpha_bar_t = ∏ (1 - beta_i).
**Почему предсказываем шум, а не x_0?** Ho et al. (2020) показали: предсказание eps даёт лучшие результаты. Интуиция - шум локален и высокочастотен, нейросети проще его предсказать, чем глобальную структуру целого изображения.
Что предсказывает U-Net в DDPM на каждом шаге деноизинга?
Score Matching и SMLD
Есть альтернативный взгляд на диффузию - через **score function**. Score - это градиент лог-плотности вероятности данных: s(x) = ∇_x log p(x). Если знать score в каждой точке, можно двигаться в сторону большей плотности - то есть восстанавливать изображение из шума.
**Score Matching with Langevin Dynamics (SMLD)** - Yang Song et al. (2019): обучаем нейросеть s_θ(x, σ) ≈ ∇_x log p_σ(x). Для генерации затем используем итерации Ланжевена - дрейф вдоль score плюс малый шум. Song et al. (2021) показали: DDPM и score-based модели математически эквивалентны - оба являются дискретизациями SDE.
**DDPM vs Score-based через SDE.** Song et al. (2021) объединили оба подхода: любой диффузионный процесс - это решение SDE вида dx = f(x,t)dt + g(t)dW. Обращение - тоже SDE, которое требует знания score. Это открыло дорогу к continuous-time диффузии и flow matching.
Что такое score function в контексте диффузионных моделей?
Noise Schedule: linear vs cosine
Noise schedule определяет, как быстро нарастает шум: как именно alpha_bar_t падает от 1 до ~0 за T шагов. От выбора расписания зависит и качество обучения, и эффективность inference.
**Linear schedule** (исходный DDPM): beta_t линейно растёт от 0.0001 до 0.02. Проблема: при малых разрешениях изображение становится чистым шумом уже к середине цепочки - оставшиеся 500 шагов обучаются на бессмысленном сигнале. Cosine schedule (Nichol & Dhariwal, 2021) исправляет это, делая зашумление плавным.
**Flow Matching (2022-2023)** идёт дальше: вместо диффузии - прямые траектории от шума к данным. Это сокращает число шагов с 1000 до 20-50 без потери качества. Stable Diffusion 3 и FLUX используют именно Flow Matching.
Cosine schedule лучше linear schedule потому что:
Denoising через U-Net
Математика диффузии требует конкретного backbone - нейросети, принимающей зашумлённое изображение x_t и номер шага t, возвращающей предсказанный шум eps. DDPM использует **U-Net**: архитектуру с энкодером, боттлнеком и декодером, соединёнными skip connections для сохранения пространственных деталей.
Номер шага t передаётся через **sinusoidal time embedding** - тот же механизм, что в трансформерах. Это позволяет модели адаптироваться: при большом t (много шума) фокусироваться на грубой структуре, при малом t - на тонких деталях.
**DDIM sampling.** Стандартный DDPM требует 1000 шагов inference. DDIM (Song et al. 2020) показал: та же обученная модель может генерировать за 50-100 детерминированных шагов - в 10-20 раз быстрее. DDIM открыл и latent interpolation: между двумя изображениями в пространстве шума.
Зачем U-Net в DDPM получает номер шага t как дополнительный вход?
Diffusion Models: теория
- Forward process: добавляем гауссовский шум T шагов, x_0 → x_T ~ N(0, I)
- x_t можно получить из x_0 напрямую через репараметризацию - без итераций
- Модель учится предсказывать добавленный шум eps; loss = MSE(eps_pred, eps)
- Score matching - эквивалентный взгляд: учим ∇_x log p(x), затем Langevin dynamics
- Cosine schedule равномернее использует все шаги обучения чем linear
- U-Net + sinusoidal time embedding - стандартный backbone; DDIM в 10-20 раз ускоряет inference
Связанные темы
Диффузионные модели - теоретическая основа. Следующий шаг - как это работает в Stable Diffusion на практике.
- Stable Diffusion и DALL-E — Практическое применение теории диффузии
- VAE: вариационные автоэнкодеры — Latent space, в котором работает Stable Diffusion
- Трансформеры и Attention — Attention механизм внутри U-Net диффузии
Вопросы для размышления
- Почему диффузионные модели превзошли GAN несмотря на более медленную генерацию?
- В чём математическая связь между DDPM и score matching через стохастические дифференциальные уравнения?
- Как бы вы применили диффузионную модель к задаче, не связанной с изображениями?
Связанные уроки
- gai-06 — Идеи VAE и автоэнкодеров питают латентную диффузию
- gai-10 — Теория отсюда питает практику Stable Diffusion
- prob-19-brownian — Прямая диффузия - броуновский процесс зашумления
- ml-33-gan — Другое семейство генеративных моделей, учащее распределение данных
- cv-16 — Диффузия движет современную генерацию изображений в vision
- prob-01-intro