Сопоставление потоков
Коротко
Definition
Сопоставление потоков, или Flow Matching, — это метод обучения генеративных моделей, при котором нейросеть учится векторному полю, переводящему точки из распределения шума в распределение данных.
Flow Matching, как и диффузионные модели, генерирует данные из шума. Но вместо обучения пошаговому удалению шума модель учится непрерывному направлению движения от шума к данным.
Интуитивно:
задаётся не через случайное блуждание, а через обучаемое векторное поле.
Интуиция
Представим две группы точек:
- — распределение шума, например гауссовское;
- — распределение реальных данных.
Нужно научиться превращать точки из в точки из .
Flow Matching делает это через поле стрелок. В каждой точке пространства и в каждый момент времени модель должна сказать, куда и с какой скоростью двигаться.
Если мы знаем правильное векторное поле, можно взять случайный шум и провести его по этому полю до состояния, похожего на реальные данные.
Формальное описание
Flow Matching задаёт непрерывный путь между двумя распределениями:
где:
- — начальное распределение, обычно шум;
- — целевое распределение данных;
- — промежуточное распределение в момент времени .
Модель учится векторному полю:
которое задаёт скорость движения точки в момент времени .
Движение точки описывается ODE:
Если векторное поле известно, можно начать из точки шума и численно проинтегрировать ODE до , получив сгенерированный объект.
Probability path
Probability path — это сценарий, по которому распределение шума постепенно превращается в распределение данных.
Можно понимать это как непрерывную последовательность распределений:
В отличие от классической диффузии, где путь связан с постепенным зашумлением и обратным денойзингом, во Flow Matching путь можно выбирать явно.
Один из простых вариантов — linear interpolation между шумом и объектом данных.
Vector field
Vector field — это функция, которая в каждой точке пространства и в каждый момент времени задаёт направление и скорость движения.
Формально:
Интуитивно это поле стрелок:
- где находится точка;
- какой сейчас момент времени;
- куда точке нужно двигаться дальше.
Нейросеть учится приближать это поле:
где — модель с параметрами .
ODE
Если известно векторное поле, траектория точки задаётся обыкновенным дифференциальным уравнением:
Это означает: изменение положения точки равно скорости, которую задаёт векторное поле.
Для генерации нужно решить это ODE от до :
На практике ODE решается численно, например методом Эйлера или более сложными ODE-solvers.
Conditional probability path
Простой вариант Flow Matching строит путь между конкретной точкой шума и конкретной точкой данных .
Линейная интерполяция:
где:
- при : ;
- при : ;
- при : точка находится посередине между шумом и данными.
Для такого прямого пути скорость постоянна:
Это целевое направление, которое нейросеть должна научиться предсказывать.
Как обучается
Типовая процедура обучения:
- Взять реальный объект из датасета.
- Сэмплировать случайный шум .
- Выбрать случайный момент времени .
- Построить промежуточную точку:
- Вычислить целевую скорость:
- Подать и в нейросеть.
- Обучить сеть предсказывать .
То есть модель учится отвечать на вопрос: если точка сейчас находится в в момент времени , в какую сторону её нужно двигать, чтобы прийти к данным?
Функция потерь
Базовая функция потерь — MSE между предсказанной скоростью и целевой скоростью:
где:
- — предсказанное векторное поле;
- — целевая скорость для прямого пути.
В более общих вариантах Flow Matching путь и целевой vector field могут быть устроены сложнее, но базовая идея остаётся той же: сеть обучается сопоставлять точкам правильные направления движения.
Генерация
После обучения генерация начинается с шума:
Затем модель последовательно двигает точку по learned vector field от к .
С помощью метода Эйлера:
Алгоритм:
- Сэмплировать шум .
- Выбрать число шагов генерации.
- Для каждого шага:
- подать текущую точку и время в модель;
- получить скорость ;
- сделать шаг по направлению скорости.
- Получить финальный объект при .
Чем больше шагов, тем точнее численное решение ODE, но тем медленнее генерация.
Сравнение с диффузионными моделями
Flow Matching и diffusion models похожи тем, что обе семьи методов учатся генерировать данные из шума.
Но есть важные различия.
| Аспект | Diffusion models | Flow Matching |
|---|---|---|
| Основная идея | Учиться удалять шум по шагам | Учиться векторному полю от шума к данным |
| Математическая форма | Часто SDE или discrete Markov chain | Часто ODE / continuous normalizing flow perspective |
| Обучаемый таргет | Шум, score или velocity | Velocity / vector field |
| Sampling | Обычно много шагов денойзинга | Может требовать меньше ODE-шагов |
| Интуиция | Постепенно очистить шум | Провести точку по потоку |
На практике современные методы могут сближаться: diffusion, score matching, flow matching и rectified flows связаны между собой математически.
Когда использовать
Flow Matching стоит изучать и использовать, если:
- интересны современные генеративные модели;
- нужно понимать альтернативы diffusion models;
- важна быстрая генерация;
- хочется работать с continuous-time generative modeling;
- задача связана с изображениями, аудио, молекулами или другими сложными данными;
- нужно понять связь между ODE, probability paths и generative modeling.
Flow Matching особенно важен как концептуальный мост между диффузионными моделями, score-based models и continuous normalizing flows.
Когда не использовать
Flow Matching может быть избыточен, если:
- задача не требует генерации;
- данных мало;
- нужна простая интерпретируемая модель;
- достаточно классической модели;
- нет ресурсов на обучение генеративной нейросети;
- проще использовать готовую diffusion-модель или VAE/GAN baseline.
Для учебных задач Flow Matching полезен, но в прикладном проекте важно сравнить его с более стандартными генеративными подходами.
Метрики оценки
Метрики зависят от типа данных.
Для изображений можно использовать:
- FID;
- Inception Score;
- precision and recall for generative models;
- human evaluation;
- diversity metrics.
Для научных данных нужны domain-specific metrics:
- валидность структуры;
- соблюдение физических или химических ограничений;
- разнообразие;
- novelty;
- соответствие заданным условиям.
Как и у других генеративных моделей, training loss не всегда полностью отражает качество сэмплов.
Типичные ошибки понимания
Думать, что Flow Matching просто «быстрая диффузия»
Flow Matching связан с diffusion models, но обучаемая цель формулируется иначе: модель учится векторному полю, а не обязательно пошаговому удалению шума.
Путать точки и распределения
— конкретная промежуточная точка. — распределение таких точек в момент времени .
Думать, что путь всегда обязан быть прямым
Линейный путь между и — удобный частный случай. В общем случае probability path может быть другим.
Игнорировать численное решение ODE
Даже если модель хорошо выучила vector field, качество генерации зависит от того, как решается ODE: методом Эйлера, Runge-Kutta или другим solver.
Считать, что меньше шагов всегда лучше
Flow Matching может позволять делать крупные шаги, но слишком грубое численное решение всё равно может ухудшить качество.
Минимальный пример
Пусть шумовая точка:
а точка данных:
Выберем:
Промежуточная точка:
Целевая скорость для прямого пути:
Модель получает:
и должна предсказать скорость:
Во время генерации, начиная из шума, модель будет делать шаги по предсказанному векторному полю, пока не дойдёт до области данных.
Практические замечания
Хороший workflow:
- Понять, какое распределение считается шумом .
- Определить data distribution .
- Выбрать probability path.
- Сэмплировать пары шум–данные.
- Обучить модель предсказывать velocity.
- Проверить качество ODE sampling.
- Сравнить разные solvers и число шагов.
- Оценить diversity и качество сэмплов.
- Сравнить с диффузионной моделью, GAN и VAE.
- Проверить domain-specific constraints.
Для понимания Flow Matching особенно полезно держать в голове три объекта: probability path, vector field и ODE.