# Математика воображения: подробный разбор работы Stable Diffusion и DALL-E

Источник: https://www.youtube.com/watch?v=1CIpzeNxIhU
Канал: Computerphile
Опубликовано: 04.10.2022

---

Эта статья основана на видео с YouTube-канала Computerphile, в котором эксперт подробно разбирает механизмы работы современных генераторов изображений, таких как Stable Diffusion и DALL-E, противопоставляя их классическим нейросетям.

## 🤖 От классических GAN к диффузионным моделям
[[JUMP:0:00]]

До появления диффузионных моделей стандартом в генерации изображений были **GAN** (Generative Adversarial Networks — генеративно-состязательные сети) [0:38]. Их работа строится на взаимодействии двух нейросетей: «Генератора», который пытается создать изображение из случайного шума, и «Дискриминатора», который должен отличить подделку от реального фото из обучающей выборки [1:44].

Однако у GAN есть несколько критических недостатков:

*   **Сложность обучения:** крайне трудно обеспечить стабильную работу обеих сетей одновременно [2:10].
*   **Эффект «коллапса моды» (mode collapse):** если генератор находит один удачный образ, который стабильно обманывает дискриминатор, он начинает выдавать только его, игнорируя разнообразие [2:23].
*   **Проблема масштабирования:** очень сложно за один шаг превратить хаотичный шум в качественное изображение высокого разрешения [2:36].

Диффузионные модели решают эти проблемы, разбивая сложный процесс на множество мелких, итеративных шагов [2:49].

## 📉 Математика разрушения: процесс диффузии
[[JUMP:3:03]]

Суть метода заключается в процедуре планового зашумления изображения [3:03]. Представьте фотографию кролика. Мы постепенно добавляем к ней гауссовский шум в несколько этапов:

1.  На первом этапе кролик еще узнаваем [3:17].
2.  На промежуточных — изображение становится «зернистым».
3.  На финальном этапе (обозначаемом как время **T**) картинка превращается в абсолютно бессмысленный шум [3:29].

Автор видео объясняет, что во время обучения нейросеть видит не только конечный результат, но и все промежуточные стадии. Важным элементом является **график (schedule)** добавления шума [5:11]. Он определяет, сколько шума вносится на каждом шаге. Это может быть линейный график (одинаковое количество шума за раз) или сложные нелинейные стратегии [4:59].

Благодаря свойствам гауссовского шума, исследователям не нужно генерировать всю последовательность промежуточных картинок вручную. Математически можно сразу «прыгнуть» к любому этапу (например, к шагу №7) и получить нужное состояние изображения для обучения [5:50].

## 🧠 Обучение на «вычитании»: как сеть учится видеть
[[JUMP:6:17]]

Ключевой инсайт диффузионных моделей: нейросеть не учится рисовать кролика с нуля. Она учится **предсказывать шум**, который был добавлен к изображению [6:55].

Процесс обучения выглядит так:

*   Берется чистое изображение и к нему добавляется случайный шум согласно графику (например, для шага $T=5$) [8:11].
*   Зашумленное изображение и номер шага подаются на вход архитектуре типа **U-Net** [6:30].
*   Нейросеть должна угадать, какой именно шум был добавлен [8:24].
*   Поскольку у нас есть оригинал, мы можем вычислить ошибку и обновить веса сети [8:37].

При генерации нового изображения (инференсе) процесс идет в обратную сторону. Мы берем чистый шум и просим сеть предсказать в нем «лишние» пиксели. Мы вычитаем предсказанный шум, получаем черновой набросок, затем добавляем немного шума обратно (чтобы сохранить гибкость процесса) и повторяем цикл [10:35]. С каждой итерацией изображение становится все более четким и детализированным [11:27].

## 📝 Управление творчеством через текст
[[JUMP:11:53]]

Процесс удаления шума сам по себе порождает случайные образы. Чтобы управлять результатом, используется **кондиционирование (conditioning)** — внедрение текстовых подсказок [12:06].

Для этого фраза (например, «лягушки на ходулях») прогоняется через трансформерную модель (аналог GPT), которая превращает слова в математические векторы — эмбеддинги [13:00]. Эти данные подаются в нейросеть вместе с зашумленным изображением. Теперь сеть предсказывает не просто абстрактный шум, а шум, который мешает увидеть именно лягушек [13:53].

### Трюк с Classifier-Free Guidance (CFG)
Чтобы изображения максимально соответствовали тексту, разработчики используют «хак» под названием **Classifier-Free Guidance** [14:33].

*   На каждой итерации сеть делает два предсказания: одно с учетом текста, второе — без него [14:47].
*   Разница между этими предсказаниями усиливается коэффициентом [15:14].
*   Это буквально заставляет алгоритм «двигаться» в сторону текстового описания более агрессивно. Без этого метода картинки получаются блеклыми и неточными [15:40].

## 💰 Доступность и стоимость технологий
[[JUMP:16:03]]

Создание таких моделей требует колоссальных ресурсов. Обучение современной нейросети уровня DALL-E или Stable Diffusion обходится в сотни тысяч долларов из-за объема данных и вычислительной мощности [16:08].

Однако, по словам автора видео, для конечного пользователя все проще:

*   Существуют открытые модели, такие как **Stable Diffusion**, которые можно запустить бесплатно [16:22].
*   Для экспериментов удобно использовать облачные сервисы, например, **Google Colab** [16:30].
*   Базовый код для генерации крайне прост и может сводиться к вызову одной функции в Python [17:15].

Ведущий отмечает, что веса нейросети на всех этапах цикла генерации остаются общими [17:29]. Это позволяет использовать одну и ту же модель многократно для постепенного «проявления» изображения из хаоса.