Neural Ordinary Differential Equations (Neural ODEs)
Neural ODEが連続的な隠れ状態のダイナミクスをモデル化する方法、不規則な時系列分析をサポートする方法、および実用的な例を用いたモーション予測を実現する方法について学びます。
Neural Ordinary Differential Equations (Neural ODEs) は、隠れ層の固定シーケンスを通過させるのではなく、隠れ状態がどのように連続的に変化するかをモデル化するニューラルネットワークです。これらは dh/dt = f(h, t, parameters) と記述される学習可能な変化率を定義し、数値微分方程式ソルバーを使用して状態を初期値から要求された時刻まで進めます。直感的に言うと、従来のneural networkは変換のスタックを学習しますが、Neural ODEは入力と出力を結ぶ連続的なパスを学習します。
Neural ODEの仕組み#
関数 f は通常、ベクトル場(vector field)またはダイナミクス関数(dynamics function)と呼ばれる小さなニューラルネットワークです。現在の状態 h とオプションの時刻 t が与えられると、その状態が移動すべき方向と速度を予測します。ODEソルバーはこの関数を繰り返し評価し、それらの変化を統合して後日の状態を推定します。
ワークフローは次の3つのコンポーネントで定義されます。
- 初期状態: 開始時刻における入力、エンコードされた観測値、または既知のシステム条件。
- 学習されたダイナミクス: 次の状態を直接返すのではなく、状態微分を返すパラメータ化された関数。
- 数値積分: 軌道を近似する Runge-Kutta などのアルゴリズム。
solve_ivpODE interface は、初期値問題が従来の数値ソフトウェアによってどのように処理されるかを示しています。
適応型ソルバーは、ダイナミクスが急速に変化する場所では小さなステップを実行し、より滑らかな領域ではより大きなステップを実行できます。したがって、計算コストは、所定の層の数だけでなく、学習されたダイナミクス、ソルバーのメソッド、間隔の長さ、および誤差公差に依存します。DiffEqFlux Neural ODE example は、この連続時間定式化を直接示しています。
関連モデルとの違い#
-
Residual Networks: 残差ブロックは、「現在の状態に学習された変化を加えたもの」などの離散的な更新を行います。Neural ODEは、中間的な更新をODEソルバーが決定する連続深度拡張と見なすことができます。
-
Recurrent Neural Networks: RNNは、離散的なシーケンスステップで隠れ状態を更新します。Neural ODEは連続的に進化し、計算量が増える可能性はありますが、任意のタイムスタンプの状態を自然に照会できます。
-
State-Space Models: どちらも進化する隠れ状態を表します。状態空間モデルは効率的なシーケンス処理のために構造化された離散または連続ダイナミクスを使用することが多いのに対し、Neural ODEは特に数値ODEの解の中にニューラルネットワークを配置します。
-
Neural Operators: ニューラルオペレータは、多くの場合さまざまな空間解像度にわたって、関数またはフィールド全体の間でマッピングを学習します。Neural ODEは通常、初期条件から有限次元状態の軌道を学習します。
Neural ODEは、物理情報ニューラルネットワークとも異なります。物理情報ネットワークは、既知の方程式に制約されながらODEの解を近似することが多く、Neural ODEは通常、微分関数自体の全部または一部を学習します。
実世界での利用例#
-
Irregular Time-Series Analysis: 病院の測定値、機械のテレメトリー、環境センサーは、不規則な間隔で到着する場合があります。Neural ODEは、実際のタイムスタンプ間で潜在的な患者または機械の状態を進化させることができ、すべてのサンプルを固定グリッドに強制することなく、補間、予測、および欠損観測の処理をサポートします。
-
Object Tracking and Motion Forecasting: ビジョンシステムはUltralytics YOLO26を使用してビデオ内のオブジェクトやキーポイントを観測し、位置と速度を連続的な動きをモデル化する別のNeural ODEに渡すことができます。これは、フレーム間や短いオクルージョン中の軌道を推定するのに役立ちます。YOLO自体はNeural ODEではなく、ODEは下流のテンポラルモデルとして機能します。
このようなシステムの認識部分において、Ultralytics Platformはクラウドデータセットのアノテーション、モデルのトレーニング、デプロイ、およびモニタリングをサポートし、カスタムのNeural ODEは個別のダイナミクスコンポーネントとして残ります。
最小限の微分可能な例#
torchdiffeq package は、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())出力軌道には、要求されたすべての時刻における推定状態が含まれます。ゼロ以外の勾配は、ソルバーがトレーニング可能な計算の一部であり続けることを示しています。これはPyTorch automatic differentiationでカバーされている概念に依存しており、同等の勾配システムがTensorFlowやJAXで利用可能です。
実践上の考慮事項#
Neural ODEは、連続的な進化、不規則なタイムスタンプ、または既知の動的構造が重要である場合に最も役立ちます。通常の層よりも自動的に高速化されたり精度が向上したりするわけではありません。
緩い許容誤差は精度を低下させ、厳しい許容誤差は多数の関数評価を引き起こす可能性があるため、ソルバーの許容誤差は検証する必要があります。また、剛性のあるダイナミクスや不連続なダイナミクスにより、トレーニングが遅くなったり不安定になったりする場合があります。チームは、直接微分とadjoint sensitivity methodsを比較し、ソルバーの評価と勾配の動作を監視し、より単純なリカレントベースラインや状態空間ベースラインと比較してベンチマークを行う必要があります。MATLABのドキュメント化されたNeural ODE layerなどの本番ツールも、ソルバーと勾配の設定を公開しており、数値設定がモデルの不可欠な部分であることを強調しています。






