Дифференциальные уравнения
Neural ODEs и дифференцируемые решатели
Что если нейронная сеть, это не стопка слоёв, а непрерывное уравнение движения? Что если глубина, не целое число, а непрерывная переменная? В 2018 году работа Neural Ordinary Differential Equations получила премию Best Paper на NeurIPS, предложив объединение дифференциальных уравнений и глубокого обучения.
- **Медицинские данные**: ЭКГ, анализы крови в разные дни, нерегулярные временные ряды; Latent ODE предсказывает состояние пациента в любой момент
- **Генерация молекул**: непрерывные нормализующие потоки моделируют распределение химических структур для drug discovery
- **Физика + ML**: Physics-Informed Neural Networks (PINNs) и Neural ODE сближают численное решение PDE с обучением
Предварительные знания
Neural ODE: непрерывная глубина нейронной сети
Классическая глубокая нейронная сеть, это дискретная последовательность слоёв: h₁ = f₁(h₀), h₂ = f₂(h₁), ..., hₙ = fₙ(hₙ₋₁). ResNet делает шаг вперёд: hₜ₊₁ = hₜ + f(hₜ, t), это явный метод Эйлера с шагом 1. Что если взять предел и сделать шаг бесконечно малым?
**Neural ODE** (Chen et al., NeurIPS 2018), модель, в которой скрытое состояние h(t) эволюционирует как решение ODE, где правая часть параметризована нейросетью:
В классической сети глубина, целое число (количество слоёв). В Neural ODE t ∈ [t₀, t₁], непрерывная переменная. Мы можем: - использовать адаптивный шаг интегрирования (больше «слоёв» там, где нужно) - интерполировать состояния в любой момент t - получить «сеть с бесконечной глубиной» при фиксированном числе параметров Придумано: Neural ODE 2018, NeurIPS Best Paper Award.
Чем Neural ODE принципиально отличается от глубокой ResNet?
Метод сопряжённых переменных: обратное распространение через ODE
Главная проблема Neural ODE: как вычислить градиенты ∂L/∂θ? Наивный подход, сохранить все промежуточные состояния ODE-solver-а и дифференцировать через них. Но это требует O(N) памяти, где N, число шагов. **Метод сопряжённых переменных** (adjoint method) решает проблему: O(1) памяти.
Метод сопряжённых переменных, классический инструмент оптимального управления (Pontryagin, 1950-е). Идея: вместо хранения всего прямого прохода пересчитать его заново при обратном проходе. Точность: сопряжённое ODE решается тем же решателем с той же точностью. Ошибка накапливается, но контролируется допуском решателя. Память: O(1) против O(N) для автоматического дифференцирования через шаги решателя.
В чём главное преимущество adjoint method перед автодифференцированием через шаги ODE-solver-а?
ODE-решатели в ML: Euler, RK4, dopri5
Выбор ODE-решателя в Neural ODE, это компромисс между точностью и скоростью. В ML-контексте важны три параметра: число шагов (вычислительная стоимость), порядок точности (глобальная ошибка), адаптивность (переменный шаг).
При обучении Neural ODE допуски решателя влияют на качество градиентов: **Грубый решатель** (rtol=1e-1): быстро, но неточные градиенты → плохое обучение **Точный решатель** (rtol=1e-6): медленно, но градиенты точные **Рекомендуемый баланс**: rtol=atol=1e-3 при обучении, 1e-5 при тестировании Динамика модели влияет: «жёсткие» (stiff) ODE требуют специальных решателей (Radau, BDF).
Почему метод dopri5 предпочтителен перед RK4 фиксированного шага в Neural ODE?
Приложения: Latent ODE и непрерывные нормализующие потоки
Neural ODE открыли два важных направления в генеративном ML: **Latent ODE** для нерегулярных временных рядов и **непрерывные нормализующие потоки** (CNF) для генерации с точной плотностью.
Классические нормализующие потоки (Real NVP, Glow) используют цепочку биективных преобразований с треугольным якобианом. Это ограничивает архитектуру. CNF использует формулу Лиувилля: det якобиана заменяется на trace (дивергенцию), которая вычисляется через случайные проекции Хатчинсона за O(d) вместо O(d³). FREQ применения: генерация молекул (drug discovery), обратная задача в физике, вероятностные прогнозы.
Почему Latent ODE лучше RNN для нерегулярных временных рядов?
Ключевые идеи
- **Neural ODE**: dh/dt = f(h,t;θ), непрерывная глубина, одна параметризация f для всего интервала [t₀,t₁]
- **Adjoint method**: вычисляет градиенты через решение сопряжённого ODE при обратном проходе, требует O(1) памяти
- **ODE-решатели**: Euler (1-й порядок), RK4 (4-й порядок), dopri5 (адаптивный RK45), компромисс точность/скорость
- **Latent ODE**: энкодер + ODE + декодер для нерегулярных временных рядов; **CNF**: ODE-поток для точной плотности
Связанные темы
Neural ODE, мост между классическими ОДУ и современным ML:
- Численные методы решения ODE — Метод Эйлера, Рунге-Кутты, основа всех ODE-solver-ов используемых в Neural ODE
- Стохастические дифференциальные уравнения — SDE + нейросети = Score-based генеративные модели (диффузионные модели DDPM)
- Системы ОДУ первого порядка — Скрытое состояние Neural ODE, вектор, эволюционирующий по системе ODE
Вопросы для размышления
- ResNet, это явный метод Эйлера. Какой физический смысл у «стабильности» глубокой ResNet с точки зрения теории ODE?
- Adjoint method решает сопряжённое уравнение назад во времени. Почему это допустимо? Всегда ли существует обратное решение?
- В CNF используется формула Лиувилля: d/dt log p = −tr(∂f/∂z). Как это связано с теоремой Лиувилля в гамильтоновой механике?