Neural Ordinary Differential Equations (Neural ODEs)
Neural ODE는 층을 쌓는 대신 학습된 도함수와 ODE 솔버를 사용합니다. 수반 방법을 이용한 학습 방식, 적합한 활용 분야, 실행 가능한 코드를 알아보세요.
신경망 상미분방정식(Neural ODE)은 고정된 계층 스택 대신 은닉 상태가 시간에 따라 연속적으로 변하는 방식을 정의하는 신경망입니다. 소규모 네트워크 f가 도함수 dh/dt = f(h, t)를 학습하고 수치 ODE 솔버가 초기 상태에서 출력이 필요한 시점까지 도함수를 적분합니다. Ricky Chen, Yulia Rubanova, Jesse Bettencourt, David Duvenaud는 2018년 논문에서 이 개념을 소개했으며, 해당 논문은 NeurIPS에서 최우수 논문상을 받았습니다.
잔차 블록에서 연속 깊이로#
잔차 네트워크는 h(t + 1) = h(t) + f(h(t))로 상태를 갱신합니다. 이는 스텝 크기가 1인 오일러 방법으로 ODE를 푸는 한 단계와 정확히 같습니다. Neural ODE는 무한히 작은 스텝을 무한히 많이 수행하는 극한을 취하고 적분을 솔버에 맡깁니다. SciPy의 solve_ivp와 같은 기존 수치 소프트웨어도 직접 작성한 방정식에 대해 동일한 유형의 초기값 문제를 풉니다.
이 접근법은 "깊이"의 의미를 바꿉니다. Dormand-Prince 방법과 같은 Runge-Kutta 계열의 적응형 솔버는 동역학이 빠르게 변하는 곳에서는 작은 단계를, 부드러운 곳에서는 큰 단계를 사용합니다. 순전파 비용은 솔버에 필요한 함수 평가 횟수이며, 이는 입력, 학습된 동역학, 오차 허용치에 따라 달라집니다. 추론 시 오차 허용치를 완화하면 재학습 없이 정확도와 낮은 추론 지연 시간 사이에서 절충할 수 있습니다.
어드조인트 방법을 이용한 학습#
솔버를 통한 일반적인 역전파는 모든 중간 상태를 저장하므로 솔버 스텝 수에 비례해 메모리 사용량이 증가합니다. 어드조인트 민감도 방법은 시간 역방향으로 그래디언트를 전달하는 두 번째 ODE를 풀어 이 문제를 해결합니다. 중간 상태를 저장하는 대신 진행 중에 상태를 다시 계산합니다. 계산량이 늘고 순방향 및 역방향 궤적 사이에 작은 수치 차이가 생기는 대가로, 메모리 사용량은 깊이에 관계없이 일정하게 유지됩니다.
torchdiffeq 패키지는 PyTorch용 미분 가능한 솔버를 제공합니다. 직접 역전파에는 odeint를, 수반 방법에는 odeint_adjoint을 사용합니다:
import torch
from torch import nn
from torchdiffeq import odeint
torch.manual_seed(0)
# 네트워크는 2D 은닉 상태의 도함수 dh/dt를 예측합니다
dynamics = nn.Sequential(nn.Linear(2, 32), nn.Tanh(), nn.Linear(32, 2))
# 불규칙한 타임스탬프에서 상태를 조회합니다. 간헐적인 센서 측정값에 적용할 수 있습니다
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)
# 그래디언트는 솔버를 거쳐 네트워크 가중치로 역전파됩니다
loss = trajectory[-1].square().sum()
loss.backward()
print(trajectory.squeeze(1))
print(dynamics[0].weight.grad.norm())궤적은 요청된 각 시점의 상태를 유지합니다. 0.3과 0.35처럼 간격이 촘촘한 시점부터 1.1까지의 긴 간격에 이르기까지, 솔버는 자체 내부 단계를 선택합니다. 0이 아닌 그래디언트 노름은 최종 시점에서 평가한 손실 함수가 솔버를 거쳐 네트워크를 학습시킨다는 것을 보여줍니다. odeint을 odeint_adjoint로 바꾸면 그래디언트의 메모리 사용량이 일정한 방식으로 전환됩니다. 단, 솔버가 파라미터를 찾을 수 있도록 동역학 함수가 nn.Module이어야 합니다.
Neural ODE의 활용 분야#
불규칙하게 샘플링된 시계열이 가장 적합한 사례입니다. Rubanova와 동료들이 2019년에 소개한 잠재 ODE 모델은 관측 시퀀스를 은닉 상태로 인코딩한 다음 이를 연속적으로 변화시킵니다. 따라서 시간 간격이 일정하지 않은 의료 기록이나 센서 로그를 고정된 격자에 맞추지 않고 모델링할 수 있습니다. 순환 신경망은 이산적인 단계에서만 갱신되므로, 누락되거나 불규칙한 타임스탬프를 처리하려면 추가 장치가 필요합니다. 이는 시계열 분석의 핵심 문제입니다.
추적 데이터의 형태도 같습니다. Ultralytics YOLO26의 추적 모드는 각 프레임의 추적 ID별 위치를 출력하며, 객체가 가려지거나 놓칠 때는 공백이 생깁니다. 기본 추적기는 칼만 필터를 사용해 손실된 각 추적을 track_buffer 프레임 동안 유지하며, 기본값은 30프레임입니다. 이때 상수 속도 운동 모델은 프레임마다 한 번씩 진행하는 고정 선형 ODE입니다. 같은 위치에 맞춰 학습한 Neural ODE는 연속 궤적으로 움직임 자체를 학습하므로, 다중 객체 추적에서 프레임 사이 또는 공백 구간의 위치를 조회할 수 있습니다.
생성 모델링은 두 번째 주요 활용 분야입니다. 원래 Neural ODE 논문에서 개발되고 FFJORD에서 확장된 연속 정규화 흐름은 학습된 벡터장을 적분해 단순한 분포를 복잡한 분포로 변환합니다. 이후 흐름 매칭은 학습 중 ODE를 풀지 않고 벡터장을 직접 학습해 모델 훈련 비용을 크게 줄였습니다. Stable Diffusion 3과 같은 정류 흐름 이미지 생성기는 이러한 ODE를 적분해 샘플을 생성하며, 확산 모델은 확률 흐름 ODE를 적분해 결정론적으로 샘플링할 수 있습니다.
한계 및 관련 연속 시간 모델#
ODE의 궤적은 서로 교차할 수 없으므로 입력과 같은 차원의 Neural ODE는 일부 간단한 매핑을 표현하지 못합니다. Emilien Dupont와 동료들이 2019년에 제안한 증강 Neural ODE는 상태에 차원을 추가해 이 문제를 해결합니다. 강성 동역학과 학습 중 늘어나는 함수 평가 횟수 때문에 Neural ODE가 고정 깊이 네트워크보다 느려질 수 있습니다.
다른 아키텍처는 서로 다른 절충점을 두고 연속 시간 동역학을 활용합니다. 액체 신경망은 입력에 따라 시간 상수가 달라지는 ODE로 정의된 순환 셀입니다. S4와 Mamba 같은 상태 공간 모델은 선형 연속 시간 시스템 x'(t) = Ax(t) + Bu(t)에서 출발해 재귀 구조로 이산화합니다. 이 구조는 긴 합성곱이나 병렬 스캔으로도 계산할 수 있으므로, 적응형 솔버가 필요한 일반 Neural ODE보다 긴 시퀀스에서 빠릅니다.










