Rethinking Forward Processes for Score-Based Nonlinear Data Assimilation in High Dimensions
Organizations: KAIST · Seoul National University
Abstract
Data assimilation is the process of estimating the state of a dynamical system over time by combining model predictions with measurements. This task becomes challenging when the system is nonlinear and high-dimensional. To address this, score-based Bayesian filters have recently emerged. However, these methods still show unsatisfactory performance in certain cases, particularly under spatially sparse measurements. Such degradation stems from heuristic approximations of the likelihood score, whose errors can accumulate over time. This limitation arises because the methods simply adopt a classical forward process for generative modeling that transforms a data distribution toward a Gaussian distribution, which is independent of the measurement equation. Here, we propose a forward process tailored for filtering that transforms the system state toward the measurement space, enabling a theoretically sound formulation of the likelihood score. Based on this, we develop the Measurement-Aware Score-based Filter (MASF). We evaluate MASF on Kolmogorov flow, a high-dimensional fluid benchmark with up to dimensions, under diverse measurement operators, including nonlinear cases with a dimensional mismatch between the state and the measurements. MASF shows improved performance over existing score-based filters and ensemble-type Kalman filters. Notably, MASF achieves up to a wall-clock speedup compared with the baselines when using amortized pretraining. Our implementation is available at https://github.com/tcnllab-oss/masf.
Figures & tables
| Measurement | Dim. | Property | |
|---|---|---|---|
| Grid mask | Spatially sparse mask | ||
| Center mask | Central hole mask | ||
| Sigmoid | Element-wise nonlinear | ||
| Speed | Channel-coupled nonlinear |
| Type | Measurement | Method | Ensemble | RMSE | CSI | Wall-clock (s) | Speedup |
|---|---|---|---|---|---|---|---|
| Linear | Grid mask | EnKF | 250 | ||||
| LETKF | 40 | ||||||
| SF | 100 | ||||||
| SSLS | 100 | ||||||
| MASF | 10 | – | |||||
| Center mask | EnKF | 250 |
| Resolution | Method | Ensemble | RMSE | CSI | Wall-clock (s) | Speedup |
|---|---|---|---|---|---|---|
| EnKF | 250 | |||||
| LETKF | 40 | |||||
| SF | 100 | |||||
| SSLS | 100 | |||||
| MASF | 10 | - | ||||
| EnKF | 250 |
| Symbols | Description | Defined in |
| The physical time variable of the dynamical system. | Eq. ( 1 ) | |
| The diffusion time variable of the measurement-aware forward process. | Sec. 3.1 | |
| The state at the measurement time . | Sec. 2.1 | |
| The measurement at the measurement time . | Eq. ( 2 ) | |
| The observed measurement sequence . | Sec. 2.1 | |
| The measurement-aware forward process. | Eq. ( 12 ) |
Appendix figures & tables21 assets
Supplementary material from the paper’s appendix.
Appendix
| Resource | Specification |
|---|---|
| Operating system | Linux, kernel 5.14.0 |
| CPU | Intel Xeon 6530P, 2 sockets |
| CPU capacity | 64 physical cores, 128 logical CPUs total |
| CPU allocation | 8 logical CPUs per Slurm task |
| System memory | 250 GiB RAM, 63 GiB swap |
| GPU | NVIDIA RTX PRO 6000 Blackwell Server Edition |
| Asset | Use | Version / source | License / terms |
|---|---|---|---|
| JAX-CFD | Kolmogorov flow simulation | 0.2.1 | Apache-2.0 |
| JAX | Numerical computation | 0.4.33 | Apache-2.0 |
| PyTorch | Neural network training | 2.9.0 | BSD-style license |
| NumPy | Numerical computation | 2.1.1 | BSD 3-Clause |
| SciPy | Numerical computation | 1.14.1 | BSD 3-Clause |
| Optuna | Hyperparameter tuning | Cited package | MIT license |
| Parameter | Search values |
|---|---|
| same normalization | { true , false } |
| normalization form | { affine , scale_only } |
| statistics mode | { standard , robust , minmax } |
| statistics update | { moving , fixed , adaptive } |
| momentum | {0.2, 0.4} |
| Parameter | Kolmogorov- | Kolmogorov- | Kolmogorov- |
|---|---|---|---|
| base channels | {16, 32} | {16, 32} | {16, 32} |
| residual blocks | {1, 2, 3} | {1, 2, 3} | {1, 2, 3} |
| channel multiplier | { 1-2-4 , 1-2-4-8 } | { 1-2-4-8 , 1-1-2-3-4 } | { 1-2-4-8 , 1-1-2-3-4 } |
| attention resolution | {8, 16} | {8, 16, 32} | {8, 16, 32} |
| Parameter | Search values |
|---|---|
| pretraining samples | {1000} |
| batch size | {16, 32, 64} |
| epochs | {100, 200, 300, 400} |
| learning rate | { , , } |
| Parameter | Search values |
|---|---|
| NFE | {150, 200, 250} |
| prior scale min. | {0.9, 0.95, 1.0} |
| prior scale max. | {1.4, 1.5, 1.6} |
| prior scale power | {1.0, 1.25, 1.5} |
| likelihood scale min. | {1.0, 1.1, 1.2} |
| likelihood scale max. | {1.4, 1.5, 1.6} |
| Parameter | Search values |
|---|---|
| batch size | {10} |
| learning rate | { , } |
| full epochs | {80, 90, 100, 110, 120} |
| Category | Field | Grid mask | Grid mask | Grid mask |
|---|---|---|---|---|
| measurement | type | grid_mask | grid_mask | grid_mask |
| same normalization | true | false | false | |
| normalization form | affine | affine | scale_only | |
| statistics mode | standard | standard | standard | |
| statistics update | moving | moving | adaptive | |
| main parameter | stride | stride | stride |
| Category | Field | Center mask | Sigmoid | Speed |
|---|---|---|---|---|
| measurement | type | center_mask | sigmoid | speed |
| same normalization | false | false | false | |
| normalization form | scale_only | affine | scale_only | |
| statistics mode | standard | standard | robust | |
| statistics update | fixed | fixed | adaptive | |
| main parameter | hole ratio |
| Parameter | Search values |
|---|---|
| ensemble size | {100, 200, 250, 300, 400} |
| update mode | { full } |
| inflation | {1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3} |
| epsilon | { , } |
| Parameter | Search values |
|---|---|
| ensemble size | {10, 20, 30, 40, 60, 100} |
| inflation | {1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3} |
| localization radius | {3, 5, 7} |
| epsilon | { , } |
| Method | Ensemble size | RMSE ( ) | Wall-clock (s) |
|---|---|---|---|
| EnKF | |||
| LETKF |
| Method | Parameter | Search values / selected value |
|---|---|---|
| SF, SSLS | NFE | 500 |
| SSLS | perturbation std. | {0.001, 0.05, 0.1, 0.2} |
| SSLS | stepsize | {0.0001, 0.001, 0.002, 0.003, 0.004} |
| SF, SSLS | tolerance | {10, 50, 100, 200} |
| Parameter | From | To | RMSE ( ) |
| Normalization | |||
| current_config | – | – | |
| same_normalization | true | false | |
| normalization_form | affine | scale_only | |
| stats_mode | standard | robust | |
| stats_update_mode | moving | fixed | |
| Measurement | Method | Strategy | Ensemble | RMSE ( ) | CSI ( ) | Wall-clock (s) |
|---|---|---|---|---|---|---|
| Grid mask | SF | Scratch | 100 | |||
| Scratch | 10 | |||||
| Pretraining | 10 | |||||
| SSLS | Scratch | 100 | ||||
| Scratch | 10 | |||||
| Pretraining | 10 |
Data Assimilation
Data assimilation combines observations with dynamical models to estimate hidden system states and their uncertainty over time.
See all 58 papers