Автор: Нина Коновалова Редактура: Игорь Иткин, Александр Ковальчук
Диффузионные модели на стыке физики и машинного обучения — мощный инструмент для моделирования сложных процессов генерации данных. За последние годы они получили широкое признание благодаря возможности эффективно генерировать реалистичные изображения, видео и даже звуковые сигналы.
[Рисунок 1. Пример генерации видео с помощью диффузионных моделей [источник]](https://prod-files-secure.s3.us-west-2.amazonaws.com/fb875fd6-d46b-4f75-8a43-7beca7a54a5e/65518d95-6c15-4079-8461-11ac48716cad/SaveTwitter.Net_1806935525103980544(720p).mp4)
Рисунок 1. Пример генерации видео с помощью диффузионных моделей [источник]
Несмотря на свои сильные стороны (качество и разнообразие генерации), диффузионные модели остаются медленными генераторами. Для генерации одного сэмпла часто нужно много запусков одной нейронной сети, что занимает немало времени в сравнении с GANs.
Поэтому сегодня мы рассмотрим метод ускорения диффузионных моделей через сокращение количества шагов генерации, а именно — работу InstaFlow.
Спойлер: будет математика 😟
Но не пугайтесь! В конце мы собрали саммари, чтобы легче ориентироваться во всём происходящем и возвращаться к нужным местам при необходимости 😊
Итак, наш план:
Рисунок 2. Перенос одного распределения в другое [источник]
Задача оптимального транспорта имеет непосредственное отношение к генеративным моделям и переносу стиля. Как перенести одно распределение в другое, ещё и сделать это оптимальным способом? И что значит «оптимальным»? Давайте обсудим эту задачу подробнее 🙂
Есть два эмпирических распределения $\pi_0$ и $\pi_1 \in \mathbb{R}^d$. Необходимо построить такую транспортировку (транспортную карту) $T$: $\mathbb{R}^d \rightarrow \mathbb{R}^d$, что $Z_1 :=T(Z_0) \sim \pi_1$, где $Z_0 \sim \pi_0$.
Можно построить бесконечно много таких транспортных карт $T$, поэтому обычно пытаются решить задачу оптимального транспорта через поиск $T$, которое минимизирует транспортную стоимость: $min_{T} \mathbb{E} \Big[c(T(Z_0) - Z_0)\Big]$, где $с$ — transport cost.
Тем не менее решение этой задачи довольно сложное, особенно для многомерных задач. Важным вопросом также является выбор транспортной стоимости $c$.