Robust Offline Algorithms¶
Robust offline methods learn from a fixed dataset and never interact with the environment, so they meet every shift without having seen it. They are organised by where robustness enters: the learner, the data, or a generative model of the data.
Features¶
| Feature | Robust Offline Algorithms |
|---|---|
| Interface | One experiment file per run, launched with a training script |
| Method selection | The algorithm card named by the experiment file |
| Training data | A fixed dataset, named by the task card |
| Training environment | None. The environment is used for evaluation only |
| Budget | Gradient updates, native to each method |
| Evaluation | The frozen checkpoint, on the grid named by the eval card |
Supported methods¶
| Method | Family | Base | Claimed robustness |
Shifted-env rollout |
Adversarial network |
Learned model |
|---|---|---|---|---|---|---|
| RFQI | Learner-centric | FQI | Dynamic | |||
| RORL | Learner-centric | SAC | Observation | |||
| ATLA-IQL | Learner-centric | IQL | Observation | ✓ | ||
| RSC-IQL | Data-centric | IQL | Semantic | ✓ | ||
| RAMBO | Data-centric | SAC | Dynamic | ✓ | ✓ | |
| ROMB | Generative | IQL | Dynamic | ✓ | ✓ | |
| FWM | Generative | IQL | Dynamic | ✓ | ||
| PLR-PVL | Generative | IQL | Dynamic | ✓ |
Claimed robustness is the shift the original paper targets.
Run a method¶
Every method is launched from an experiment file. RORL on Hopper:
python baselines/train.py \
-c robustrllib/configs/experiment/rorl_hopper.yaml --seed 0
python baselines/evaluate.py --run runs/rorl_hopper/seed0
Every method page gives the command for that method. Train an algorithm explains the experiment file, the overrides and the run directory.
Configuration¶
| Method | Implementation | Experiment file | Training budget |
|---|---|---|---|
| RFQI | baselines/rfqi |
rfqi_hopper.yaml |
500k updates, batch 1000 |
| RORL | baselines/rorl |
rorl_hopper.yaml |
3M updates on MuJoCo and Door, 1M elsewhere |
| ATLA-IQL | baselines/atla_iql |
atla_iql_hopper.yaml |
1M updates, batch 256 |
| RSC-IQL | baselines/rsc_iql |
rsc_iql_hopper.yaml |
1M updates, batch 256 |
| RAMBO | baselines/rambo |
rambo_hopper.yaml |
2M updates on MuJoCo and Door, 1M elsewhere |
| ROMB | baselines/romb |
romb_hopper.yaml |
1M updates, batch 256 |
| FWM | baselines/fwm |
fwm_hopper.yaml |
1M updates, batch 256 |
| PLR-PVL | baselines/plr_pvl |
plr_pvl_hopper.yaml |
1M updates, batch 256 |
Experiment files are in robustrllib/configs/experiment/. Each names the algorithm card, the task card and the evaluation grid of the run. Every method keeps its native training recipe and budget; what is shared is the evaluation.
Robust performance¶
Normalized score of the frozen checkpoint. Q1 to Q4 are the severity quartiles of each shift factor's scales, ordered by displacement from the nominal setting, and All covers every shifted condition.
| Method | Nominal | Q1 | Q2 | Q3 | Q4 | All |
|---|---|---|---|---|---|---|
| RFQI | 79.3 | 58.3 | 50.4 | 36.5 | 29.7 | 43.6 |
| RORL | 79.3 | 60.3 | 48.7 | 40.8 | 31.4 | 45.3 |
| ATLA-IQL | 108.0 | 81.4 | 61.3 | 44.3 | 40.4 | 56.9 |
| RSC-IQL | 100.4 | 80.3 | 56.2 | 42.2 | 33.3 | 53.0 |
| RAMBO | 95.5 | 73.5 | 57.4 | 45.9 | 37.8 | 53.7 |
| ROMB | 106.6 | 79.7 | 59.7 | 44.0 | 36.2 | 54.9 |
| FWM | 105.9 | 81.8 | 62.1 | 45.3 | 37.0 | 56.6 |
| PLR-PVL | 102.7 | 76.9 | 60.2 | 45.4 | 37.3 | 55.0 |
Scores are not clipped: 0 and 100 are reference points, not bounds. The protocol is described in Evaluation Protocol.
Method pages¶
Learner-centric
- RFQI: Worst-case Bellman update over a total-variation uncertainty set.
- RORL: Local policy and value smoothing, with an ensemble penalty at perturbed states.
- ATLA-IQL: A learned observation adversary, trained through the critic instead of by RL.
Data-centric
- RSC-IQL: Rewrites logged transitions along the dimensions a causal mask marks as non-causal.
- RAMBO: Model rollouts from an ensemble that is trained adversarially against the policy.
Data-centric · generative