Neural Ordinary Differential Equations (Neural ODEs)
Le Neural ODE sostituiscono i livelli impilati con una derivata appresa e un risolutore ODE. Come si addestrano con il metodo dell'aggiunto, in quali casi sono adatte e codice eseguibile.
Le equazioni differenziali ordinarie neurali (Neural ODEs) sono reti neurali che definiscono come uno stato nascosto cambia continuamente nel tempo, invece di usare una sequenza fissa di livelli. Una piccola rete f apprende la derivata dh/dt = f(h, t) e un risolutore numerico di ODE integra tale derivata da uno stato iniziale fino al momento in cui serve l'output. Ricky Chen, Yulia Rubanova, Jesse Bettencourt e David Duvenaud hanno introdotto l'idea in un documento del 2018 che ha ricevuto il premio come miglior articolo a NeurIPS.
Dai blocchi residui alla profondità continua#
Una rete residua aggiorna il proprio stato secondo h(t + 1) = h(t) + f(h(t)), che corrisponde esattamente a un passo del metodo di Eulero per risolvere un'equazione differenziale ordinaria, con passo unitario. Una Neural ODE considera il limite di un numero infinito di passi infinitamente piccoli e affida l'integrazione a un risolutore. I software numerici classici, come solve_ivp di SciPy, risolvono lo stesso tipo di problema ai valori iniziali per equazioni scritte a mano.
Questo cambia il significato di «profondità». I risolutori adattivi della famiglia Runge-Kutta, come il metodo di Dormand-Prince, compiono passi piccoli dove la dinamica cambia rapidamente e passi grandi dove è regolare. Il costo di un passaggio in avanti corrisponde al numero di valutazioni della funzione richieste dal risolutore, che dipende dall'input, dalla dinamica appresa e dalla tolleranza d'errore. Allentare la tolleranza durante l'inferenza riduce la latenza di inferenza in cambio di una minore accuratezza, senza riaddestrare il modello.
Addestramento con il metodo aggiunto#
La retropropagazione ordinaria attraverso un risolutore memorizza ogni stato intermedio, quindi il consumo di memoria cresce con il numero di passi del risolutore. Il metodo aggiunto della sensibilità evita questo problema risolvendo una seconda equazione differenziale ordinaria a ritroso nel tempo, che trasporta il gradiente e ricalcola gli stati durante il percorso invece di memorizzarli. Il consumo di memoria rimane costante rispetto alla profondità, al prezzo di un calcolo aggiuntivo e di piccole differenze numeriche tra le traiettorie forward e backward.
Il pacchetto torchdiffeq fornisce risolutori differenziabili per PyTorch, con odeint per la retropropagazione diretta e odeint_adjoint per il metodo aggiunto:
import torch
from torch import nn
from torchdiffeq import odeint
torch.manual_seed(0)
# La rete predice la derivata dh/dt di uno stato nascosto 2D
dynamics = nn.Sequential(nn.Linear(2, 32), nn.Tanh(), nn.Linear(32, 2))
# Interroga lo stato in timestamp irregolari, come nel caso di letture sporadiche dei sensori
initial_state = torch.tensor([[1.0, 0.0]])
times = torch.tensor([0.0, 0.3, 0.35, 1.1, 2.0])
trajectory = odeint(lambda t, h: dynamics(h), initial_state, times)
# I gradienti attraversano il risolutore fino ai pesi della rete
loss = trajectory[-1].square().sum()
loss.backward()
print(trajectory.squeeze(1))
print(dynamics[0].weight.grad.norm())La traiettoria conserva lo stato in ogni istante richiesto, dai valori ravvicinati 0,3 e 0,35 al lungo intervallo prima di 1,1, mentre il risolutore sceglie autonomamente i propri passi interni. La norma del gradiente diversa da zero mostra che una funzione di perdita valutata al tempo finale addestra la rete attraverso il risolutore. Sostituendo odeint con odeint_adjoint si passa ai gradienti a memoria costante, a condizione che la funzione della dinamica sia un nn.Module, così il risolutore può trovarne i parametri.
Applicazioni delle Neural ODEs#
Le serie temporali campionate a intervalli irregolari sono l'applicazione più evidente. I modelli Latent ODE, introdotti da Rubanova e colleghi nel 2019, codificano una sequenza di osservazioni in uno stato nascosto e lo fanno evolvere in modo continuo; possono quindi rappresentare cartelle cliniche o registrazioni di sensori con intervalli disomogenei senza forzarle su una griglia fissa. Una rete neurale ricorrente aggiorna lo stato solo a passi discreti e richiede strumenti aggiuntivi per gestire timestamp mancanti o irregolari, un problema centrale nell'analisi delle serie temporali.
Anche i dati di tracciamento hanno la stessa struttura. La modalità Track di Ultralytics YOLO26 restituisce una posizione per ogni ID di tracciamento in ciascun fotogramma, con interruzioni quando un oggetto è occluso o non viene rilevato; il tracker predefinito mantiene ogni traccia persa per track_buffer fotogrammi, 30 per impostazione predefinita, usando un filtro di Kalman il cui modello di movimento a velocità costante è una ODE lineare fissa, aggiornata una volta per fotogramma. Una Neural ODE adattata alle stesse posizioni apprende il movimento stesso come traiettoria continua, interrogabile tra i fotogrammi o attraverso un'interruzione nel tracciamento di più oggetti.
La modellazione generativa è il secondo impiego principale. I flussi normalizzanti continui, sviluppati nel documento originale sulle Neural ODE e poi estesi in FFJORD, trasformano una distribuzione semplice in una complessa integrando un campo vettoriale appreso. Il flow matching ha poi reso molto più economico l'addestramento di questi modelli, imparando direttamente il campo vettoriale senza risolvere ODE durante l'addestramento. I generatori di immagini basati sul flusso rettificato, come Stable Diffusion 3, campionano integrando una simile ODE; i modelli di diffusione possono essere campionati in modo deterministico integrando la loro ODE di flusso di probabilità.
Limiti e modelli correlati a tempo continuo#
Le traiettorie di un'ODE non possono incrociarsi, quindi una Neural ODE nella stessa dimensione dell'input non può rappresentare alcune semplici mappature. Le Neural ODE aumentate, proposte da Emilien Dupont e colleghi nel 2019, risolvono il problema aggiungendo dimensioni supplementari allo stato. Dinamiche rigide e un numero crescente di valutazioni della funzione durante l'addestramento possono rendere le Neural ODE più lente di una rete con profondità fissa.
Altre architetture si basano su dinamiche a tempo continuo con diversi compromessi. Le reti neurali liquide sono celle ricorrenti definite da ODE le cui costanti di tempo dipendono dall'input. I modelli a spazio di stato come S4 e Mamba partono da un sistema lineare a tempo continuo, x'(t) = Ax(t) + Bu(t), e lo discretizzano in una ricorrenza che può anche essere calcolata come una convoluzione lunga o una scansione parallela; per questo sono veloci sulle sequenze lunghe, per le quali una Neural ODE generale richiede un risolutore adattivo.










