# Диффузионные модели: как рисует Stable Diffusion

> Диффузионная модель учится убирать шум маленькими шагами: forward-процесс топит картинку в гауссовом шуме, сеть предсказывает этот шум, а генерация — расшумление из чистого шума. Разбираем latent diffusion, guidance и ускорение до 1–4 шагов.

Раздел: [Мультимодальные модели](https://ml-book.com/s/multimodal/) · Страница темы: https://ml-book.com/t/diffusion-models/ · Обновлено: 2026-07-07 · Источник: ml-book.com, учебник делается сообществом

## Интуиция: портить легко, чинить — по чуть-чуть

Выучить «нарисуй картинку из ничего» одним прыжком — чудовищно сложная задача: и [VAE, и GAN](https://ml-book.com/t/vae-gan/) ломались об неё каждый по-своему. Диффузия (diffusion model) заходит хитрее: портить-то легко! Добавить к картинке немного шума может кто угодно. А раз портить легко, можно нагенерировать сколько угодно обучающих пар «чуть более шумная картинка → чуть менее шумная» — и научить сеть *маленькому* шагу починки. Один маленький шаг — простая задача. А цепочка из десятков маленьких шагов превращает чистый шум в картинку.

## Forward: топим картинку в шуме

Прямой процесс (forward process) за T шагов постепенно замешивает в картинку x₀ гауссов шум. Удобно, что в любой шаг t можно прыгнуть сразу, одной формулой:

`x_t = √ᾱ_t · x₀ + √(1 − ᾱ_t) · ε, ε ∼ N(0, 1)`

Здесь ᾱ_t — расписание шума (noise schedule): доля «сигнала», оставшегося к шагу t. В начале ᾱ₀ = 1 (чистая картинка), к концу ᾱ_T ≈ 0 (чистый шум). Форму кривой подбирают (линейное, косинусное расписание), чтобы информация уничтожалась равномерно, а не вся сразу.

## Reverse: сеть предсказывает шум

Обратный процесс учит нейросеть (исторически U-Net, в новых моделях — трансформер) по зашумлённой картинке x_t и номеру шага t предсказать *шум* ε, который был подмешан. Не картинку — именно шум! Лосс до неприличия простой:

`L = MSE( ε, ε̂_θ(x_t, t) )`

Никакой минимакс-игры, никакого хрупкого равновесия — обычная регрессия, которая обучается стабильно, как классификатор. Зная предсказанный шум, из формулы forward легко выразить оценку чистой картинки и сделать шаг «назад»: чуть меньше шума, чуть больше картинки. Генерация — это старт из чистого шума x_T ∼ N(0, 1) и T шагов расшумления.

> **💡 Ключевая мысль**
>
> Диффузионная сеть предсказывает шум, а не картинку. Задача «убери немного шума» настолько проще задачи «нарисуй всё сразу», что решается стабильным MSE-лоссом — в этом секрет победы диффузии над GAN.

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/diffusion-models/

## Text-to-image: cross-attention и guidance

Чтобы модель рисовала «кота в скафандре», а не что попало, её кондиционируют на текст. Промпт прогоняется через текстовый энкодер (CLIP или T5) в эмбеддинги, и на каждом шаге расшумления сеть подсматривает в них через cross-attention: query — от пикселей/латента, key и value — от токенов промпта (тот же механизм, что в [attention](https://ml-book.com/t/attention/)).

Второй рычаг — classifier-free guidance (CFG). На каждом шаге модель делает два предсказания шума: с промптом и без (безусловное), а потом экстраполирует в сторону условного:

`ε̂ = ε_{uncond} + w · (ε_{cond} − ε_{uncond})`

Сила w — это слайдер «насколько слушаться промпта»: при w = 1 guidance выключен, при w ≈ 5–8 картинка чётко следует тексту, а при переборе результат «пережаривается» — кислотные цвета, выжженный контраст, потеря разнообразия.

## Latent diffusion и ускорение

Гонять диффузию прямо в пикселях 512×512×3 дорого. Stable Diffusion делает диффузию в латенте [VAE](https://ml-book.com/t/vae-gan/): энкодер сжимает картинку в тензор 64×64×4 — примерно в 48 раз меньше чисел, — вся диффузия происходит там, и только в конце декодер VAE разворачивает латент в пиксели. Это и есть latent diffusion (LDM) — главная причина, почему Stable Diffusion запускается на обычной видеокарте.

Дальше ускоряют число шагов. DDIM делает процесс детерминированным и позволяет шагать крупнее — 20–50 шагов вместо 1000. [Дистилляция](https://ml-book.com/t/distillation/) (LCM, SDXL-Turbo, adversarial distillation) учит модель-студента проходить путь учителя за 1–4 шага — в интерактиве видно, чем платят за крупные прыжки. А архитектурно поле сместилось от U-Net к DiT (diffusion transformer) — [трансформеру](https://ml-book.com/t/transformer/) над патчами латента: он лучше масштабируется и стал стандартом новых моделей (SD3, Flux, Sora).

> **⚠️ Подводный камень**
>
> Частая ошибка — считать, что сеть на каждом шаге «рисует картинку получше». Нет: она предсказывает *шум* ε (или его эквивалент), а формула шага сама вычисляет более чистый x. Вторая ловушка — guidance: «сделаю w побольше, чтобы точно по промпту» кончается пережаренными цветами и одинаковыми, как под копирку, генерациями.

> **🎤 На собеседовании**
>
> - «Что предсказывает диффузионная сеть?» — шум ε, подмешанный на шаге t (не картинку!); лосс — простой MSE между настоящим и предсказанным шумом.
> - «Зачем латентная диффузия?» — расшумлять в латенте VAE в десятки раз дешевле, чем в пикселях; декодер VAE возвращает пиксели в самом конце.
> - «Что делает classifier-free guidance?» — усиливает разницу между условным и безусловным предсказанием: выше w — точнее следование промпту, но перебор «пережаривает» картинку.
> - «Почему диффузия победила GAN?» — стабильный MSE-лосс вместо минимакс-игры, нет mode collapse, качество и разнообразие выше; цена — много шагов, которую снижают DDIM и дистилляцией.

## Связанные темы

- [VAE и GAN: генерация до диффузии](https://ml-book.com/t/vae-gan/)
- [Видео-модели: генерация с временной согласованностью](https://ml-book.com/t/video-models/)
- [Как LLM видят изображения](https://ml-book.com/t/multimodal-llm/)
- [Дистилляция и сжатие моделей](https://ml-book.com/t/distillation/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/diffusion-models/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
