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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая статья: диффузионные модели (DDPM, LDM, Stable Diffusion), Claude Sonnet 4)
(Исправлены формулы LaTeX (String.raw), убрано дублирование имени)
 
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] [[Участник:Emil Petrov|Emil Petrov]] 14:47, 16 июня 2026 (MSD)
+
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 15:00, 16 июня 2026 (MSD)
Промпт приводится полностью в [[Обсуждение:Диффузионная модель]]
Промпт приводится полностью в [[Обсуждение:Диффузионная модель]]
}}
}}
Строка 10: Строка 10:
=== Прямой процесс (диффузия) ===
=== Прямой процесс (диффузия) ===
-
Прямой процесс постепенно добавляет гауссовский шум к исходному образцу <tex>x_0 sim q(x_0)</tex> за <tex>T</tex> шагов по фиксированному расписанию <tex>�eta_1, ldots, �eta_T</tex>:
+
Прямой процесс постепенно добавляет гауссовский шум к исходному образцу <tex>x_0 \sim q(x_0)</tex> за <tex>T</tex> шагов по фиксированному расписанию <tex>\beta_1, \ldots, \beta_T</tex>:
-
:<tex>q(x_t mid x_{t-1}) = mathcal{N}!left(x_t;; sqrt{1-�eta_t}, x_{t-1},; �eta_t I
+
:<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>
-
ight).</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{�aralpha_t}, x_0,; (1-�aralpha_t) I
+
:<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>
-
ight),</tex>
+
-
где <tex>alpha_t = 1 - �eta_t</tex>, <tex>�aralpha_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> и правильно выбранном расписании <tex>x_T \approx \mathcal{N}(0, I)</tex>.
=== Обратный процесс ===
=== Обратный процесс ===
-
Обратный процесс <tex>p_ heta(x_{t-1} mid x_t)</tex> аппроксимируется нейронной сетью с параметрами <tex> heta</tex>:
+
Обратный процесс <tex>p_\theta(x_{t-1} \mid x_t)</tex> аппроксимируется нейронной сетью с параметрами <tex>\theta</tex>:
-
:<tex>p_ heta(x_{t-1} mid x_t) = mathcal{N}!left(x_{t-1};; mu_ heta(x_t, t),; Sigma_ heta(x_t, t)
+
:<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>
-
ight).</tex>
+
-
Истинный обратный переход <tex>q(x_{t-1} mid x_t, x_0)</tex> также гауссовский и аналитически вычислим. Нейронная сеть обучается предсказывать добавленный шум <tex>epsilon</tex>, что упрощает целевую функцию.
+
Истинный обратный переход <tex>q(x_{t-1} \mid x_t, x_0)</tex> также гауссовский и аналитически вычислим. Нейронная сеть обучается предсказывать добавленный шум <tex>\epsilon</tex>, что упрощает целевую функцию.
=== Функция потерь (DDPM) ===
=== Функция потерь (DDPM) ===
Строка 35: Строка 32:
Ho et al. (2020) предложили упрощённую вариационную нижнюю границу (ELBO), сводящуюся к задаче предсказания шума:
Ho et al. (2020) предложили упрощённую вариационную нижнюю границу (ELBO), сводящуюся к задаче предсказания шума:
-
:<tex>mathcal{L}_ ext{simple} = mathbb{E}_{t,, x_0,, epsilon}!left[|epsilon - epsilon_ heta(sqrt{�aralpha_t}, x_0 + sqrt{1-�aralpha_t}, epsilon,; t)|^2
+
:<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>
-
ight],</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>.
+
где <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>.
== Архитектура денойзера ==
== Архитектура денойзера ==
-
В качестве <tex>epsilon_ heta</tex> исторически использовались сети типа U-Net с остаточными блоками и механизмом [[Механизм внимания|само-внимания]] (self-attention). В последних моделях (DiT — Diffusion Transformer) U-Net заменяется [[Трансформер (модель)|трансформером]], работающим с патчами латентных представлений.
+
В качестве <tex>\epsilon_\theta</tex> исторически использовались сети типа U-Net с остаточными блоками и механизмом [[Механизм внимания|само-внимания]] (self-attention). В последних моделях (DiT — Diffusion Transformer) U-Net заменяется [[Трансформер (модель)|трансформером]], работающим с патчами латентных представлений.
Для обусловленной генерации (conditioned generation) — например, по текстовому описанию — применяется '''кросс-внимание''': текстовый эмбеддинг (от CLIP или T5) служит ключами и значениями, а карта признаков изображения — запросами. Это позволяет «управлять» генерацией через текст.
Для обусловленной генерации (conditioned generation) — например, по текстовому описанию — применяется '''кросс-внимание''': текстовый эмбеддинг (от CLIP или T5) служит ключами и значениями, а карта признаков изображения — запросами. Это позволяет «управлять» генерацией через текст.
Строка 60: Строка 56:
== Управление генерацией ==
== Управление генерацией ==
-
* '''Classifier-Free Guidance (CFG)''' — во время обучения с некоторой вероятностью убирается условие (текст), что позволяет при генерации интерполировать между условным и безусловным предсказанием: <tex> ildeepsilon = epsilon_ heta(x_t, emptyset) + w,[epsilon_ heta(x_t, c) - epsilon_ heta(x_t, emptyset)]</tex>. Параметр <tex>w > 1</tex> усиливает следование условию за счёт разнообразия.
+
* '''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> усиливает следование условию за счёт разнообразия.
* '''ControlNet''' — дополнительная ветвь сети, обусловливающая генерацию на структурированные условия: карты краёв (Canny), позы, глубину и т.д.
* '''ControlNet''' — дополнительная ветвь сети, обусловливающая генерацию на структурированные условия: карты краёв (Canny), позы, глубину и т.д.
* '''Inpainting, img2img''' — диффузия применяется к частично зашумлённому изображению, обеспечивая редактирование и завершение.
* '''Inpainting, img2img''' — диффузия применяется к частично зашумлённому изображению, обеспечивая редактирование и завершение.

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

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

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


Содержание

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

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

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

Прямой процесс постепенно добавляет гауссовский шум к исходному образцу x_0 \sim q(x_0) за T шагов по фиксированному расписанию \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 и правильно выбранном расписании x_T \approx \mathcal{N}(0, I).

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

Обратный процесс p_\theta(x_{t-1} \mid x_t) аппроксимируется нейронной сетью с параметрами \theta:

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).

Истинный обратный переход q(x_{t-1} \mid x_t, x_0) также гауссовский и аналитически вычислим. Нейронная сеть обучается предсказывать добавленный шум \epsilon, что упрощает целевую функцию.

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

Ho et al. (2020) предложили упрощённую вариационную нижнюю границу (ELBO), сводящуюся к задаче предсказания шума:

\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],

где \epsilon \sim \mathcal{N}(0, I), t \sim \mathcal{U}\{1, \ldots, T\}. Генерация осуществляется итеративным применением обратных шагов из x_T \sim \mathcal{N}(0, I).

Архитектура денойзера

В качестве \epsilon_\theta исторически использовались сети типа U-Net с остаточными блоками и механизмом само-внимания (self-attention). В последних моделях (DiT — Diffusion Transformer) U-Net заменяется трансформером, работающим с патчами латентных представлений.

Для обусловленной генерации (conditioned generation) — например, по текстовому описанию — применяется кросс-внимание: текстовый эмбеддинг (от CLIP или T5) служит ключами и значениями, а карта признаков изображения — запросами. Это позволяет «управлять» генерацией через текст.

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

Стандартный DDPM требует T = 1000 шагов для генерации. Разработаны методы ускорения:

  • DDIM (Denoising Diffusion Implicit Models) — детерминированный сэмплер, сокращающий число шагов до 20–50 без переобучения модели.
  • DPM-Solver — ODE-решатель второго порядка, обеспечивающий высокое качество при 10–20 шагах.
  • Consistency Models — обучаются напрямую предсказывать x_0 из любого x_t, позволяя сэмплировать за 1–4 шага.

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

Вместо работы в пиксельном пространстве Rombach et al. (2022) предложили латентные диффузионные модели (LDM), работающие в компрессированном латентном пространстве вариационного автокодировщика. Это на порядок снижает вычислительные затраты при сопоставимом качестве. Stable Diffusion — наиболее известная реализация LDM.

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

  • Classifier-Free Guidance (CFG) — во время обучения с некоторой вероятностью убирается условие (текст), что позволяет при генерации интерполировать между условным и безусловным предсказанием: \tilde\epsilon = \epsilon_\theta(x_t, \emptyset) + w\,[\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \emptyset)]. Параметр w > 1 усиливает следование условию за счёт разнообразия.
  • ControlNet — дополнительная ветвь сети, обусловливающая генерацию на структурированные условия: карты краёв (Canny), позы, глубину и т.д.
  • Inpainting, img2img — диффузия применяется к частично зашумлённому изображению, обеспечивая редактирование и завершение.

Применения

  • Генерация изображений — Stable Diffusion, DALL-E 2/3, Midjourney, Adobe Firefly.
  • Генерация видео — Sora (OpenAI), Stable Video Diffusion.
  • Генерация аудио и музыки — WaveGrad, AudioLDM, MusicGen.
  • Молекулярный дизайн — генерация молекул белков (RFDiffusion), дизайн лекарственных препаратов.
  • 3D-генерация — DreamFusion применяет Score Distillation Sampling для оптимизации NeRF под текстовый запрос.

Сравнение с другими генеративными моделями

Модель Качество Стабильность обучения Скорость генерации Управляемость
Диффузионная Очень высокое Высокая Медленная (много шагов) Высокая
GAN Высокое Нестабильная (mode collapse) Быстрая (1 проход) Умеренная
VAE Среднее Высокая Быстрая Ограниченная
Flow-based Высокое Высокая Средняя Умеренная

См. также

Примечания

Литература

  • Ho J., Jain A., Abbeel P. Denoising Diffusion Probabilistic Models // NeurIPS. — 2020.
  • Song J., Meng C., Ermon S. Denoising Diffusion Implicit Models // ICLR. — 2021.
  • Rombach R., Blattmann A., Lorenz D., Esser P., Ommer B. High-Resolution Image Synthesis with Latent Diffusion Models // CVPR. — 2022.
  • Peebles W., Xie S. Scalable Diffusion Models with Transformers // ICCV. — 2023.
Личные инструменты