Эта статья основана на видео с YouTube-канала Computerphile, в котором эксперт подробно разбирает механизмы работы современных генераторов изображений, таких как Stable Diffusion и DALL-E, противопоставляя их классическим нейросетям.
🤖 От классических GAN к диффузионным моделям 0:00
До появления диффузионных моделей стандартом в генерации изображений были GAN (Generative Adversarial Networks — генеративно-состязательные сети) . Их работа строится на взаимодействии двух нейросетей: «Генератора», который пытается создать изображение из случайного шума, и «Дискриминатора», который должен отличить подделку от реального фото из обучающей выборки .
Однако у GAN есть несколько критических недостатков:
- Сложность обучения: крайне трудно обеспечить стабильную работу обеих сетей одновременно .
- Эффект «коллапса моды» (mode collapse): если генератор находит один удачный образ, который стабильно обманывает дискриминатор, он начинает выдавать только его, игнорируя разнообразие .
- Проблема масштабирования: очень сложно за один шаг превратить хаотичный шум в качественное изображение высокого разрешения .
Диффузионные модели решают эти проблемы, разбивая сложный процесс на множество мелких, итеративных шагов .
📉 Математика разрушения: процесс диффузии 3:03
Суть метода заключается в процедуре планового зашумления изображения . Представьте фотографию кролика. Мы постепенно добавляем к ней гауссовский шум в несколько этапов:
- На первом этапе кролик еще узнаваем .
- На промежуточных — изображение становится «зернистым».
- На финальном этапе (обозначаемом как время T) картинка превращается в абсолютно бессмысленный шум .
Автор видео объясняет, что во время обучения нейросеть видит не только конечный результат, но и все промежуточные стадии. Важным элементом является график (schedule) добавления шума . Он определяет, сколько шума вносится на каждом шаге. Это может быть линейный график (одинаковое количество шума за раз) или сложные нелинейные стратегии .
Благодаря свойствам гауссовского шума, исследователям не нужно генерировать всю последовательность промежуточных картинок вручную. Математически можно сразу «прыгнуть» к любому этапу (например, к шагу №7) и получить нужное состояние изображения для обучения .
🧠 Обучение на «вычитании»: как сеть учится видеть 6:17
Ключевой инсайт диффузионных моделей: нейросеть не учится рисовать кролика с нуля. Она учится предсказывать шум, который был добавлен к изображению .
Процесс обучения выглядит так:
- Берется чистое изображение и к нему добавляется случайный шум согласно графику (например, для шага $T=5$) .
- Зашумленное изображение и номер шага подаются на вход архитектуре типа U-Net .
- Нейросеть должна угадать, какой именно шум был добавлен .
- Поскольку у нас есть оригинал, мы можем вычислить ошибку и обновить веса сети .
При генерации нового изображения (инференсе) процесс идет в обратную сторону. Мы берем чистый шум и просим сеть предсказать в нем «лишние» пиксели. Мы вычитаем предсказанный шум, получаем черновой набросок, затем добавляем немного шума обратно (чтобы сохранить гибкость процесса) и повторяем цикл . С каждой итерацией изображение становится все более четким и детализированным .
📝 Управление творчеством через текст 11:53
Процесс удаления шума сам по себе порождает случайные образы. Чтобы управлять результатом, используется кондиционирование (conditioning) — внедрение текстовых подсказок .
Для этого фраза (например, «лягушки на ходулях») прогоняется через трансформерную модель (аналог GPT), которая превращает слова в математические векторы — эмбеддинги . Эти данные подаются в нейросеть вместе с зашумленным изображением. Теперь сеть предсказывает не просто абстрактный шум, а шум, который мешает увидеть именно лягушек .
Трюк с Classifier-Free Guidance (CFG)
Чтобы изображения максимально соответствовали тексту, разработчики используют «хак» под названием Classifier-Free Guidance .
- На каждой итерации сеть делает два предсказания: одно с учетом текста, второе — без него .
- Разница между этими предсказаниями усиливается коэффициентом .
- Это буквально заставляет алгоритм «двигаться» в сторону текстового описания более агрессивно. Без этого метода картинки получаются блеклыми и неточными .
💰 Доступность и стоимость технологий 16:03
Создание таких моделей требует колоссальных ресурсов. Обучение современной нейросети уровня DALL-E или Stable Diffusion обходится в сотни тысяч долларов из-за объема данных и вычислительной мощности .
Однако, по словам автора видео, для конечного пользователя все проще:
- Существуют открытые модели, такие как Stable Diffusion, которые можно запустить бесплатно .
- Для экспериментов удобно использовать облачные сервисы, например, Google Colab .
- Базовый код для генерации крайне прост и может сводиться к вызову одной функции в Python .
Ведущий отмечает, что веса нейросети на всех этапах цикла генерации остаются общими . Это позволяет использовать одну и ту же модель многократно для постепенного «проявления» изображения из хаоса.