Глубокое обучение

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: вдохновлённая физикой идея ждёт полдекады правильной параметризации, чтобы стать практичной.

Предварительные знания

  • Autoencoders и VAE
  • GAN: от теории к практике

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
Diffusion Models

0

1

Войти