Neural Ordinary Differential Equations (Neural ODEs)
신경망 상미분 방정식(Neural ODEs)이 연속적인 은닉 상태 동역학을 모델링하는 방법, 불규칙한 시계열 분석을 지원하는 방법, 그리고 실제 예제를 통해 모션 예측을 가능하게 하는 방법을 알아보세요.
신경 상미분 방정식 또는 Neural ODE는 은닉 상태를 고정된 계층 시퀀스로 통과시키는 대신, 상태가 연속적으로 변화하는 방식을 모델링하는 신경망입니다. 이 방식은 dh/dt = f(h, t, parameters) 형태로 표현되는 학습 가능한 변화율을 정의하며, 수치 미분 방정식 솔버를 사용하여 초기값에서 요청된 시간까지 상태를 발전시킵니다. 직관적으로 기존 신경망은 일련의 변환 스택을 학습하는 반면, Neural ODE는 입력과 출력을 연결하는 연속적인 경로를 학습합니다.
Neural ODE의 작동 방식#
함수 f는 대개 벡터 필드 또는 동역학 함수라고 불리는 소형 신경망입니다. 현재 상태 h와 선택적 시간 t가 주어지면, 해당 상태가 이동해야 할 방향과 속도를 예측합니다. ODE 솔버는 이 함수를 반복적으로 평가하고 그 변화를 적분하여 나중 시점의 상태를 추정합니다.
워크플로는 세 가지 구성 요소로 정의됩니다:
- 초기 상태: 시작 시점의 입력, 인코딩된 관측값 또는 알려진 시스템 조건입니다.
- 학습된 동역학: 다음 상태를 직접 반환하는 대신 상태 도함수를 반환하는 매개변수화된 함수입니다.
- 수치 적분: 궤적을 근사하는 런ge-쿠타(Runge-Kutta) 같은 알고리즘입니다.
solve_ivpODE 인터페이스는 초기값 문제가 기존 수치 소프트웨어에서 어떻게 처리되는지 보여줍니다.
적응형 솔버는 동역학이 빠르게 변하는 구간에서는 작은 단계를 거치고, 완만한 영역에서는 더 큰 단계를 취할 수 있습니다. 결과적으로 연산 비용은 미리 정해진 계층 수뿐만 아니라 학습된 동역학, 솔버 방식, 구간 길이, 오차 허용 오차에 따라 달라집니다. DiffEqFlux Neural ODE 예제는 이 연속 시간 공식을 직접 보여줍니다.
관련 모델과의 차이점#
-
잔차 네트워크: 잔차 블록은 “현재 상태 더하기 학습된 변화”와 같은 이산적인 업데이트를 수행합니다. Neural ODE는 ODE 솔버가 중간 업데이트를 결정하는 연속 깊이 확장으로 볼 수 있습니다.
-
순환 신경망: RNN은 이산적인 시퀀스 단계에서 은닉 상태를 업데이트합니다. Neural ODE는 연속적으로 발전하며 계산이 더 많이 필요할 수 있지만 임의의 타임스탬프에서 상태를 자연스럽게 조회할 수 있습니다.
-
상태 공간 모델: 둘 다 진화하는 은닉 상태를 표현합니다. 상태 공간 모델은 효율적인 시퀀스 처리를 위해 구조화된 이산 또는 연속 동역학을 자주 사용하는 반면, Neural ODE는 수치 ODE 연산 내부에 신경망을 구체적으로 배치합니다.
-
신경 연산자: 신경 연산자는 종종 다양한 공간 해상도에 걸쳐 전체 함수나 필드 간의 매핑을 학습합니다. Neural ODE는 주로 초기 조건으로부터 유한 차원 상태의 궤적을 학습합니다.
Neural ODE는 물리 정보 신경망과도 다릅니다. 물리 정보 신경망은 일반적으로 알려진 방정식의 제약을 받는 동안 ODE의 솔루션을 근사하는 반면, Neural ODE는 일반적으로 도함수 함수의 전부 또는 일부를 직접 학습합니다.
실제 적용 사례#
-
불규칙 시계열 분석: 병원 측정값, 기계 원격 측정 및 환경 센서는 불균일한 간격으로 도착할 수 있습니다. Neural ODE는 실제 타임스탬프 사이의 잠재 환자 또는 기계 상태를 발전시킬 수 있으며, 모든 샘플을 고정된 그리드에 강제로 맞추지 않고도 보간, 예측 및 누락된 관측값 처리를 지원합니다.
-
객체 추적 및 모션 예측: 비전 시스템은 Ultralytics YOLO26을 사용하여 비디오 속 객체나 키포인트를 관측한 다음, 위치와 속도를 연속적인 모션을 모델링하는 별도의 Neural ODE로 전달할 수 있습니다. 이는 프레임 사이 또는 짧은 가림 현상 동안의 궤적을 추정하는 데 도움이 될 수 있습니다. YOLO 자체는 Neural ODE가 아니며, ODE는 다운스트림 시간 모델 역할을 합니다.
이러한 시스템의 인지 부분에 대해 Ultralytics Platform은 클라우드 데이터셋 주석, 모델 학습, 배포 및 모니터링을 지원하며, 사용자 정의 Neural ODE는 별도의 동역학 컴포넌트로 유지됩니다.
최소 미분 가능 예제#
torchdiffeq 패키지는 PyTorch용 미분 가능한 ODE 솔버를 제공합니다. pip install torch torchdiffeq을 실행한 후, 이 예제는 신경 벡터 필드를 생성하고 2차원 상태를 적분하며 학습 그라디언트를 계산합니다:
import torch
from torch import nn
from torchdiffeq import odeint
torch.manual_seed(0)
dynamics = nn.Sequential(
nn.Linear(2, 32),
nn.Tanh(),
nn.Linear(32, 2),
)
initial_state = torch.tensor([[1.0, 0.0]])
times = torch.linspace(0.0, 2.0, 21)
trajectory = odeint(lambda _time, state: dynamics(state), initial_state, times)
loss = trajectory[-1].square().mean()
loss.backward()
print(dynamics[0].weight.grad.norm())출력 궤적에는 요청된 모든 시간에서의 추정 상태가 포함됩니다. 0이 아닌 그라디언트는 솔버가 학습 가능한 연산의 일부로 남아 있음을 보여줍니다. 이는 PyTorch 자동 미분에서 다루는 개념에 의존하며, TensorFlow와 JAX에서도 유사한 그라디언트 시스템을 사용할 수 있습니다.
실무적 고려사항#
Neural ODE는 연속적 진화, 불규칙한 타임스탬프 또는 알려진 동역학 구조가 중요할 때 가장 유용합니다. 일반 레이어보다 자동으로 더 빠르거나 정확하지는 않습니다.
느슨한 허용 오차는 정확도를 떨어뜨릴 수 있고 엄격한 허용 오차는 많은 함수 평가를 유발할 수 있으므로 솔버 허용 오차를 검증해야 합니다. 뻣뻣하거나 불연속적인 동역학 역시 학습을 느리거나 불안정하게 만들 수 있습니다. 팀은 직접 미분과 수반 민감도 방법을 비교하고, 솔버 평가와 그라디언트 동작을 모니터링하며, 더 단순한 순환 또는 상태 공간 베이스라인과 벤치마크를 수행해야 합니다. MATLAB의 문서화된 Neural ODE layer 같은 프로덕션 도구 역시 솔버와 그라디언트 설정을 노출하며, 수치적 설정이 모델의 필수적인 부분임을 강조합니다.






