Автор: Нина Коновалова Редактура: Игорь Иткин, Александр Ковальчук

Введение

Диффузионные модели на стыке физики и машинного обучения — мощный инструмент для моделирования сложных процессов генерации данных. За последние годы они получили широкое признание благодаря возможности эффективно генерировать реалистичные изображения, видео и даже звуковые сигналы.

[Рисунок 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.

Спойлер: будет математика 😟

Но не пугайтесь! В конце мы собрали саммари, чтобы легче ориентироваться во всём происходящем и возвращаться к нужным местам при необходимости 😊

Итак, наш план:

  1. Кратко вспомним, что такое диффузионные модели и как они связаны со стохастическими и обыкновенными дифференциальными уравнениями.
  2. Познакомимся со flow matching’ом.
  3. Разберёмся, что такое ректифицированные потоки, ****как их можно «выпрямлять».
  4. И обсудим идею авторов работы InstaFLow.

Optimal transport problem 🏎

Рисунок 2. Перенос одного распределения в другое [источник]

Рисунок 2. Перенос одного распределения в другое [источник]

Transport Mapping Problem

Задача оптимального транспорта имеет непосредственное отношение к генеративным моделям и переносу стиля. Как перенести одно распределение в другое, ещё и сделать это оптимальным способом? И что значит «оптимальным»? Давайте обсудим эту задачу подробнее 🙂

Есть два эмпирических распределения $\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$.