Диффузионная модель

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Исправлены формулы LaTeX (String.raw), убрано дублирование имени)
(глубина, формулы, связность, второй промпт)
 
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 15:00, 16 июня 2026 (MSD)
+
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 20:00, 14 июля 2026 (MSD)
Промпт приводится полностью в [[Обсуждение:Диффузионная модель]]
Промпт приводится полностью в [[Обсуждение:Диффузионная модель]]
}}
}}
{{TOCright}}
{{TOCright}}
-
'''Диффузио́нная мо́дель''' (англ. diffusion model) — класс [[Генеративные модели|генеративных моделей]] глубокого обучения, обучающихся постепенно «разрушать» данные добавлением шума (прямой процесс), а затем обращать этот процесс (обратный процесс), генерируя новые образцы из чистого шума. Диффузионные модели достигли выдающихся результатов в генерации изображений (Stable Diffusion, DALL-E 2/3, Midjourney), аудио (WaveGrad), видео и молекулярных структур, конкурируя с [[Генеративно-состязательная сеть|генеративно-состязательными сетями (GAN)]] по качеству и превосходя их по стабильности обучения.
+
'''Диффузио́нная мо́дель''' (англ. diffusion model) — класс [[Генеративные модели|генеративных моделей]], которые обучаются разрушать данные постепенным добавлением шума (прямой процесс) и восстанавливать их обратным процессом, стартуя из чистого шума. С начала 2020-х они задают стандарт качества в генерации изображений (Stable Diffusion, DALL-E 2/3, Midjourney, Imagen), а также применяются к аудио, видео, 3D и молекулам. По стабильности обучения они обычно превосходят [[Генеративно-состязательная сеть|GAN]], а по качеству выборок — классические VAE; плата — многошаговый (и потому более медленный) сэмплинг.
 +
 
 +
Аналогия: скульптура из камня наоборот. Прямой процесс — аккуратно «зашумлять» статую до бесформенной пыли по известным правилам; обратный — нейросеть учится на каждом уровне шума угадывать, куда сдвинуть пыль, чтобы снова проявилась форма. Генерация — пройти путь от пыли к статуе, опираясь на выученный «реставратор».
== Математическая основа ==
== Математическая основа ==
Строка 10: Строка 12:
=== Прямой процесс (диффузия) ===
=== Прямой процесс (диффузия) ===
-
Прямой процесс постепенно добавляет гауссовский шум к исходному образцу <tex>x_0 \sim q(x_0)</tex> за <tex>T</tex> шагов по фиксированному расписанию <tex>\beta_1, \ldots, \beta_T</tex>:
+
Пусть <tex>x_0 \sim q(x_0)</tex> — образец из распределения данных. Прямой марковский процесс добавляет гауссовский шум по расписанию <tex>\beta_1, \ldots, \beta_T</tex>:
:<tex>q(x_t \mid x_{t-1}) = \mathcal{N}\!\left(x_t;\; \sqrt{1-\beta_t}\, x_{t-1},\; \beta_t I\right).</tex>
:<tex>q(x_t \mid x_{t-1}) = \mathcal{N}\!\left(x_t;\; \sqrt{1-\beta_t}\, x_{t-1},\; \beta_t I\right).</tex>
-
Благодаря удобному свойству гауссовского распределения, можно выразить <tex>x_t</tex> непосредственно через <tex>x_0</tex> без последовательного шагания:
+
Ключевое удобство гауссиан: можно перейти к <tex>x_t</tex> сразу из <tex>x_0</tex>:
:<tex>q(x_t \mid x_0) = \mathcal{N}\!\left(x_t;\; \sqrt{\bar\alpha_t}\, x_0,\; (1-\bar\alpha_t) I\right),</tex>
:<tex>q(x_t \mid x_0) = \mathcal{N}\!\left(x_t;\; \sqrt{\bar\alpha_t}\, x_0,\; (1-\bar\alpha_t) I\right),</tex>
-
где <tex>\alpha_t = 1 - \beta_t</tex>, <tex>\bar\alpha_t = \prod_{s=1}^{t} \alpha_s</tex>. При достаточно большом <tex>T</tex> и правильно выбранном расписании <tex>x_T \approx \mathcal{N}(0, I)</tex>.
+
где <tex>\alpha_t = 1 - \beta_t</tex>, <tex>\bar\alpha_t = \prod_{s=1}^{t} \alpha_s</tex>. При большом <tex>T</tex> (типично 1000) и подходящем schedule <tex>x_T \approx \mathcal{N}(0, I)</tex>. Расписания бывают линейные, cosine (улучшает сохранение сигнала на средних <tex>t</tex>) и обучаемые.
 +
 
 +
С точки зрения непрерывного времени прямой процесс — вариация диффузии Ornstein–Uhlenbeck / VP-SDE (Song et al.); дискретные DDPM — её практическая дискретизация.
=== Обратный процесс ===
=== Обратный процесс ===
-
Обратный процесс <tex>p_\theta(x_{t-1} \mid x_t)</tex> аппроксимируется нейронной сетью с параметрами <tex>\theta</tex>:
+
Генерация требует обратных переходов <tex>p_\theta(x_{t-1} \mid x_t)</tex>. Их параметризуют гауссианой:
:<tex>p_\theta(x_{t-1} \mid x_t) = \mathcal{N}\!\left(x_{t-1};\; \mu_\theta(x_t, t),\; \Sigma_\theta(x_t, t)\right).</tex>
:<tex>p_\theta(x_{t-1} \mid x_t) = \mathcal{N}\!\left(x_{t-1};\; \mu_\theta(x_t, t),\; \Sigma_\theta(x_t, t)\right).</tex>
-
Истинный обратный переход <tex>q(x_{t-1} \mid x_t, x_0)</tex> также гауссовский и аналитически вычислим. Нейронная сеть обучается предсказывать добавленный шум <tex>\epsilon</tex>, что упрощает целевую функцию.
+
Истинный постериор тоже гауссовский. Обозначая <tex>\tilde\beta_t = \frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\,\beta_t</tex>,
-
=== Функция потерь (DDPM) ===
+
:<tex>q(x_{t-1} \mid x_t, x_0) = \mathcal{N}\!\bigl(x_{t-1};\; \tilde\mu_t(x_t, x_0),\; \tilde\beta_t I\bigr),</tex>
-
Ho et al. (2020) предложили упрощённую вариационную нижнюю границу (ELBO), сводящуюся к задаче предсказания шума:
+
:<tex>\tilde\mu_t(x_t, x_0) = \frac{\sqrt{\bar\alpha_{t-1}}\,\beta_t}{1-\bar\alpha_t}\, x_0 + \frac{\sqrt{\alpha_t}\,(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}\, x_t.</tex>
-
:<tex>\mathcal{L}_\text{simple} = \mathbb{E}_{t,\, x_0,\, \epsilon}\!\left[\|\epsilon - \epsilon_\theta(\sqrt{\bar\alpha_t}\, x_0 + \sqrt{1-\bar\alpha_t}\, \epsilon,\; t)\|^2\right],</tex>
+
Сеть не обязана предсказывать <tex>\mu</tex> напрямую: эквивалентные параметризации — шум <tex>\epsilon</tex>, чистый <tex>x_0</tex> или score <tex>\nabla_{x_t}\log q(x_t)</tex>. На практике доминирует ε-параметризация: из предсказанного <tex>\hat\epsilon</tex> восстанавливают оценку <tex>\hat x_0</tex> и подставляют в формулу среднего.
-
где <tex>\epsilon \sim \mathcal{N}(0, I)</tex>, <tex>t \sim \mathcal{U}\{1, \ldots, T\}</tex>. Генерация осуществляется итеративным применением обратных шагов из <tex>x_T \sim \mathcal{N}(0, I)</tex>.
+
Исторически идея non-equilibrium thermodynamics для генерации восходит к Sohl-Dickstein et al. (2015); DDPM сделали её практически работоспособной на изображениях. Параллельная линия — score matching и NCSN/SDE (Song et al.): обучение градиента логарифма плотности зашумлённых данных; DDPM и score-SDE — две записи близкой математики.
-
== Архитектура денойзера ==
+
=== Функция потерь DDPM ===
-
В качестве <tex>\epsilon_\theta</tex> исторически использовались сети типа U-Net с остаточными блоками и механизмом [[Механизм внимания|само-внимания]] (self-attention). В последних моделях (DiT — Diffusion Transformer) U-Net заменяется [[Трансформер (модель)|трансформером]], работающим с патчами латентных представлений.
+
Ho, Jain и Abbeel (2020)<ref name="ho2020">{{статья |автор=Ho J., Jain A., Abbeel P. |заглавие=Denoising Diffusion Probabilistic Models |издание=NeurIPS |год=2020 |ссылка=https://arxiv.org/abs/2006.11239}}</ref> показали, что вариационная нижняя граница (ELBO) после упрощений сводится к регрессии шума:
-
Для обусловленной генерации (conditioned generation) — например, по текстовому описанию применяется '''кросс-внимание''': текстовый эмбеддинг (от CLIP или T5) служит ключами и значениями, а карта признаков изображения запросами. Это позволяет «управлять» генерацией через текст.
+
:<tex>\mathcal{L}_\text{simple} = \mathbb{E}_{t,\, x_0,\, \epsilon}\!\left[\bigl\|\epsilon - \epsilon_\theta(\sqrt{\bar\alpha_t}\, x_0 + \sqrt{1-\bar\alpha_t}\, \epsilon,\; t)\bigr\|^2\right],</tex>
 +
 
 +
где <tex>\epsilon \sim \mathcal{N}(0, I)</tex>, <tex>t \sim \mathcal{U}\{1, \ldots, T\}</tex>. Это обычный MSE: сеть видит зашумлённый пример и момент времени <tex>t</tex> (через [[Нейросетевое встраивание|эмбеддинг]] шага) и должна восстановить добавленный шум. Полный ELBO включает веса по <tex>t</tex> и член для <tex>\Sigma</tex>; <tex>\mathcal{L}_\text{simple}</tex> на практике часто работает лучше «теоретически точной» взвешенной версии.
 +
 
 +
Сэмплинг DDPM: взять <tex>x_T \sim \mathcal{N}(0, I)</tex> и итеративно применять обратный шаг до <tex>x_0</tex>. Без ускорений это сотни–тысячи проходов сети.
 +
 
 +
== Архитектура денойзера: U-Net и DiT ==
 +
 
 +
Исторически <tex>\epsilon_\theta</tex> '''U-Net''' со skip-connections, residual-блоками, групповой/адаптивной нормализацией и вставками [[Механизм внимания|self-attention]] на низком разрешении. Время <tex>t</tex> модулирует блоки (FiLM / AdaGN). Для текст→изображение текстовые токены (CLIP, T5) подаются через '''кросс-внимание''': запросы из карты признаков изображения, ключи/значения из текста.
 +
 
 +
'''Diffusion Transformer (DiT)'''<ref name="peebles2023">{{статья |автор=Peebles W., Xie S. |заглавие=Scalable Diffusion Models with Transformers |издание=ICCV |год=2023 |ссылка=https://arxiv.org/abs/2212.09748}}</ref> заменяет U-Net на [[Трансформер (модель)|трансформер]] по патчам латента. При масштабировании DiT демонстрирует предсказуемые законы качества (аналог scaling laws) и лёг в основу ряда SOTA-систем (в том числе линий Stable Diffusion 3 / Flux-подобных архитектур). Индуктивное смещение сдвигается: меньше «встроенной» многомасштабности свёрток, больше емкости внимания и данных.
== Ускоренные сэмплеры ==
== Ускоренные сэмплеры ==
-
Стандартный DDPM требует <tex>T = 1000</tex> шагов для генерации. Разработаны методы ускорения:
+
Узкое место диффузии — число шагов. Основные семейства:
-
* '''DDIM''' (Denoising Diffusion Implicit Models) детерминированный сэмплер, сокращающий число шагов до 20–50 без переобучения модели.
+
* '''DDIM'''<ref name="song2021">{{статья |автор=Song J., Meng C., Ermon S. |заглавие=Denoising Diffusion Implicit Models |издание=ICLR |год=2021 |ссылка=https://arxiv.org/abs/2010.02502}}</ref> немарковское обобщение: тот же обученный <tex>\epsilon_\theta</tex>, но детерминированная (или частично стохастическая) траектория. Качество при 20–50 шагах близко к DDPM-1000; детерминизм даёт осмысленную интерполяцию латентов.
-
* '''DPM-Solver''' — ODE-решатель второго порядка, обеспечивающий высокое качество при 10–20 шагах.
+
* '''DPM-Solver / DPM-Solver++''' — численные методы для вероятностного ODE/SDE диффузии высокого порядка; часто 10–20 шагов достаточно для высокого FID.
-
* '''Consistency Models''' — обучаются напрямую предсказывать <tex>x_0</tex> из любого <tex>x_t</tex>, позволяя сэмплировать за 1–4 шага.
+
* '''Consistency Models''' — обучение (или дистилляция) отображения <tex>x_t \mapsto x_0</tex>, согласованного вдоль траектории; сэмплинг за 1–4 шага ценой отдельного обучения/дистилляции.
 +
* '''Дистилляция и Progressive Distillation''' — учитель с многими шагами учит ученика с меньшим числом; крайний случай — одношаговые генераторы, конкурирующие с GAN по скорости.
 +
 
 +
Связь с score-based моделями (Song et al., SDE/ODE) показывает, что многие сэмплеры — разные дискретизации одной непрерывной динамики.
== Латентная диффузия ==
== Латентная диффузия ==
-
Вместо работы в пиксельном пространстве Rombach et al. (2022) предложили '''латентные диффузионные модели''' (LDM), работающие в компрессированном латентном пространстве [[Автокодировщик|вариационного автокодировщика]]. Это на порядок снижает вычислительные затраты при сопоставимом качестве. Stable Diffusion — наиболее известная реализация LDM.
+
Работа в пикселях дорога. Rombach et al. (2022)<ref name="rombach2022">{{статья |автор=Rombach R., Blattmann A., Lorenz D., Esser P., Ommer B. |заглавие=High-Resolution Image Synthesis with Latent Diffusion Models |издание=CVPR |год=2022 |ссылка=https://arxiv.org/abs/2112.10752}}</ref> предложили '''Latent Diffusion Models (LDM)''': сначала VAE сжимает изображение в латент <tex>z = \mathcal{E}(x)</tex>, диффузия идёт в пространстве <tex>z</tex>, затем декодер <tex>\mathcal{D}(z)</tex> восстанавливает пиксели. Вычислительные затраты падают на порядок при сопоставимом восприятии. Stable Diffusion — массовая реализация LDM; открытые веса и экосистема ControlNet/LoRA сделали её стандартом de facto.
 +
 
 +
Компромисс: артефакты и предел детализации во многом наследуются от VAE; для сверхвысоких разрешений используют каскады, тайлинг или пиксельные/латентные гибриды.
== Управление генерацией ==
== Управление генерацией ==
-
* '''Classifier-Free Guidance (CFG)''' — во время обучения с некоторой вероятностью убирается условие (текст), что позволяет при генерации интерполировать между условным и безусловным предсказанием: <tex>\tilde\epsilon = \epsilon_\theta(x_t, \emptyset) + w\,[\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \emptyset)]</tex>. Параметр <tex>w > 1</tex> усиливает следование условию за счёт разнообразия.
+
* '''Classifier-Free Guidance (CFG)''' — при обучении условие <tex>c</tex> (текст, класс) случайно отбрасывается. На инференсе:
-
* '''ControlNet''' — дополнительная ветвь сети, обусловливающая генерацию на структурированные условия: карты краёв (Canny), позы, глубину и т.д.
+
 
-
* '''Inpainting, img2img''' — диффузия применяется к частично зашумлённому изображению, обеспечивая редактирование и завершение.
+
:<tex>\tilde\epsilon = \epsilon_\theta(x_t, \emptyset) + w\,\bigl[\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \emptyset)\bigr].</tex>
 +
 
 +
Параметр <tex>w > 1</tex> усиливает следование промпту ценой разнообразия и иногда перенасыщения. Связь с [[Промпт-инжиниринг|промпт-инжинирингом]]: формулировка <tex>c</tex> и выбор <tex>w</tex> — основные рычаги пользователя.
 +
 
 +
* '''ControlNet''' — параллельная ветвь, в которую подают Canny, глубину, позу, сегментацию и т.п.; нулевые свёртки в начале обучения не ломают предобученный денойзер.
 +
* '''Inpainting / img2img''' — часть латента фиксируется из зашумлённого исходника, остальное генерируется; даёт редактирование и вариации.
 +
* '''IP-Adapter, reference attention''' — условие по изображению-референсу без полного переобучения.
 +
 
 +
После выравнивания текстовых моделей идеи RLHF/предпочтений переносятся и на диффузию (человеческие рейтинг-модели, DPO-подобные цели для денойзера), хотя зрелость методов ниже, чем у [[Обучение с подкреплением из обратной связи человека (RLHF)|LLM-RLHF]].
== Применения ==
== Применения ==
-
* '''Генерация изображений''' — Stable Diffusion, DALL-E 2/3, Midjourney, Adobe Firefly.
+
* '''Изображения''' — Stable Diffusion, DALL-E, Midjourney, Imagen, Adobe Firefly; дизайн, иллюстрация, синтетические данные.
-
* '''Генерация видео''' — Sora (OpenAI), Stable Video Diffusion.
+
* '''Видео''' — модели вроде Stable Video Diffusion, Sora и открытые аналоги; выше стоимость и острее проблема временной согласованности.
-
* '''Генерация аудио и музыки''' — WaveGrad, AudioLDM, MusicGen.
+
* '''Аудио и музыка''' — WaveGrad, AudioLDM, диффузионные вокодеры.
-
* '''Молекулярный дизайн''' — генерация молекул белков (RFDiffusion), дизайн лекарственных препаратов.
+
* '''Наука''' — RFDiffusion и родственные методы для белков/лигандов; генерация конформаций и каркасов молекул.
-
* '''3D-генерация''' — DreamFusion применяет Score Distillation Sampling для оптимизации NeRF под текстовый запрос.
+
* '''3D''' — DreamFusion и SDS (Score Distillation Sampling): диффузионный prior оптимизирует NeRF/Gaussian Splatting по тексту.
 +
* '''Текст''' — экспериментальные диффузионные языковые модели (альтернатива авторегрессии [[Большая языковая модель|LLM]]); пока не вытеснили трансформерный декодер, но показывают иной trade-off параллелизма и качества.
-
== Сравнение с другими генеративными моделями ==
+
== Сравнение с GAN, VAE и normalizing flow ==
{| class="wikitable"
{| class="wikitable"
|-
|-
-
! Модель !! Качество !! Стабильность обучения !! Скорость генерации !! Управляемость
+
! || Диффузия || [[Генеративно-состязательная сеть|GAN]] || VAE || Flow
|-
|-
-
| Диффузионная || Очень высокое || Высокая || Медленная (много шагов) || Высокая
+
| Качество выборок || Очень высокое || Высокое (при удачном обучении) || Среднее / размытое || Высокое на простых доменах
|-
|-
-
| [[Генеративно-состязательная сеть|GAN]] || Высокое || Нестабильная (mode collapse) || Быстрая (1 проход) || Умеренная
+
| Стабильность обучения || Высокая (MSE/ELBO) || Низкая (mode collapse, хрупкий минимум) || Высокая || Высокая
|-
|-
-
| VAE || Среднее || Высокая || Быстрая || Ограниченная
+
| Скорость генерации || Медленная (много шагов; дистилляция помогает) || Быстрая (один проход) || Быстрая || Быстрая / средняя
|-
|-
-
| Flow-based || Высокое || Высокая || Средняя || Умеренная
+
| Правдоподобие / ELBO || Да (вариационная оценка) || Нет явной || Да || Да (точный likelihood)
 +
|-
 +
| Управляемость || Высокая (CFG, ControlNet, inpaint) || Средняя (зависит от архитектуры) || Ограниченная || Средняя
 +
|-
 +
| Память / compute обучения || Высокие || Средние || Средние || Высокие на высоком разрешении
|}
|}
 +
 +
Практически: если нужна максимальная визуальная fidelity и контроль — диффузия; если жёсткий realtime на краю — GAN или дистиллированная диффузия; если нужен точный likelihood — flow/VAE-подобные модели.
 +
 +
== Ограничения и открытые вопросы ==
 +
 +
* '''Стоимость сэмплинга''' — даже с DDIM/DPM десятки проходов сети дороже одного forward GAN; дистилляция сужает разрыв, но не всегда сохраняет редактируемость.
 +
* '''Контроль и безопасность''' — CFG усиливает промпт, но не гарантирует фактичность или соблюдение ограничений; для продуктов нужны фильтры, watermarking и policy-слой (частично пересекается с практиками выравнивания [[Большая языковая модель|LLM]]).
 +
* '''Видео и 3D''' — согласованность во времени/пространстве всё ещё хрупка; compute растёт быстрее, чем наивное «добавить ось».
 +
* '''Оценка качества''' — FID/CLIPScore коррелируют с восприятием неполно; human eval и task-specific метрики остаются необходимы.
 +
* '''Альтернативы''' — consistency, flow-matching / rectified flow, авторегрессия по токенам изображения (как в некоторых мультимодальных LLM) конкурируют на скорости и простоте пайплайна.
 +
 +
Тем не менее именно диффузия в латентном пространстве с кросс-вниманием к тексту задала канон open-source генерации изображений и показала, что [[Трансформер (модель)|трансформер]] как денойзер (DiT) масштабируется предсказуемо — в духе scaling laws языковых моделей.
== См. также ==
== См. также ==
* [[Трансформер (модель)]]
* [[Трансформер (модель)]]
* [[Механизм внимания]]
* [[Механизм внимания]]
 +
* [[Большая языковая модель]]
 +
* [[Нейросетевое встраивание]]
 +
* [[Промпт-инжиниринг]]
 +
* [[Обучение с подкреплением из обратной связи человека (RLHF)]]
* [[Генеративно-состязательная сеть]]
* [[Генеративно-состязательная сеть]]
* [[Автокодировщик]]
* [[Автокодировщик]]
-
* [[Нейросетевое встраивание]]
 
-
* [[Большая языковая модель]]
 
== Примечания ==
== Примечания ==
Строка 95: Строка 141:
== Литература ==
== Литература ==
 +
* {{статья |автор=Sohl-Dickstein J., Weiss E., Maheswaranathan N., Ganguli S. |заглавие=Deep Unsupervised Learning using Nonequilibrium Thermodynamics |издание=ICML |год=2015 |ссылка=https://arxiv.org/abs/1503.03585}}
* {{статья |автор=Ho J., Jain A., Abbeel P. |заглавие=Denoising Diffusion Probabilistic Models |издание=NeurIPS |год=2020 |ссылка=https://arxiv.org/abs/2006.11239}}
* {{статья |автор=Ho J., Jain A., Abbeel P. |заглавие=Denoising Diffusion Probabilistic Models |издание=NeurIPS |год=2020 |ссылка=https://arxiv.org/abs/2006.11239}}
* {{статья |автор=Song J., Meng C., Ermon S. |заглавие=Denoising Diffusion Implicit Models |издание=ICLR |год=2021 |ссылка=https://arxiv.org/abs/2010.02502}}
* {{статья |автор=Song J., Meng C., Ermon S. |заглавие=Denoising Diffusion Implicit Models |издание=ICLR |год=2021 |ссылка=https://arxiv.org/abs/2010.02502}}
 +
* {{статья |автор=Song Y. et al. |заглавие=Score-Based Generative Modeling through Stochastic Differential Equations |издание=ICLR |год=2021 |ссылка=https://arxiv.org/abs/2011.13456}}
* {{статья |автор=Rombach R., Blattmann A., Lorenz D., Esser P., Ommer B. |заглавие=High-Resolution Image Synthesis with Latent Diffusion Models |издание=CVPR |год=2022 |ссылка=https://arxiv.org/abs/2112.10752}}
* {{статья |автор=Rombach R., Blattmann A., Lorenz D., Esser P., Ommer B. |заглавие=High-Resolution Image Synthesis with Latent Diffusion Models |издание=CVPR |год=2022 |ссылка=https://arxiv.org/abs/2112.10752}}
 +
* {{статья |автор=Ho J., Salimans T. |заглавие=Classifier-Free Diffusion Guidance |издание=NeurIPS Workshop |год=2021 |ссылка=https://arxiv.org/abs/2207.12598}}
* {{статья |автор=Peebles W., Xie S. |заглавие=Scalable Diffusion Models with Transformers |издание=ICCV |год=2023 |ссылка=https://arxiv.org/abs/2212.09748}}
* {{статья |автор=Peebles W., Xie S. |заглавие=Scalable Diffusion Models with Transformers |издание=ICCV |год=2023 |ссылка=https://arxiv.org/abs/2212.09748}}
 +
* {{статья |автор=Song Y., Dhariwal P., Chen M., Sutskever I. |заглавие=Consistency Models |издание=ICML |год=2023 |ссылка=https://arxiv.org/abs/2303.01469}}
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
[[Категория:Нейронные сети]]
[[Категория:Нейронные сети]]
[[Категория:Генеративные модели]]
[[Категория:Генеративные модели]]
 +
[[Категория:Глубокое обучение]]

Текущая версия

Статья написана с использованием LLM Claude Sonnet 4 и проверена участником Emil Petrov 20:00, 14 июля 2026 (MSD)

Промпт приводится полностью в Обсуждение:Диффузионная модель


Содержание

Диффузио́нная мо́дель (англ. diffusion model) — класс генеративных моделей, которые обучаются разрушать данные постепенным добавлением шума (прямой процесс) и восстанавливать их обратным процессом, стартуя из чистого шума. С начала 2020-х они задают стандарт качества в генерации изображений (Stable Diffusion, DALL-E 2/3, Midjourney, Imagen), а также применяются к аудио, видео, 3D и молекулам. По стабильности обучения они обычно превосходят GAN, а по качеству выборок — классические VAE; плата — многошаговый (и потому более медленный) сэмплинг.

Аналогия: скульптура из камня наоборот. Прямой процесс — аккуратно «зашумлять» статую до бесформенной пыли по известным правилам; обратный — нейросеть учится на каждом уровне шума угадывать, куда сдвинуть пыль, чтобы снова проявилась форма. Генерация — пройти путь от пыли к статуе, опираясь на выученный «реставратор».

Математическая основа

Прямой процесс (диффузия)

Пусть x_0 \sim q(x_0) — образец из распределения данных. Прямой марковский процесс добавляет гауссовский шум по расписанию \beta_1, \ldots, \beta_T:

q(x_t \mid x_{t-1}) = \mathcal{N}\!\left(x_t;\; \sqrt{1-\beta_t}\, x_{t-1},\; \beta_t I\right).

Ключевое удобство гауссиан: можно перейти к x_t сразу из x_0:

q(x_t \mid x_0) = \mathcal{N}\!\left(x_t;\; \sqrt{\bar\alpha_t}\, x_0,\; (1-\bar\alpha_t) I\right),

где \alpha_t = 1 - \beta_t, \bar\alpha_t = \prod_{s=1}^{t} \alpha_s. При большом T (типично 1000) и подходящем schedule x_T \approx \mathcal{N}(0, I). Расписания бывают линейные, cosine (улучшает сохранение сигнала на средних t) и обучаемые.

С точки зрения непрерывного времени прямой процесс — вариация диффузии Ornstein–Uhlenbeck / VP-SDE (Song et al.); дискретные DDPM — её практическая дискретизация.

Обратный процесс

Генерация требует обратных переходов p_\theta(x_{t-1} \mid x_t). Их параметризуют гауссианой:

p_\theta(x_{t-1} \mid x_t) = \mathcal{N}\!\left(x_{t-1};\; \mu_\theta(x_t, t),\; \Sigma_\theta(x_t, t)\right).

Истинный постериор тоже гауссовский. Обозначая \tilde\beta_t = \frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\,\beta_t,

q(x_{t-1} \mid x_t, x_0) = \mathcal{N}\!\bigl(x_{t-1};\; \tilde\mu_t(x_t, x_0),\; \tilde\beta_t I\bigr),
\tilde\mu_t(x_t, x_0) = \frac{\sqrt{\bar\alpha_{t-1}}\,\beta_t}{1-\bar\alpha_t}\, x_0 + \frac{\sqrt{\alpha_t}\,(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}\, x_t.

Сеть не обязана предсказывать \mu напрямую: эквивалентные параметризации — шум \epsilon, чистый x_0 или score \nabla_{x_t}\log q(x_t). На практике доминирует ε-параметризация: из предсказанного \hat\epsilon восстанавливают оценку \hat x_0 и подставляют в формулу среднего.

Исторически идея non-equilibrium thermodynamics для генерации восходит к Sohl-Dickstein et al. (2015); DDPM сделали её практически работоспособной на изображениях. Параллельная линия — score matching и NCSN/SDE (Song et al.): обучение градиента логарифма плотности зашумлённых данных; DDPM и score-SDE — две записи близкой математики.

Функция потерь DDPM

Ho, Jain и Abbeel (2020)[1] показали, что вариационная нижняя граница (ELBO) после упрощений сводится к регрессии шума:

\mathcal{L}_\text{simple} = \mathbb{E}_{t,\, x_0,\, \epsilon}\!\left[\bigl\|\epsilon - \epsilon_\theta(\sqrt{\bar\alpha_t}\, x_0 + \sqrt{1-\bar\alpha_t}\, \epsilon,\; t)\bigr\|^2\right],

где \epsilon \sim \mathcal{N}(0, I), t \sim \mathcal{U}\{1, \ldots, T\}. Это обычный MSE: сеть видит зашумлённый пример и момент времени t (через эмбеддинг шага) и должна восстановить добавленный шум. Полный ELBO включает веса по t и член для \Sigma; \mathcal{L}_\text{simple} на практике часто работает лучше «теоретически точной» взвешенной версии.

Сэмплинг DDPM: взять x_T \sim \mathcal{N}(0, I) и итеративно применять обратный шаг до x_0. Без ускорений это сотни–тысячи проходов сети.

Архитектура денойзера: U-Net и DiT

Исторически \epsilon_\thetaU-Net со skip-connections, residual-блоками, групповой/адаптивной нормализацией и вставками self-attention на низком разрешении. Время t модулирует блоки (FiLM / AdaGN). Для текст→изображение текстовые токены (CLIP, T5) подаются через кросс-внимание: запросы из карты признаков изображения, ключи/значения из текста.

Diffusion Transformer (DiT)[1] заменяет U-Net на трансформер по патчам латента. При масштабировании DiT демонстрирует предсказуемые законы качества (аналог scaling laws) и лёг в основу ряда SOTA-систем (в том числе линий Stable Diffusion 3 / Flux-подобных архитектур). Индуктивное смещение сдвигается: меньше «встроенной» многомасштабности свёрток, больше — емкости внимания и данных.

Ускоренные сэмплеры

Узкое место диффузии — число шагов. Основные семейства:

  • DDIM[1] — немарковское обобщение: тот же обученный \epsilon_\theta, но детерминированная (или частично стохастическая) траектория. Качество при 20–50 шагах близко к DDPM-1000; детерминизм даёт осмысленную интерполяцию латентов.
  • DPM-Solver / DPM-Solver++ — численные методы для вероятностного ODE/SDE диффузии высокого порядка; часто 10–20 шагов достаточно для высокого FID.
  • Consistency Models — обучение (или дистилляция) отображения x_t \mapsto x_0, согласованного вдоль траектории; сэмплинг за 1–4 шага ценой отдельного обучения/дистилляции.
  • Дистилляция и Progressive Distillation — учитель с многими шагами учит ученика с меньшим числом; крайний случай — одношаговые генераторы, конкурирующие с GAN по скорости.

Связь с score-based моделями (Song et al., SDE/ODE) показывает, что многие сэмплеры — разные дискретизации одной непрерывной динамики.

Латентная диффузия

Работа в пикселях дорога. Rombach et al. (2022)[1] предложили Latent Diffusion Models (LDM): сначала VAE сжимает изображение в латент z = \mathcal{E}(x), диффузия идёт в пространстве z, затем декодер \mathcal{D}(z) восстанавливает пиксели. Вычислительные затраты падают на порядок при сопоставимом восприятии. Stable Diffusion — массовая реализация LDM; открытые веса и экосистема ControlNet/LoRA сделали её стандартом de facto.

Компромисс: артефакты и предел детализации во многом наследуются от VAE; для сверхвысоких разрешений используют каскады, тайлинг или пиксельные/латентные гибриды.

Управление генерацией

  • Classifier-Free Guidance (CFG) — при обучении условие c (текст, класс) случайно отбрасывается. На инференсе:
\tilde\epsilon = \epsilon_\theta(x_t, \emptyset) + w\,\bigl[\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \emptyset)\bigr].

Параметр w > 1 усиливает следование промпту ценой разнообразия и иногда перенасыщения. Связь с промпт-инжинирингом: формулировка c и выбор w — основные рычаги пользователя.

  • ControlNet — параллельная ветвь, в которую подают Canny, глубину, позу, сегментацию и т.п.; нулевые свёртки в начале обучения не ломают предобученный денойзер.
  • Inpainting / img2img — часть латента фиксируется из зашумлённого исходника, остальное генерируется; даёт редактирование и вариации.
  • IP-Adapter, reference attention — условие по изображению-референсу без полного переобучения.

После выравнивания текстовых моделей идеи RLHF/предпочтений переносятся и на диффузию (человеческие рейтинг-модели, DPO-подобные цели для денойзера), хотя зрелость методов ниже, чем у LLM-RLHF.

Применения

  • Изображения — Stable Diffusion, DALL-E, Midjourney, Imagen, Adobe Firefly; дизайн, иллюстрация, синтетические данные.
  • Видео — модели вроде Stable Video Diffusion, Sora и открытые аналоги; выше стоимость и острее проблема временной согласованности.
  • Аудио и музыка — WaveGrad, AudioLDM, диффузионные вокодеры.
  • Наука — RFDiffusion и родственные методы для белков/лигандов; генерация конформаций и каркасов молекул.
  • 3D — DreamFusion и SDS (Score Distillation Sampling): диффузионный prior оптимизирует NeRF/Gaussian Splatting по тексту.
  • Текст — экспериментальные диффузионные языковые модели (альтернатива авторегрессии LLM); пока не вытеснили трансформерный декодер, но показывают иной trade-off параллелизма и качества.

Сравнение с GAN, VAE и normalizing flow

Диффузия GAN VAE Flow
Качество выборок Очень высокое Высокое (при удачном обучении) Среднее / размытое Высокое на простых доменах
Стабильность обучения Высокая (MSE/ELBO) Низкая (mode collapse, хрупкий минимум) Высокая Высокая
Скорость генерации Медленная (много шагов; дистилляция помогает) Быстрая (один проход) Быстрая Быстрая / средняя
Правдоподобие / ELBO Да (вариационная оценка) Нет явной Да Да (точный likelihood)
Управляемость Высокая (CFG, ControlNet, inpaint) Средняя (зависит от архитектуры) Ограниченная Средняя
Память / compute обучения Высокие Средние Средние Высокие на высоком разрешении

Практически: если нужна максимальная визуальная fidelity и контроль — диффузия; если жёсткий realtime на краю — GAN или дистиллированная диффузия; если нужен точный likelihood — flow/VAE-подобные модели.

Ограничения и открытые вопросы

  • Стоимость сэмплинга — даже с DDIM/DPM десятки проходов сети дороже одного forward GAN; дистилляция сужает разрыв, но не всегда сохраняет редактируемость.
  • Контроль и безопасность — CFG усиливает промпт, но не гарантирует фактичность или соблюдение ограничений; для продуктов нужны фильтры, watermarking и policy-слой (частично пересекается с практиками выравнивания LLM).
  • Видео и 3D — согласованность во времени/пространстве всё ещё хрупка; compute растёт быстрее, чем наивное «добавить ось».
  • Оценка качества — FID/CLIPScore коррелируют с восприятием неполно; human eval и task-specific метрики остаются необходимы.
  • Альтернативы — consistency, flow-matching / rectified flow, авторегрессия по токенам изображения (как в некоторых мультимодальных LLM) конкурируют на скорости и простоте пайплайна.

Тем не менее именно диффузия в латентном пространстве с кросс-вниманием к тексту задала канон open-source генерации изображений и показала, что трансформер как денойзер (DiT) масштабируется предсказуемо — в духе scaling laws языковых моделей.

См. также

Примечания

Литература

  • Sohl-Dickstein J., Weiss E., Maheswaranathan N., Ganguli S. Deep Unsupervised Learning using Nonequilibrium Thermodynamics // ICML. — 2015.
  • Ho J., Jain A., Abbeel P. Denoising Diffusion Probabilistic Models // NeurIPS. — 2020.
  • Song J., Meng C., Ermon S. Denoising Diffusion Implicit Models // ICLR. — 2021.
  • Song Y. et al. Score-Based Generative Modeling through Stochastic Differential Equations // ICLR. — 2021.
  • Rombach R., Blattmann A., Lorenz D., Esser P., Ommer B. High-Resolution Image Synthesis with Latent Diffusion Models // CVPR. — 2022.
  • Ho J., Salimans T. Classifier-Free Diffusion Guidance // NeurIPS Workshop. — 2021.
  • Peebles W., Xie S. Scalable Diffusion Models with Transformers // ICCV. — 2023.
  • Song Y., Dhariwal P., Chen M., Sutskever I. Consistency Models // ICML. — 2023.
Личные инструменты