Автор: Нина Коновалова
Редактура: Дмитрий Раков
Диффузионные модели — один из ключевых инструментов в области генеративных моделей. Они применяются в генерации изображений, текстур, 3D-сцен, а также видео, аудио и др.
[Рисунок 1. Генерация видео с помощью модели Genmo [источник]](https://prod-files-secure.s3.us-west-2.amazonaws.com/fb875fd6-d46b-4f75-8a43-7beca7a54a5e/f4468e89-cea6-449f-aff5-b85a68182812/Sequence_01.mp4)
Рисунок 1. Генерация видео с помощью модели Genmo [источник]
Главное преимущество диффузионных моделей — их способность генерировать высококачественные изображения, обучаясь восстанавливать данные из зашумлённых версий. Однако, несмотря на свою эффективность, диффузионные модели имеют и недостатки, связанные с высокой вычислительной сложностью. Инференс модели обычно занимает много времени, в частности потому что требует большого количества шагов. Это ограничивает их практическое применение в реальном времени и на устройствах с ограниченными ресурсами.
Поэтому ускорение диффузионных моделей — важная задача, которой активно занимаются многие команды.
Ранее мы познакомились с некоторыми способами ускорения диффузионных моделей:
А сегодня мы изучим ещё один тип ускорения — Consistency models и Latent Consistency models. Итак, давайте начинать 🙂
Диффузионные модели можно рассматривать с точки зрения стохастических и обыкновенных дифференциальных уравнений (SDE и ODE соответственно) при переходе от дискретного шага по времени к непрерывному.
В таком случаем мы работаем с непрерывным диффузионным процессом: $\{x(t)\}^T_{t=0}$ , $x(0) \sim p_0$ и $x(T) \sim p_T$.
Мы можем записать прямое и обратное SDE для процесса, характеризующегося функцией $f(x,t)$ и виннеровским процессом $w$.
![Рисунок 2. SDE для прямого и обратного процессов [источник]](https://prod-files-secure.s3.us-west-2.amazonaws.com/fb875fd6-d46b-4f75-8a43-7beca7a54a5e/608b3dc0-1a5d-43c0-8f0f-4b1c8fedcb58/image.png)
Рисунок 2. SDE для прямого и обратного процессов [источник]
Прямой процесс (forward SDE): данные → шум
$dx_t = f(x_t,t)dt + \sigma(t)dw_t$, $t\in[0,T], T>0, f(\cdot, \cdot)$ — некоторая drift force, а $\{w_t\}_{t \in [0,T]}$ — Броуновское движение, взятое с весовым коэффициентом $\sigma(t)$.
При этом мы считаем, что $p_0(x) = p_{data}(x)$, а $p_T$ — нормальное распределение с нулевым средним и единичной дисперсией.