2024-07-11 –, Method (1.5)
ProbNumDiffEq.jl implements probabilistic numerical ODE solvers for the DifferentialEquations.jl ecosystem. These methods intepret "solving an ODE" as a probabilistic inference task, and they return a probabilistic estimate of the numerical solution and approximation error. Under the hood, this is done with extended Kalman filtering - but to the user, it looks like any other DifferentialEquations.jl solver. This talk presents ProbNumDiffEq.jl, its functionality, and some implementation details.
Probabilistic numerical methods interpret numerical problems as problems of Bayesian inference, and then solve them accordingly. For ODEs, one popular class of such methods treats ODEs as Bayesian state estimation problems, and then essentially solves the ODE with a Bayesian filtering and smoothing method such as the extended Kalman filter. ProbNumDiffEq.jl provides an efficient implementation of these methods and makes them availabe in the the DifferentialEquations.jl ecosystem.
This talk starts with a brief introduction to probabilistic numerics and to probsbilistic ODE solvers, and then presents ProbNumDiffEq.jl. We will cover some example usages for different problem types, then dive into some implementation details that matter to make these solvers stable and fast, share some experiences on working with other Julia packages, and discuss the future prospects of probabilistic numerics within the Julia ecosystem.
Features of ProbNumDiffEq.jl
For a new user, ProbNumDiffEq.jl looks just like a standard ODE solver library and it covers many features that users often want from solvers:
- Explicit and semi-implicit solvers of varying order
- Specialized solvers:
- for second-order ODEs
- for Manifolds (using a specific callback)
- Exponential integrators
- Rosenbrock-type exponential integrators
- Adaptive step-size selection (inherited from OrdinaryDiffEq.jl)
- Dense output
- Plotting
- Callback support (inherited from OrdinaryDiffEq.jl)
- All solvers are compatible with mass-matrix DAEs
In addition, ProbNumDiffEq.jl also has many features that relate to the probabilistic formulation of the solves, and provides a range of priors, multiple calibration approaches, and a likelihood model for parameter estimation.
Links
- Github repository: https://github.com/nathanaelbosch/ProbNumDiffEq.jl
- Tutorial Getting started with ProbNumDiffEq.jl: https://nathanaelbosch.github.io/ProbNumDiffEq.jl/dev/tutorials/getting_started/
- References: https://nathanaelbosch.github.io/ProbNumDiffEq.jl/dev/references/
I am a PhD student in machine learning at the University of Tübingen and the International Max Planck Research School for Intelligent Systems (IMPRS-IS), supervised by Prof. Dr. Philipp Hennig. I'm interested in probabilistic machine learning for and with dynamical systems, with a focus on probabilistic numerics: by treating numerical simulation as a probabilistic inference problem, we develop new methods that efficiently quantify their numerical error and enable new ways to do data-driven inference in dynamical systems.