Глубокое обучение
Diffusion Models
2022. Август. Stability AI выпускает Stable Diffusion. Открытый исходный код, запускается на потребительском GPU. За 48 часов GitHub - 10 000 звёзд. За неделю - сотни форков. Через месяц - Midjourney и DALL-E 2 уже кажутся устаревшими. Одна research paper 2020 года запустила революцию.
- Adobe Firefly - enterprise diffusion: 3 млрд генераций за первые 3 месяца. Обучен только на licensed content - первый commercial-safe diffusion сервис
- SORA (OpenAI, 2024) использует DiT (Diffusion Transformer) в latent space - 60-секундные видео с physics-aware generation. Архитектура строится поверх тех же идей что и Stable Diffusion
- Runway Gen-3, Pika Labs, Kling - video diffusion: та же математика, 3D temporal attention поверх spatial. Рынок video generation оценивается в USD 1.3B к 2028
From nonequilibrium thermodynamics to DDPM
В 2015 году Jascha Sohl-Dickstein с коллегами опубликовал работу 'Deep Unsupervised Learning using Nonequilibrium Thermodynamics', позаимствовав идею из статистической физики: постепенно разрушить структуру данных диффузионным процессом, а затем научиться его обращать. Идея несколько лет лежала без движения. Yang Song и Stefano Ermon переосмыслили её через score matching в 2019, а в 2020 Jonathan Ho, Ajay Jain и Pieter Abbeel превратили её в DDPM - форму, которую приняла вся индустрия. Это типичный паттерн в deep learning: вдохновлённая физикой идея ждёт полдекады правильной параметризации, чтобы стать практичной.
Предварительные знания
DDPM: шум как обучающий сигнал
2020 год. Ho et al., UC Berkeley. Denoising Diffusion Probabilistic Models. Через 18 месяцев после публикации Stable Diffusion, DALL-E 2, Midjourney - всё это построено поверх DDPM идеи. Один концепт изменил индустрию генерации изображений.
Прямой процесс (forward): берём реальное изображение, постепенно добавляем гауссовский шум за T шагов. После T=1000 шагов - чистый белый шум. Обратный процесс (reverse): нейросеть учится предсказывать шум на каждом шаге. Если успешно убрать шум T раз - из шума получается реальное изображение.
Ключевой трюк: не нужно симулировать все T шагов для получения x_t. Благодаря reparametrization: x_t = sqrt(alpha_bar_t)*x_0 + sqrt(1-alpha_bar_t)*epsilon, где epsilon ~ N(0,I). Один сэмпл за O(1) операций. Обучение: случайный t, зашумление x_0 до x_t, предсказание epsilon, MSE loss.
U-Net архитектура для noise predictor: encoder-decoder с skip connections. Каждый блок принимает (x_t, t) - время инжектируется через sinusoidal embedding (как в трансформерах). Cross-attention добавлен позже для text conditioning. Stable Diffusion: U-Net в 4x сжатом latent space VAE.
Что предсказывает нейросеть в DDPM на каждом шаге?
Score Matching: градиент лог-плотности
Song & Ermon (2020) - параллельный к DDPM взгляд. Score function: s(x) = grad_x log p(x) - градиент логарифма плотности данных. Это вектор, указывающий 'в сторону большей вероятности'. Если знать score, можно генерировать через Langevin dynamics: x_{t+1} = x_t + alpha*s(x_t) + noise.
Score matching учит нейросеть s_theta(x) аппроксимировать s(x) = grad_x log p(x). Проблема: нормализационная константа неизвестна. Решение: denoising score matching учит по зашумлённым данным. Шеннон бы гордился: DDPM и Score Matching оказались математически эквивалентны через Tweedie's formula.
SDE (Stochastic Differential Equation) формализм Song et al. 2021: прямой и обратный процессы как непрерывные SDE. DDPM - дискретный частный случай. Continuous SDE позволяет ODE sampling: детерминированная генерация без стохастики. DDIM (Denoising Diffusion Implicit Models) - первая практическая реализация: генерация за 50 шагов вместо 1000.
Что такое score function в контексте диффузионных моделей?
Classifier-Free Guidance: управление генерацией
Как сказать диффузионной модели 'сгенерируй кошку'? Первый подход: Classifier Guidance - отдельный classifier предсказывает класс из зашумлённого изображения, градиент используется для направления генерации. Проблема: нужно обучать отдельный шумоустойчивый classifier.
Classifier-Free Guidance (Ho & Salimans, 2022) - элегантнее. Одна модель, два режима: условный (с текстом) и безусловный (без текста). Во время обучения 10-20% батча - безусловные. Во время инференса: направление = conditional - w*(conditional - unconditional). Параметр w (guidance scale) управляет 'силой' условия.
Guidance scale tradeoff: высокий (>12) - изображения соответствуют промпту, но потеряли diversity, появляется oversaturation. Низкий (<3) - diverse, но слабо следует промпту. w=7.5 - исторический дефолт Stable Diffusion v1. SDXL: 5.0-8.0. Flux: 3.5 (другая архитектура, меньше нужен guidance).
Зачем при обучении CFG модели часть батча обучается без условия?
Stable Diffusion: диффузия в latent space
Rombach et al. 2022 (CompVis, LMU Munich). Latent Diffusion Models: диффузия не в pixel space (512x512x3 = 786K dims), а в latent space VAE (64x64x4 = 16K dims). В 50x меньше размерность - в 50x быстрее генерация. Это и есть Stable Diffusion.
Cross-attention в U-Net: text embeddings (ключи и значения) + latent features (запросы). Каждый spatial location в U-Net 'смотрит' на все текстовые токены через attention. ControlNet (Zhang et al. 2023) добавляет пространственный контроль (поза, глубина, canny) через trainable копию U-Net encoder, замороженный основной U-Net.
SDXL (2023): два text encoder (OpenCLIP ViT-bigG + CLIP ViT-L), U-Net 2.6B параметров, base 1024x1024 + refiner model. Flux (2024, Black Forest Labs): transformer architecture вместо U-Net, rectified flow вместо DDPM. Тренд: U-Net -> DiT (Diffusion Transformer). DiT-XL - основа SORA.
Diffusion models медленнее GAN потому что хуже архитектурно спроектированы
DDIM/DPM-Solver снизили число шагов с 1000 до 20-50. Consistency models - до 1-4 шагов. Медленность - историческая, не фундаментальная
GAN inference - один forward pass. DDPM - 1000 forward passes. Но DDIM (2021) через ODE решатели: 50 шагов с тем же качеством. DPM-Solver++ (2023): 20 шагов. LCM (Latent Consistency Models, 2023): 4 шага. Разрыв в скорости с GAN закрывается. При этом диффузия превосходит GAN в diversity и stability обучения
Почему Stable Diffusion работает в latent space VAE, а не pixel space?
Связанные темы
Диффузия строится поверх VAE и связана с теорией вероятностей:
- VAE — Latent space Stable Diffusion - это VAE
- Flow Models и Energy-Based — Альтернативные генеративные архитектуры
- AI Agents: архитектура — Image generation tools в agent workflows
Ключевые идеи
- DDPM: прямой (шумим) + обратный (денойзим) процесс. U-Net предсказывает добавленный шум
- Score Matching: математический эквивалент DDPM через grad log p(x). DDIM ускоряет до 50 шагов
- CFG: одна модель, два режима. guidance_scale управляет trade-off prompt-adherence vs diversity
- Stable Diffusion: диффузия в 4x downscaled VAE latent + CLIP text conditioning через cross-attention
Вопросы для размышления
- Почему диффузионные модели стабильнее обучаются чем GAN при сопоставимом качестве?
- Как DDIM позволяет детерминированную генерацию из одного seed, если DDPM стохастический?
- Что даёт использование Diffusion Transformer (DiT) против U-Net, и почему SORA выбрал DiT?
Связанные уроки
- dl-14 — VAE - архитектурный предшественник latent diffusion
- dl-16 — Flow models и EBM - смежные генеративные подходы
- gai-15 — AI Agents используют диффузию для image generation
- ds-02-cap-theorem — Markov chain - математическая основа диффузии
- prob-01-intro