---
title: "Neural Ordinary Differential Equations"
title_ru: "Нейронные обыкновенные дифференциальные уравнения (Neural ODE)"
authors: [Chen, Rubanova, Bettencourt, Duvenaud]
year: 2018
venue: "NeurIPS"
venue_tier: "A*"
doi: "1806.07366"
tags: [neural_ode, continuous_dynamics, differentiable, ode, generative]
relevance_to_smartrep: 3
direction: "🅲"
---

# Neural ODE: Нейронная сеть как непрерывная динамическая система

## TL;DR (≤3 предложения)

Neural ODE рассматривает скрытое состояние нейросети как непрерывную динамическую систему: $\frac{d\mathbf{h}}{dt} = f_\theta(\mathbf{h}(t), t)$, где $f_\theta$ — нейросеть, а выход вычисляется ODE-solver. Градиенты вычисляются через adjoint method без хранения промежуточных состояний — O(1) память. Для SmartRep: continuous-time motion model идеален для нерегулярно сэмплированных движений и interpolation суставных траекторий.

## Проблема

Дискретные нейросети (ResNet, RNN) фиксируют дискретность в архитектуре. Движение человека — непрерывный процесс. Irregularly sampled sequences (пропущенные кадры, разный FPS) плохо обрабатываются дискретными моделями.

## Гипотеза / вклад

- **Continuous depth:** ResNet как дискретизация ODE. Continuous limit = Neural ODE.
- **Adjoint method:** $\frac{d\mathbf{a}}{dt} = -\mathbf{a}^T \frac{\partial f}{\partial \mathbf{h}}$ — backprop через ODE без хранения всей траектории.
- **Latent ODE:** генеративная модель временных рядов: encoder → $\mathbf{z}_0$ → ODE decode → непрерывная траектория.

## Метод

Forward pass: $\mathbf{h}(t_1) = \mathbf{h}(t_0) + \int_{t_0}^{t_1} f_\theta(\mathbf{h}(t), t) dt$

ODE-solver (RK45, Dormand-Prince): численное интегрирование.

Adjoint для градиентов:

$$\frac{d\mathbf{a}(t)}{dt} = -\mathbf{a}(t)^T \frac{\partial f_\theta(\mathbf{h}(t), t)}{\partial \mathbf{h}}$$

$\frac{d\mathcal{L}}{d\theta} = -\int_{t_1}^{t_0} \mathbf{a}(t)^T \frac{\partial f_\theta}{\partial \theta} dt$

### Архитектура (Mermaid)

```
Input h(t₀) → f_θ(h(t), t) [neural network]
                   ↓
              ODE Solver: h(t₁) = h(t₀) + ∫f dt
                   ↓
              Output h(t₁) → Loss
              Backward: adjoint method (O(1) memory)
```

## Датасеты

| Задача | Метрика | Neural ODE | ResNet |
|---|---|---|---|
| MNIST (generative) | Log-likelihood | -47.8 | -55.0 |
| PhysioNet (irregular TS) | AUC | 0.862 | 0.829 |

## Сравнение с SOTA

Лучший generative model для нерегулярных временных рядов на момент публикации. Память O(1) vs O(T) у RNN.

## Ограничения / слабости

- ODE-solver медленнее дискретного forward pass (N function evaluations).
- Adaptive solvers меняют число шагов — непредсказуемая латентность.
- Стабильность зависит от выбора solver и tolerance.
- Нет встроенных дискретных событий (контакт).

## Релевантность SmartRep

- **Непрерывное движение 🅲:** суставные траектории — непрерывные функции времени. Neural ODE = natural model: $\frac{d\theta_{joint}}{dt} = f_\theta(\theta, t)$ — dynamics of joint angles.
- **Нерегулярный FPS:** разные камеры, разные частоты кадров → Neural ODE interpoles корректно, в отличие от дискретного RNN.
- **Latent ODE для anomaly:** encode нормальные повторы → latent $\mathbf{z}_0$ → ODE decode → reconstructed trajectory. Reconstruction error = anomaly score.

## Gap для нас

Neural ODE для суставных траекторий и AQA не исследован. **Ниша SmartRep:** Latent ODE для AQA — VAE encoder компрессирует повтор в $\mathbf{z}_0$, Neural ODE декодирует обратно; quality score = reconstruction error в joint angle space. Interpretable anomaly: "угол колена в фазе подъёма отклонился на X° от reconstructed trajectory".

## Код / данные

- Repo: github.com/rtqichen/torchdiffeq (torchdiffeq библиотека)
- Pretrained: нет

## Цитата (BibTeX)

```bibtex
@inproceedings{chen2018neural,
  title={Neural Ordinary Differential Equations},
  author={Chen, Ricky TQ and Rubanova, Yulia and Bettencourt, Jesse and Duvenaud, David K},
  booktitle={Advances in Neural Information Processing Systems},
  year={2018}
}
```
