Главная идея: картинка проявляется из шума
Интуиция подсказывает, что нейросеть рисует картинку, как художник: линия за линией, объект за объектом. Это неверно.
На самом деле модель работает наоборот. Она начинает с кадра чистого случайного шума, похожего на рябь старого телевизора, и постепенно убирает из него лишнее, пока не проявится осмысленное изображение.
Ближайшая аналогия из реального мира это проявка фотоплёнки. Опускаете лист в проявитель, сначала на нём муть, потом проступают контуры, потом детали, и в конце готовый снимок. Модель делает то же самое, только вместо химии работает математика, и «проявитель» она может направить на любое изображение, которое вы опишете словами.
Этот процесс называется диффузией, и его придумали, подсмотрев за физикой: за тем, как капля чернил расплывается в воде. Модель научили запускать это расплывание в обратную сторону, собирая каплю обратно.
Как её этому научили
Чтобы модель умела убирать шум, её сначала учили его добавлять.
Берётся огромный набор реальных картинок. К каждой пошагово подмешивают шум: чуть-чуть, потом больше, потом ещё, пока от изображения не останется одна рябь. На каждом шаге модель запоминает, как выглядел кадр до и после добавления шума.
Повторив это на сотнях миллионов изображений, модель выучивает обратную операцию: по зашумлённому кадру предсказать, как он выглядел чуть чище. А если она умеет делать один шаг очистки, то, повторив его много раз, она пройдёт весь путь от чистого шума до готовой картинки.
Ключевой момент: модель не запоминает картинки. Она запоминает закономерности, как обычно устроены изображения. Поэтому она может создать то, чего не было в обучении: кота в скафандре она не видела, но видела и котов, и скафандры, и знает, как то и другое выглядит.
Причём тут ваш текст
Пока что мы описали, как модель делает какую-то картинку из шума. Но вам нужна конкретная. Здесь в дело вступает промпт.
Ваш текст сначала переводится в числа. Этим занимается отдельный компонент, текстовый кодировщик, обученный связывать слова с изображениями. Он видел миллионы пар «картинка и подпись к ней», поэтому знает, что слово «закат» соответствует определённым цветам и формам.
Эти числа становятся подсказкой на каждом шаге очистки. Грубо говоря, модель на каждом шаге спрашивает себя: «в какую сторону убирать шум, чтобы результат был больше похож на то, что описано в тексте?».
Отсюда важный практический вывод: модель понимает смысл, а не ищет точные слова. Ей неважно, написали вы «машина» или «автомобиль». Ей важна концепция. Поэтому подробное осмысленное описание работает лучше, чем набор ключевых слов.
Почему одно описание даёт разные картинки
Вы наверняка замечали: жмёте генерацию дважды с тем же промптом и получаете два разных изображения.
Причина в стартовом шуме. Каждая генерация начинается со своего случайного кадра ряби. Разный шум на входе ведёт к разной картинке на выходе, даже если текст одинаковый.
За это отвечает параметр seed (зерно) это число, из которого генерируется стартовый шум. Один и тот же seed плюс один и тот же промпт дадут идентичный результат. Меняете seed, получаете вариацию. Именно так профессионалы фиксируют удачный кадр или создают серию похожих: играют с seed при неизменном промпте.
Латентное пространство: почему это быстро
Полноразмерная картинка это миллионы пикселей. Гонять шум по ним всем на каждом из десятков шагов было бы чудовищно дорого.
Поэтому современные модели работают не с пикселями, а со сжатым представлением изображения, которое называют латентным пространством. Это как работать с эскизом вместо детальной картины: суть сохранена, а деталей в разы меньше, значит и считать быстрее.
Весь процесс диффузии идёт в этом сжатом виде. И только в самом конце, когда картинка «проявилась», отдельный компонент разворачивает её обратно в полноразмерное изображение со всеми пикселями.
Именно поэтому генерация занимает секунды, а не часы. И именно поэтому существуют разные разрешения: развернуть можно в разный размер, и чем больше, тем дороже.
Теперь понятно, почему модель путает пальцы
Знаменитая проблема кривых рук объясняется ровно устройством диффузии.
Модель не знает, что у человека пять пальцев. У неё нет понятия анатомии, скелета, трёхмерного тела. Она видела миллионы плоских картинок и запомнила статистические закономерности: как обычно выглядят пиксели рядом с другими пикселями.
С руками эти закономерности особенно коварны:
- Пальцы похожи друг на друга. Модель видит группу вытянутых розовых форм и «на всякий случай» добавляет ещё одну.
- Пальцы перекрывают друг друга. На фото часть пальцев спрятана за другими. Модель, восстанавливая их, может «дорисовать» лишние.
- Рука принимает тысячи форм. Лицо почти всегда фронтально и симметрично, а рука бывает в любом положении. Разнообразие сбивает статистику.
- Модель собирает картинку по частям и не ведёт общий счёт. Она может добавить палец с одной стороны, забыв, сколько их уже с другой.
Хорошая новость: новые модели справляются заметно лучше старых. Чем детальнее модель и чем больше в обучении было качественных изображений рук, тем реже она ошибается. Но полностью проблема не ушла и вряд ли уйдёт, пока модели остаются статистическими, а не понимающими анатомию.
Подробный разбор артефактов и способов их чинить есть в отдельной статье: почему нейросеть рисует кривые руки.
Почему модель любит усреднённую красоту
Ещё одно следствие механики. Модель обучена предсказывать самый вероятный результат. А самое вероятное это среднее по обучающим данным.
Поэтому без конкретного промпта она тянет к обобщённо-красивой картинке: симметричные лица, гладкая кожа, приятный свет. Не потому что у неё есть вкус, а потому что таких изображений было в обучении больше всего.
Отсюда практический вывод, который связывает теорию с делом: чтобы получить не среднее, а конкретное, нужно увести модель от медианы точным описанием. Именно об этом статья про то, как писать промпты.
Коротко
Нейросеть не рисует картинку, а проявляет её из случайного шума, шаг за шагом убирая лишнее. Текст промпта направляет эту очистку. Работает всё это в сжатом латентном пространстве ради скорости, а в конце разворачивается в полноразмерное изображение.
Из этой механики следует всё остальное: разные картинки по одному промпту (разный стартовый шум), кривые пальцы (нет понимания анатомии), любовь к усреднённой красоте (модель предсказывает самое вероятное). Понимаешь механику, понимаешь, как с моделью разговаривать.