Глава 14. Diffusion

Глава 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 (шум в латентном пространстве автоэнкодера, а не в пикселях).

Pixel vs 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

Генерация больше не выглядит инопланетной относительно детекции и классификации.
Те же привычки архитектора:

  1. найти боль (нестабильность / медленный сэмплинг / плохой контроль);
  2. сменить представление (пиксели → латент, игра → denoising);
  3. принять обмен;
  4. крутить абляции.

Если бы вы были автором статьи…

  1. Почему latent diffusion, а не просто меньшая картинка на входе pixel-модели? В чём разница обменов?

  2. Спроектируйте 4-step student для 50-step teacher. Что именно дистиллируете — траекторию, шум, финальный сэмпл?

  3. Где диффузия проиграет GAN по latency на edge-устройстве даже после ускорений? Сформулируйте порог.

В послесловии вернёмся к самому навыку: как выбирать архитектуру под железо и куда смотрит поиск «после трансформеров».