score-based adam dsm
#16
by odunbar - opened
- .cache/known_methods_snapshot.json +14 -0
- CLAUDE.md +2 -0
- data/opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l63_2026-09-14.nc +3 -0
- data/opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_const-force_2026-09-14.nc +3 -0
- data/opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_flux-force_2026-09-14.nc +3 -0
- data/opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_vec-force_2026-09-14.nc +3 -0
- src/common/method_registry.py +13 -0
- src/data_store.py +4 -0
- src/pages/MethodDetails.py +25 -0
.cache/known_methods_snapshot.json
CHANGED
|
@@ -176,10 +176,24 @@
|
|
| 176 |
"score-based adam (gfdt, kgmm) (extended window)",
|
| 177 |
"score-based adam (gfdt, kgmm) (parallel branches)"
|
| 178 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 179 |
}
|
| 180 |
},
|
| 181 |
"observed_methods": [
|
| 182 |
"adam",
|
|
|
|
| 183 |
"adam-kgmm",
|
| 184 |
"etki",
|
| 185 |
"iekf",
|
|
|
|
| 176 |
"score-based adam (gfdt, kgmm) (extended window)",
|
| 177 |
"score-based adam (gfdt, kgmm) (parallel branches)"
|
| 178 |
]
|
| 179 |
+
},
|
| 180 |
+
"adam-dsm": {
|
| 181 |
+
"abbreviation": "ADAM-DSM",
|
| 182 |
+
"Method": "Score-based Adam (DSM)",
|
| 183 |
+
"parallelism": "serial",
|
| 184 |
+
"update_type": "gradient",
|
| 185 |
+
"method_goal": "optimization",
|
| 186 |
+
"emulator_use": "none",
|
| 187 |
+
"aliases": [
|
| 188 |
+
"adam-dsm",
|
| 189 |
+
"score-based adam (gfdt, dsm) (extended window)",
|
| 190 |
+
"score-based adam (gfdt, dsm) (parallel branches)"
|
| 191 |
+
]
|
| 192 |
}
|
| 193 |
},
|
| 194 |
"observed_methods": [
|
| 195 |
"adam",
|
| 196 |
+
"adam-dsm",
|
| 197 |
"adam-kgmm",
|
| 198 |
"etki",
|
| 199 |
"iekf",
|
CLAUDE.md
CHANGED
|
@@ -77,6 +77,7 @@ calibration_benchmark/
|
|
| 77 |
│ ├── opt_kgmm_score_lm/ Score-based LM (KGMM score estimator) results (per-benchmark files)
|
| 78 |
│ ├── opt_dsm_score_lm/ Score-based LM (DSM score estimator) results (per-benchmark files)
|
| 79 |
│ ├── opt_kgmm_score_adam/ Score-based ADAM (KGMM score estimator) results (per-benchmark files)
|
|
|
|
| 80 |
│ ├── ces-eki-dmc_results/ CES-EKI-DMC ensemble-results files (UQ source)
|
| 81 |
│ ├── gboed-uq_results/ GBOED ensemble-results files (UQ source)
|
| 82 |
│ ├── gnki-uq_results/ IEKF (a.k.a GNKI) ensemble-results files (UQ source)
|
|
@@ -200,6 +201,7 @@ A quick taxonomy tree is rendered on the home page (`src/streamlit_app.py`).
|
|
| 200 |
| `lm-kgmm` | LM-KGMM | serial | gradient | optimization | none | — |
|
| 201 |
| `lm-dsm` | LM-DSM | serial | gradient | optimization | none | — |
|
| 202 |
| `adam-kgmm` | ADAM-KGMM | serial | gradient | optimization | none | — |
|
|
|
|
| 203 |
|
| 204 |
## How to extend
|
| 205 |
|
|
|
|
| 77 |
│ ├── opt_kgmm_score_lm/ Score-based LM (KGMM score estimator) results (per-benchmark files)
|
| 78 |
│ ├── opt_dsm_score_lm/ Score-based LM (DSM score estimator) results (per-benchmark files)
|
| 79 |
│ ├── opt_kgmm_score_adam/ Score-based ADAM (KGMM score estimator) results (per-benchmark files)
|
| 80 |
+
│ ├── opt_dsm_score_adam/ Score-based ADAM (DSM score estimator) results (per-benchmark files)
|
| 81 |
│ ├── ces-eki-dmc_results/ CES-EKI-DMC ensemble-results files (UQ source)
|
| 82 |
│ ├── gboed-uq_results/ GBOED ensemble-results files (UQ source)
|
| 83 |
│ ├── gnki-uq_results/ IEKF (a.k.a GNKI) ensemble-results files (UQ source)
|
|
|
|
| 201 |
| `lm-kgmm` | LM-KGMM | serial | gradient | optimization | none | — |
|
| 202 |
| `lm-dsm` | LM-DSM | serial | gradient | optimization | none | — |
|
| 203 |
| `adam-kgmm` | ADAM-KGMM | serial | gradient | optimization | none | — |
|
| 204 |
+
| `adam-dsm` | ADAM-DSM | serial | gradient | optimization | none | — |
|
| 205 |
|
| 206 |
## How to extend
|
| 207 |
|
data/opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l63_2026-09-14.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0c8331075ef213d07bfee8663720c7d60040fa97ca320913402dec3393e44178
|
| 3 |
+
size 15752
|
data/opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_const-force_2026-09-14.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:46ef9d9bea3b5212e8633dbbd3841109da2de86a9015a5aebee4a32ebac787aa
|
| 3 |
+
size 15752
|
data/opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_flux-force_2026-09-14.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b2643538d8001113ab560c50f224fb05763aafb1d78e2cd6c9b996b96da6d31d
|
| 3 |
+
size 15752
|
data/opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_vec-force_2026-09-14.nc
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:de41e884c7c4d1b06a93d90e5ca859fbe6f695e3a106b48f1f936de3bf6620f6
|
| 3 |
+
size 15752
|
src/common/method_registry.py
CHANGED
|
@@ -182,6 +182,19 @@ KNOWN_METHODS = {
|
|
| 182 |
"score-based adam (gfdt, kgmm) (parallel branches)",
|
| 183 |
],
|
| 184 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 185 |
}
|
| 186 |
|
| 187 |
|
|
|
|
| 182 |
"score-based adam (gfdt, kgmm) (parallel branches)",
|
| 183 |
],
|
| 184 |
},
|
| 185 |
+
"adam-dsm": {
|
| 186 |
+
"abbreviation": "ADAM-DSM",
|
| 187 |
+
"Method": "Score-based Adam (DSM)",
|
| 188 |
+
"parallelism": "serial",
|
| 189 |
+
"update_type": "gradient",
|
| 190 |
+
"method_goal": "optimization",
|
| 191 |
+
"emulator_use": "none",
|
| 192 |
+
"aliases": [
|
| 193 |
+
"adam-dsm",
|
| 194 |
+
"score-based adam (gfdt, dsm) (extended window)",
|
| 195 |
+
"score-based adam (gfdt, dsm) (parallel branches)",
|
| 196 |
+
],
|
| 197 |
+
},
|
| 198 |
}
|
| 199 |
|
| 200 |
|
src/data_store.py
CHANGED
|
@@ -38,6 +38,7 @@ DATASET_FILES = {
|
|
| 38 |
"opt_kgmm_score_lm/leaderboard_sblm_kgmm_parallel_l63_2026-09-02.nc",
|
| 39 |
"opt_dsm_score_lm/leaderboard_sblm_dsm_parallel_l63_2026-08-12.nc",
|
| 40 |
"opt_kgmm_score_adam/leaderboard_sbadam_kgmm_parallel_l63_2026-09-11.nc",
|
|
|
|
| 41 |
],
|
| 42 |
"L96": [
|
| 43 |
"teki_results/leaderboard_teki_l96_const-force_2026-09-10.nc",
|
|
@@ -49,6 +50,7 @@ DATASET_FILES = {
|
|
| 49 |
"opt_kgmm_score_lm/leaderboard_sblm_kgmm_parallel_l96_const-force_2026-09-02.nc",
|
| 50 |
"opt_dsm_score_lm/leaderboard_sblm_dsm_parallel_l96_const-force_2026-08-12.nc",
|
| 51 |
"opt_kgmm_score_adam/leaderboard_sbadam_kgmm_parallel_l96_const-force_2026-09-11.nc",
|
|
|
|
| 52 |
],
|
| 53 |
"L96_NN_FORCING": [
|
| 54 |
"teki_results/leaderboard_teki_l96_flux-force_2026-09-10.nc",
|
|
@@ -58,6 +60,7 @@ DATASET_FILES = {
|
|
| 58 |
"opt_kgmm_score_lm/leaderboard_sblm_kgmm_parallel_l96_flux-force_2026-09-02.nc",
|
| 59 |
"opt_dsm_score_lm/leaderboard_sblm_dsm_parallel_l96_flux-force_2026-08-12.nc",
|
| 60 |
"opt_kgmm_score_adam/leaderboard_sbadam_kgmm_parallel_l96_flux-force_2026-09-11.nc",
|
|
|
|
| 61 |
],
|
| 62 |
"L96_SPATIAL_FORCING": [
|
| 63 |
"teki_results/leaderboard_teki_l96_vec-force_2026-09-10.nc",
|
|
@@ -69,6 +72,7 @@ DATASET_FILES = {
|
|
| 69 |
"opt_kgmm_score_lm/leaderboard_sblm_kgmm_parallel_l96_vec-force_2026-09-02.nc",
|
| 70 |
"opt_dsm_score_lm/leaderboard_sblm_dsm_parallel_l96_vec-force_2026-08-12.nc",
|
| 71 |
"opt_kgmm_score_adam/leaderboard_sbadam_kgmm_parallel_l96_vec-force_2026-09-11.nc",
|
|
|
|
| 72 |
],
|
| 73 |
}
|
| 74 |
|
|
|
|
| 38 |
"opt_kgmm_score_lm/leaderboard_sblm_kgmm_parallel_l63_2026-09-02.nc",
|
| 39 |
"opt_dsm_score_lm/leaderboard_sblm_dsm_parallel_l63_2026-08-12.nc",
|
| 40 |
"opt_kgmm_score_adam/leaderboard_sbadam_kgmm_parallel_l63_2026-09-11.nc",
|
| 41 |
+
"opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l63_2026-09-14.nc",
|
| 42 |
],
|
| 43 |
"L96": [
|
| 44 |
"teki_results/leaderboard_teki_l96_const-force_2026-09-10.nc",
|
|
|
|
| 50 |
"opt_kgmm_score_lm/leaderboard_sblm_kgmm_parallel_l96_const-force_2026-09-02.nc",
|
| 51 |
"opt_dsm_score_lm/leaderboard_sblm_dsm_parallel_l96_const-force_2026-08-12.nc",
|
| 52 |
"opt_kgmm_score_adam/leaderboard_sbadam_kgmm_parallel_l96_const-force_2026-09-11.nc",
|
| 53 |
+
"opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_const-force_2026-09-14.nc",
|
| 54 |
],
|
| 55 |
"L96_NN_FORCING": [
|
| 56 |
"teki_results/leaderboard_teki_l96_flux-force_2026-09-10.nc",
|
|
|
|
| 60 |
"opt_kgmm_score_lm/leaderboard_sblm_kgmm_parallel_l96_flux-force_2026-09-02.nc",
|
| 61 |
"opt_dsm_score_lm/leaderboard_sblm_dsm_parallel_l96_flux-force_2026-08-12.nc",
|
| 62 |
"opt_kgmm_score_adam/leaderboard_sbadam_kgmm_parallel_l96_flux-force_2026-09-11.nc",
|
| 63 |
+
"opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_flux-force_2026-09-14.nc",
|
| 64 |
],
|
| 65 |
"L96_SPATIAL_FORCING": [
|
| 66 |
"teki_results/leaderboard_teki_l96_vec-force_2026-09-10.nc",
|
|
|
|
| 72 |
"opt_kgmm_score_lm/leaderboard_sblm_kgmm_parallel_l96_vec-force_2026-09-02.nc",
|
| 73 |
"opt_dsm_score_lm/leaderboard_sblm_dsm_parallel_l96_vec-force_2026-08-12.nc",
|
| 74 |
"opt_kgmm_score_adam/leaderboard_sbadam_kgmm_parallel_l96_vec-force_2026-09-11.nc",
|
| 75 |
+
"opt_dsm_score_adam/leaderboard_sbadam_dsm_parallel_l96_vec-force_2026-09-14.nc",
|
| 76 |
],
|
| 77 |
}
|
| 78 |
|
src/pages/MethodDetails.py
CHANGED
|
@@ -422,6 +422,31 @@ method_meta = {
|
|
| 422 |
],
|
| 423 |
"notes": "**Inherits Adam's local-minimum susceptibility** (no trust region, restart, or ensemble diversity to escape a bad basin) **and LM-KGMM's cheaper-than-DSM score estimation** — the k-means/Gaussian-mixture score fit is far less costly than training a neural score network, so ADAM-KGMM stayed tractable on problems where a DSM-based Adam variant would not.",
|
| 424 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 425 |
}
|
| 426 |
|
| 427 |
# KNOWN_METHODS is the source of truth for the abbreviation/full-name list,
|
|
|
|
| 422 |
],
|
| 423 |
"notes": "**Inherits Adam's local-minimum susceptibility** (no trust region, restart, or ensemble diversity to escape a bad basin) **and LM-KGMM's cheaper-than-DSM score estimation** — the k-means/Gaussian-mixture score fit is far less costly than training a neural score network, so ADAM-KGMM stayed tractable on problems where a DSM-based Adam variant would not.",
|
| 424 |
},
|
| 425 |
+
"ADAM-DSM": {
|
| 426 |
+
"citation": "Giorgini, Bischoff & Souza, arXiv:2509.19660, 2025",
|
| 427 |
+
"url": "https://arxiv.org/abs/2509.19660",
|
| 428 |
+
"source": "`opt_experiments/score_based_adam` — Adam with a GFDT/DSM gradient surrogate.",
|
| 429 |
+
"math": "Identical Adam + GFDT scheme as ADAM-KGMM (see that entry's update equation), but the score `s(x)=∇log p(x)` is estimated by Denoising Score Matching (DSM) instead of KGMM.",
|
| 430 |
+
"guardrails": (
|
| 431 |
+
"Same DSM training scheme as LM-DSM: a neural network is trained to denoise samples perturbed "
|
| 432 |
+
"by Gaussian noise at a single fixed scale `σ`, whose optimal denoiser equals the noised "
|
| 433 |
+
"density's score (Vincent, 2011); `σ` is fixed per benchmark rather than annealed, chosen "
|
| 434 |
+
"empirically as the smallest noise level at which the network still receives a usable learning "
|
| 435 |
+
"signal. Same Stein recalibration and collapsed-window `ForwardDiff.jl` fallback, and the same "
|
| 436 |
+
"Tukey-tapered response integral and evaluation-budget cap as LM-DSM/ADAM-KGMM. Same per-case "
|
| 437 |
+
"step size `α` (shared `β₁`/`β₂`/`ε`) as ADAM-KGMM — sized to ~0.25× the case's prior standard "
|
| 438 |
+
"deviation, since a single global value tuned for one benchmark's residual scaling left Adam "
|
| 439 |
+
"unable to traverse even the L63/L96-const prior within its iteration budget."
|
| 440 |
+
),
|
| 441 |
+
"params": [
|
| 442 |
+
{"Parameter": "α (step size)", "Value": "Per-case, ~0.25× prior std (0.025–0.75 across benchmarks)"},
|
| 443 |
+
{"Parameter": "β₁, β₂", "Value": "0.9, 0.999"},
|
| 444 |
+
{"Parameter": "σ (DSM noise scale)", "Value": "0.2 (L63) / 0.025 (L96 variants)"},
|
| 445 |
+
{"Parameter": "tukey_alpha (response taper)", "Value": "0.75"},
|
| 446 |
+
{"Parameter": "budget_total (outer_iter × N_ens)", "Value": "500"},
|
| 447 |
+
],
|
| 448 |
+
"notes": "**Inherits both LM-DSM's slow DSM-training cost and Adam's local-minimum susceptibility** — training the DSM score network is the binding wall-clock cost (as with LM-DSM), and Adam's lack of a trust region or ensemble diversity leaves it as prone to getting stuck in a bad basin as ADAM-KGMM.",
|
| 449 |
+
},
|
| 450 |
}
|
| 451 |
|
| 452 |
# KNOWN_METHODS is the source of truth for the abbreviation/full-name list,
|