Neural Ordinary Differential Equations (Neural ODEs)
As ODEs neurais substituem camadas empilhadas por uma derivada aprendida e um solucionador de ODE. Veja como são treinadas com o método adjunto, onde são mais adequadas e confira código executável.
Equações diferenciais ordinárias neurais (Neural ODEs) são redes neurais que definem como um estado oculto muda continuamente ao longo do tempo, em vez de usar uma pilha fixa de camadas. Uma rede pequena f aprende a derivada dh/dt = f(h, t), e um solucionador numérico de ODE integra essa derivada a partir de um estado inicial até o momento em que a saída é necessária. Ricky Chen, Yulia Rubanova, Jesse Bettencourt e David Duvenaud apresentaram a ideia em um artigo de 2018, que recebeu o prêmio de melhor artigo na NeurIPS.
De blocos residuais à profundidade contínua#
Uma rede residual atualiza seu estado como h(t + 1) = h(t) + f(h(t)), que corresponde exatamente a uma etapa do método de Euler para resolver uma EDO, com tamanho de passo igual a 1. Uma Neural ODE considera o limite de infinitas etapas infinitamente pequenas e delega a integração a um solucionador. Softwares numéricos clássicos, como o solve_ivp do SciPy, resolvem o mesmo tipo de problema de valor inicial para equações escritas manualmente.
Isso muda o significado de "profundidade". Solucionadores adaptativos da família Runge-Kutta, como o método de Dormand-Prince, dão passos pequenos quando a dinâmica muda rapidamente e passos grandes quando ela é suave. O custo de uma passagem direta é o número de avaliações da função de que o solucionador precisa, que depende da entrada, da dinâmica aprendida e da tolerância ao erro. Relaxar a tolerância durante a inferência reduz a latência de inferência em troca de precisão, sem necessidade de retreinamento.
Treinamento com o método adjunto#
A retropropagação comum através de um solucionador armazena todos os estados intermediários, de modo que o uso de memória cresce com o número de etapas do solucionador. O método de sensibilidade adjunta evita isso resolvendo uma segunda EDO para trás no tempo, que transporta o gradiente e recalcula os estados ao longo do percurso, em vez de armazená-los. O custo de memória permanece constante em relação à profundidade, ao custo de mais computação e de pequenas diferenças numéricas entre as trajetórias para a frente e para trás.
O pacote torchdiffeq fornece solucionadores diferenciáveis para PyTorch, com odeint para retropropagação direta e odeint_adjoint para o método adjunto:
import torch
from torch import nn
from torchdiffeq import odeint
torch.manual_seed(0)
# A rede prevê a derivada dh/dt de um estado oculto 2D
dynamics = nn.Sequential(nn.Linear(2, 32), nn.Tanh(), nn.Linear(32, 2))
# Consulte o estado em marcas de tempo irregulares, como ocorre com leituras esporádicas de sensores
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)
# Os gradientes se propagam de volta pelo solucionador até os pesos da rede
loss = trajectory[-1].square().sum()
loss.backward()
print(trajectory.squeeze(1))
print(dynamics[0].weight.grad.norm())A trajetória mantém o estado em cada instante solicitado, desde os tempos próximos de 0.3 e 0.35 até o longo intervalo antes de 1.1, enquanto o solucionador escolhe seus próprios passos internos. A norma do gradiente diferente de zero mostra que uma função de perda avaliada no instante final treina a rede por meio do solucionador. Substituir odeint por odeint_adjoint ativa gradientes com uso constante de memória, desde que a função da dinâmica seja um nn.Module, permitindo que o solucionador encontre seus parâmetros.
Onde as Neural ODEs se encaixam#
Séries temporais amostradas irregularmente são a aplicação mais evidente. Modelos Latent ODE, apresentados por Rubanova e colegas em 2019, codificam uma sequência de observações em um estado oculto e o fazem evoluir continuamente. Assim, é possível modelar registros médicos ou logs de sensores com intervalos desiguais sem forçá-los a uma grade fixa. Uma rede neural recorrente atualiza o estado apenas em etapas discretas e precisa de recursos adicionais para lidar com marcas de tempo ausentes ou irregulares, um problema central na análise de séries temporais.
Os dados de rastreamento têm a mesma estrutura. O modo Track do Ultralytics YOLO26 gera uma posição para cada ID de rastreamento em cada quadro, com lacunas sempre que um objeto fica ocluído ou não é detectado. O rastreador padrão mantém cada rastreamento perdido por track_buffer quadros, 30 por padrão, usando um filtro de Kalman cujo modelo de movimento com velocidade constante é uma ODE linear fixa, avançada uma vez por quadro. Uma Neural ODE ajustada às mesmas posições aprende o próprio movimento como uma trajetória contínua que pode ser consultada entre quadros ou ao longo de uma lacuna no rastreamento de múltiplos objetos.
A modelagem generativa é a segunda grande aplicação. Os fluxos normalizantes contínuos, desenvolvidos no artigo original sobre Neural ODEs e ampliados no FFJORD, transformam uma distribuição simples em uma complexa ao integrar um campo vetorial aprendido. Mais tarde, o flow matching tornou esses modelos muito mais baratos de treinar, aprendendo o campo vetorial diretamente, sem resolver uma ODE durante o treinamento. Geradores de imagens de fluxo retificado, como o Stable Diffusion 3, fazem amostragens integrando essa ODE, e os modelos de difusão podem gerar amostras determinísticas integrando sua ODE de fluxo de probabilidade.
Limitações e modelos relacionados de tempo contínuo#
As trajetórias de uma ODE não podem se cruzar, então uma Neural ODE na dimensão original da entrada não consegue representar alguns mapeamentos simples. As Neural ODEs aumentadas, propostas por Emilien Dupont e colegas em 2019, resolvem isso acrescentando dimensões extras ao estado. Dinâmicas rígidas e o aumento do número de avaliações da função durante o treinamento podem tornar as Neural ODEs mais lentas do que uma rede de profundidade fixa.
Outras arquiteturas se baseiam em dinâmicas de tempo contínuo com diferentes compromissos. Redes neurais líquidas são células recorrentes definidas por ODEs cujas constantes de tempo dependem da entrada. Modelos de espaço de estados, como S4 e Mamba, partem de um sistema linear de tempo contínuo, x'(t) = Ax(t) + Bu(t), e o discretizam em uma recorrência que também pode ser calculada como uma convolução longa ou uma varredura paralela. Isso os torna rápidos em sequências longas, nas quais uma Neural ODE geral precisa de um solucionador adaptativo.










