Диффузия и потоки
Непрерывные нормализующие потоки
Точное правдоподобие через след якобиана — и почему от него отказались
Замена переменных, доведённая до предела
Из блока 3, урок 110: если — обратимое преобразование, то плотности связаны якобианом
Нормализующий поток строит как композицию слоёв и следит, чтобы определитель считался дёшево (треугольные матрицы, перестановки, аффинные связки). Ограничение архитектуры — цена за вычислимость.
Непрерывный поток снимает это ограничение. Пусть преобразование задано не композицией слоёв, а решением ОДУ:
Второе уравнение — формула мгновенной замены переменных. Смысл замены огромен: определитель превратился в след. Определитель матрицы стоит , след — , если его удаётся посчитать; и никаких ограничений на архитектуру больше нет.
Что это даёт и чего стоит
Плюс, которого нет ни у диффузии, ни у flow matching: точное правдоподобие. Проинтегрировав второе уравнение вдоль траектории, получаем
Не нижнюю границу, как ELBO, а само значение — с точностью решателя. Для задач, где правдоподобие и есть ответ (детекция аномалий, сжатие, сравнение моделей), это существенно.
Минус — там же, где плюс.
Одно произведение якобиана на вектор — один обратный проход. Оценка несмещённая, но шумная, и дисперсия растёт с размерностью.
Как обучали CNF и почему это было дорого
Обучение по правдоподобию требует градиента по через решатель ОДУ. Два способа:
| подход | память | точность градиента |
|---|---|---|
| дифференцировать через шаги решателя | точная | |
| adjoint-метод (решать сопряжённое ОДУ назад) | приближённая |
Adjoint был главным вкладом Neural ODE: память перестала зависеть от числа шагов. Но остались две проблемы, и они оказались решающими:
- число шагов не под контролем. Адаптивный решатель сам решает, сколько вычислений ему нужно, и по мере обучения динамика усложняется — шагов становится больше, обучение замедляется само по себе;
- симуляция в цикле обучения. Каждый шаг оптимизации требует полного прогона ОДУ вперёд и назад. Сравните с диффузией, где обучающий пример стоит один прогон сети.
Чем это оказалось для flow matching
Вот связь, ради которой урок стоит в этом месте. Flow matching обучает то же самое поле скоростей, что и CNF, но без симуляции:
| CNF по правдоподобию | flow matching | |
|---|---|---|
| что обучается | ||
| цель | через интеграл дивергенции | MSE по скорости |
| нужен ли решатель при обучении | да | нет |
| нужна ли дивергенция | да | нет |
| стоимость примера | десятки прогонов | один |
| точное правдоподобие после обучения | да | да |
Последняя строка — самое приятное. Обученная модель flow matching это и есть CNF: у неё есть поле скоростей, значит формула правдоподобия применима. Отказ от симуляции произошёл только на обучении.
Такая пара — «объект тот же, цель другая» — уже встречалась: в уроке 060 диффузия обучала score, не считая ни следа, ни нормировочной константы. Приём один и тот же: найти цель, оптимум которой совпадает с нужным, но которая считается локально.
- длина пути
- 2.702
- прямое расстояние
- 2.702
- кривизна
- ×1
- ошибка ломаной
- 0.0e+0
Ошибка ломаной равна нулю: при прямых траекториях число шагов решателя перестаёт быть параметром вовсе.
Итог
- CNF заменяет определитель якобиана его следом, снимая ограничения на архитектуру.
- Он даёт точное правдоподобие, а не нижнюю границу.
- Цена — оценка дивергенции и полная симуляция ОДУ на каждом шаге обучения; число шагов при этом не контролируется.
- Flow matching обучает то же поле локальной целью, а правдоподобие остаётся доступным после обучения. Симуляция ушла из обучения, а не из модели.
Источники
- Chen и др. — Neural Ordinary Differential Equations — CNF, adjoint-метод, формула изменения плотности
- Grathwohl и др. — FFJORD — Оценка Хатчинсона для следа и свободная форма динамики
Проверки
0 из 2Что даёт непрерывный поток
Отметьте все верные утверждения о непрерывных нормализующих потоках.
Правдоподобие двумя путями
Возьмём простейшее поле скоростей — диагональное линейное:
Его решение известно в замкнутой форме, , и то же для . Начальная плотность — стандартная двумерная нормальная.
Реализуйте
cnf_likelihood(a11, a22, t_end, x0, y0)— верните[x_end, y_end, log_p_via_divergence, log_p_via_determinant]:x_end,y_end— конечная точка;log_p_via_divergence= , где дивергенция поля равна и от времени не зависит, поэтому интеграл берётся устно;log_p_via_determinant= , где якобиан преобразования диагонален с элементами и .
Здесь .
Два последних числа обязаны совпадать: это одно и то же утверждение о замене переменных, взятое в дифференциальной и в интегральной форме.
Загрузка редактора…
Ctrl/⌘ + Enter