File size: 7,829 Bytes
4db19cf c6cd3f1 4db19cf c6cd3f1 514b075 c6cd3f1 514b075 c6cd3f1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | ---
license: apache-2.0
library_name: pytorch
tags:
- scientific-ml
- hyperbolic
- poincare
- spatiotemporal
- continual-learning
- reinforcement-learning
- physics-informed
- hierarchy-embedding
- the-well
- paleobiology
datasets:
- polymathic-ai/the_well
metrics:
- mean_reciprocal_rank
- hyperbolic_loss
pipeline_tag: other
---
# well_poincare_rl
**Hierarchical multi-step field predictor in the Poincaré ball**, with optional PPO fine-tuning, continual learning (Replay + EWC), and explicit data/checkpoint contracts for multi-contributor scientific use.
This model predicts spatiotemporal scientific fields and embeds hierarchical structure (e.g. taxonomies) using hyperbolic geometry.
## Model description
| Component | Role |
|---|---|
| `MultiScaleEncoder` | Channel-agnostic encoder (shared 1×1 stem per channel → mean fusion → spectral + local path) → 8-D Euclidean latent |
| `HierarchicalHyperbolicPredictor` | Multi-step prediction in the Poincaré ball (coarse RNN + residual refinement levels) |
| `HierarchyEmbedding` | Poincaré vs Euclidean node embeddings for taxonomy trees (RiemannianAdam / geoopt) |
| Continual stack | Per-domain `FieldNormalizer`, same-C `ReplayBuffer`, `DiagonalEWC`, optional hyperbolic distillation |
| Optional RL | Gymnasium env + PPO / on-policy fine-tune with hyperbolic critic |
**Intended uses**
- Multi-step forecasting of continuum fields (reaction–diffusion, active matter, fluids, similar PDE-style data)
- Continual training across scientific domains with **different channel counts** (no fixed-`C` encoder lock-in)
- Hierarchy recovery on taxonomic / tree-structured scientific data (explicit Poincaré vs Euclidean comparison)
- Research on hyperbolic representations for multi-scale and hierarchical scientific structure
## How to use
```bash
pip install torch geoopt gymnasium h5py the_well
# clone / install this package, then:
```
```python
import torch
from src.model import MultiScaleEncoder, HierarchicalHyperbolicPredictor
from src.config import BEST_HPARAMS as BEST
enc = MultiScaleEncoder(hidden=BEST["hidden"], out_dim=8)
model = HierarchicalHyperbolicPredictor(
enc, c=BEST["curvature"], pred_steps=BEST["pred_steps"], levels=BEST["levels"]
)
# x: (B, T, C, H, W) or (B, C, H, W) — C is not fixed by the encoder
pred = model(x) # (B, pred_steps, 8) points in the Poincaré ball
```
**Real multi-stream continual (requires HF network access):**
```bash
python -m src.run_multistream \
--datasets gray_scott_reaction_diffusion active_matter shear_flow \
--max-samples 96 --epochs-per-domain 3
```
**Hierarchy embedding (real PBDB or synthetic tree):**
```bash
python -m src.run_hierarchy_embed \
--pbdb-taxa Dinosauria Mammalia \
--dims 8 --loss-types softmax --burn-in-epochs 0 \
--c-values 1.0 2.0 --epochs 80 --lr 0.02 --seeds 0 --optimizer radam
```
Synthetic-only smoke tests: `python -m src.run_full --synthetic` and `python -m src.run_hierarchy_embed --synthetic ...`.
## Training data
| Source | Role | Provenance label |
|---|---|---|
| [The Well](https://github.com/polymathic-ai/the_well) (HF streams) | Spatiotemporal fields (e.g. gray_scott, active_matter, shear_flow) | `REAL_STREAMED` |
| Local Well-format HDF5 | Same, offline | `REAL_LOCAL` |
| [PBDB](https://paleobiodb.org) occurrence records | Taxonomy edges (Dinosauria + Mammalia) and optional density fields | `REAL_PBDB` / `REAL_PBDB_TAXONOMY` |
| Synthetic Well-like / synthetic trees | Opt-in only (`--synthetic`); never silent fallback | `SYNTHETIC` / `SYNTHETIC_TREE` |
**Contract:** real-data paths **hard-fail** on missing data, schema mismatch, or stream failure. Synthetic data is only available via explicit APIs. Provenance is always reported and stored with checkpoints.
## Evaluation results
Verification tiers used below:
- 🔒 **Checkpoint-verified** — recomputed from a saved artifact (hash chain, stored metrics, or model structure)
- 📋 **Reported** — from a run log; consistent and plausible, not independently re-derived from a saved artifact
### Track A — Multi-stream continual learning (Well)
Sequential training on live HF streams, no synthetic fallback.
🔒 Verified from checkpoint: `REAL_STREAMED` provenance, dataset names, per-domain normalizer channel counts (C=2, 11, 4), channel-agnostic encoder architecture.
📋 Reported retention losses (checkpoint format does not yet persist the loss history):
| After domain | gray_scott (C=2) | active_matter (C=11) | shear_flow (C=4) |
|---|---|---|---|
| Domain 1 | 0.3486 | — | — |
| Domain 2 | 0.3561 | 0.3299 | — |
| Domain 3 | 0.3248 | 0.3484 | 0.3358 |
Replay buffer by channel count after full run: `{2: 24, 11: 24, 4: 24}`.
### Track B — Real PBDB hierarchy (Poincaré vs Euclidean)
Live taxonomy edges from Dinosauria + Mammalia (~16k occurrence records → **2141 nodes**, **2172 edges**).
🔒 **Independently recomputed** from raw occurrence JSON using this repo’s `build_edge_list` / `hash_edge_list` / `hash_config` / `combined_identity_hash`; matched checkpoint identity and stored `results_table` to full precision.
| Setting | ΔMRR (Poincaré − Euclidean) |
|---|---|
| dim=8, softmax, c=1.0 | 🔒 **+0.1151** |
| dim=8, softmax, c=2.0 | 🔒 **+0.1576** |
Protocol: reconstruction (train = test edges) — measures embedding capacity at a given dimension, not link-prediction generalization.
**Scope:** one seed, one dimension, metrics-only hierarchy checkpoint (full embedding weights not exported in the verified artifact).
## Hyperparameters (default / Optuna best)
```text
lr=3.82e-4, curvature=0.455, hidden=96, batch_size=8,
pred_steps=4, w_phys=9.6e-4, levels=2, window=4
```
Single source of truth: `src/config.py` (`BEST_HPARAMS`).
## Limitations
- Multistream **retention numbers** are 📋 reported, not 🔒 checkpoint-verified (loss history not stored in the multistream checkpoint format).
- Real PBDB hierarchy result is **one seed / one dimension**.
- Channel fusion is **mean-pooling** (lossy); attention-based fusion is future work.
- Soft hierarchical **region structure** in the Poincaré ball is currently deferred.
- While PPO is implemented and smoke-tested; it has not yet been optimized and verified for performance.
- Conservation auxiliary loss in the shipped physics suite is a soft proxy; a stricter spatial-integral form is a recommended upgrade, not necessarily present in every checkpoint.
- Supported compute: **CPU and CUDA**. Not ported to TPU/XLA or LPU.
- Data licenses are separate from code: PBDB is CC0; The Well has its own terms. This card’s Apache-2.0 license covers **code and released model artifacts**, not third-party datasets.
## Ethical considerations
- In many fields, when a measure becomes a target it ceases to be a good measure; that is likely true with reward hacking this design as well.
- This release is for research and methodological development.
- The field of Paleobiology includes data with known incompleteness and occasional inconsistencies;
- As models trained on this system reflect curator-assigned taxonomy in PBDB, they reflect such inconsistencies across recorded embeddings.
- The pipeline records edges as-observed and does not “resolve” taxonomic disputes.
## Citation
If you use this code or results, please cite the repository and the relevant data sources (The Well, PBDB). A formal paper citation will be added when the arXiv draft is public.
```bibtex
@software{well_poincare_rl,
title = {well\_poincare\_rl: Hierarchical hyperbolic field prediction and taxonomy embedding},
year = {2026},
license = {Apache-2.0}
}
```
## License
Code and released model artifacts: **Apache License 2.0**.
Dataset terms remain those of the original providers (The Well, Paleobiology Database, etc.). |