Диффузионные модели: как рисует Stable Diffusion
Диффузионная модель учится убирать шум маленькими шагами: forward-процесс топит картинку в гауссовом шуме, сеть предсказывает этот шум, а генерация — расшумление из чистого шума. Разбираем latent diffusion, guidance и ускорение до 1–4 шагов.
Интуиция: портить легко, чинить — по чуть-чуть
Выучить «нарисуй картинку из ничего» одним прыжком — чудовищно сложная задача: и VAE, и GAN ломались об неё каждый по-своему. Диффузия (diffusion model) заходит хитрее: портить-то легко! Добавить к картинке немного шума может кто угодно. А раз портить легко, можно нагенерировать сколько угодно обучающих пар «чуть более шумная картинка → чуть менее шумная» — и научить сеть маленькому шагу починки. Один маленький шаг — простая задача. А цепочка из десятков маленьких шагов превращает чистый шум в картинку.
Forward: топим картинку в шуме
Прямой процесс (forward process) за T шагов постепенно замешивает в картинку x₀ гауссов шум. Удобно, что в любой шаг t можно прыгнуть сразу, одной формулой:
Здесь ᾱt — расписание шума (noise schedule): доля «сигнала», оставшегося к шагу t. В начале ᾱ₀ = 1 (чистая картинка), к концу ᾱT ≈ 0 (чистый шум). Форму кривой подбирают (линейное, косинусное расписание), чтобы информация уничтожалась равномерно, а не вся сразу.
Reverse: сеть предсказывает шум
Обратный процесс учит нейросеть (исторически U-Net, в новых моделях — трансформер) по зашумлённой картинке xt и номеру шага t предсказать шум ε, который был подмешан. Не картинку — именно шум! Лосс до неприличия простой:
Никакой минимакс-игры, никакого хрупкого равновесия — обычная регрессия, которая обучается стабильно, как классификатор. Зная предсказанный шум, из формулы forward легко выразить оценку чистой картинки и сделать шаг «назад»: чуть меньше шума, чуть больше картинки. Генерация — это старт из чистого шума xT ∼ N(0, 1) и T шагов расшумления.
Text-to-image: cross-attention и guidance
Чтобы модель рисовала «кота в скафандре», а не что попало, её кондиционируют на текст. Промпт прогоняется через текстовый энкодер (CLIP или T5) в эмбеддинги, и на каждом шаге расшумления сеть подсматривает в них через cross-attention: query — от пикселей/латента, key и value — от токенов промпта (тот же механизм, что в attention).
Второй рычаг — classifier-free guidance (CFG). На каждом шаге модель делает два предсказания шума: с промптом и без (безусловное), а потом экстраполирует в сторону условного:
Сила w — это слайдер «насколько слушаться промпта»: при w = 1 guidance выключен, при w ≈ 5–8 картинка чётко следует тексту, а при переборе результат «пережаривается» — кислотные цвета, выжженный контраст, потеря разнообразия.
Latent diffusion и ускорение
Гонять диффузию прямо в пикселях 512×512×3 дорого. Stable Diffusion делает диффузию в латенте VAE: энкодер сжимает картинку в тензор 64×64×4 — примерно в 48 раз меньше чисел, — вся диффузия происходит там, и только в конце декодер VAE разворачивает латент в пиксели. Это и есть latent diffusion (LDM) — главная причина, почему Stable Diffusion запускается на обычной видеокарте.
Дальше ускоряют число шагов. DDIM делает процесс детерминированным и позволяет шагать крупнее — 20–50 шагов вместо 1000. Дистилляция (LCM, SDXL-Turbo, adversarial distillation) учит модель-студента проходить путь учителя за 1–4 шага — в интерактиве видно, чем платят за крупные прыжки. А архитектурно поле сместилось от U-Net к DiT (diffusion transformer) — трансформеру над патчами латента: он лучше масштабируется и стал стандартом новых моделей (SD3, Flux, Sora).
- «Что предсказывает диффузионная сеть?» — шум ε, подмешанный на шаге t (не картинку!); лосс — простой MSE между настоящим и предсказанным шумом.
- «Зачем латентная диффузия?» — расшумлять в латенте VAE в десятки раз дешевле, чем в пикселях; декодер VAE возвращает пиксели в самом конце.
- «Что делает classifier-free guidance?» — усиливает разницу между условным и безусловным предсказанием: выше w — точнее следование промпту, но перебор «пережаривает» картинку.
- «Почему диффузия победила GAN?» — стабильный MSE-лосс вместо минимакс-игры, нет mode collapse, качество и разнообразие выше; цена — много шагов, которую снижают DDIM и дистилляцией.