Глава 14. Порядок из шума (Diffusion Models)
Чтобы научиться собирать изображение,
иногда полезно идеально научиться его ломать —
и запомнить дорогу назад.
Если GAN — это война, диффузия — это ремесло реставратора.
Мы задаём прямой процесс порчи данных.
Модель учит обратный: из шума — к образцу.
14.1. Прямой процесс: как аккуратно разрушать
Берём реальное изображение x0.
Шаг за шагом добавляем шум, пока сигнал не превратится в почти чистый гаусс.
Важно: порча контролируемая.
Мы знаем статистику перехода. Это не случайный вандализм, а марковский процесс с известными правилами.
Зачем это генерации?
Потому что если умеешь предсказывать, как выглядел менее шумный кадр (или какой шум добавили), можно стартовать с чистого шума и идти назад.
14.2. Обратный процесс: обучение реставрации
Модель (часто U-Net или трансформерный бэкбон) получает шумный вход и шаг времени t.
Учится, например, предсказывать шум ε или восстановленный сигнал.
обучение:
взять x0, выбрать t, получить xt
сеть(xt, t) → оценка шума / направления к x0
loss = ошибка предсказания
инференс:
xT ~ N(0, I)
повторять: xt → x{t-1} по правилу, использующему предсказание сети
пока не получим x0
Никакой дискриминатор не обязан сходиться в седле.
Есть относительно честный regression-подобный сигнал обучения — отсюда практическая стабильность, которую рынок так любит.
14.3. Почему это взлетело
Сильные стороны диффузии в инженерной рамке:
| Свойство | Практический смысл |
|---|---|
| Стабильное обучение | Меньше шаманства, чем у GAN |
| Высокое качество сэмплов | Конкурентоспособные картинки/аудио |
| Условная генерация | Класс, текст, маска — как условие сети |
| Понятный рычаг шагов | Больше шагов ↔ дороже и часто лучше |
Счёт:
Инференс изначально медленный: десятки/сотни шагов сети.
Это главный обмен эпохи.
Поэтому зоопарк ускорений: DDIM и друзья, дистилляция в few-step модели, consistency models, latent diffusion (шум в латентном пространстве автоэнкодера, а не в пикселях).
Stable Diffusion и родственники победили не «магией шума», а связкой:
автоэнкодер (сжать) + диффузия в латенте + условие текстом.
Разбор этой связки и роли U-Net-skip в denoiser — в главе 14a.
14.4. Связь с остальной книгой
Диффузия неожиданно рифмуется с уже пройденным:
- U-Net / skip — снова короткие пути для деталей при восстановлении;
- частотный взгляд — ранние шаги часто про грубую структуру, поздние — про высокие частоты и текстуру;
- компромиссы — шаги сэмплинга как latency-ручка, аналог «сколько FPS нам нужно» в детекции.
flowchart LR
A[Данные] --> B[Прямой шум]
B --> C[Учим denoiser]
C --> D[Сэмпл из шума назад]
D --> E[Ускорения: fewer steps / latent]
Философский итог Части V:
GAN: порядок через конфликт
Diffusion: порядок через обратимое разрушение
Оба пути — про то, как задать обучаемый маршрут из простого распределения (шум) в сложное (данные).
Разница в том, насколько этот маршрут удобно оптимизировать и контролировать.
14.5. Закрываем Часть V
Генерация больше не выглядит инопланетной относительно детекции и классификации.
Те же привычки архитектора:
- найти боль (нестабильность / медленный сэмплинг / плохой контроль);
- сменить представление (пиксели → латент, игра → denoising);
- принять обмен;
- крутить абляции.
Если бы вы были автором статьи…
-
Почему latent diffusion, а не просто меньшая картинка на входе pixel-модели? В чём разница обменов?
-
Спроектируйте 4-step student для 50-step teacher. Что именно дистиллируете — траекторию, шум, финальный сэмпл?
-
Где диффузия проиграет GAN по latency на edge-устройстве даже после ускорений? Сформулируйте порог.
В послесловии вернёмся к самому навыку: как выбирать архитектуру под железо и куда смотрит поиск «после трансформеров».