🌹 Unifloral: 統一オフライン強化学習
オフライン強化学習の統一実装と厳密な評価 - Matthew Jackson、Uljad Berdica、Jarek Liesenによる開発。
💡 コード哲学
- ⚛️ 単一ファイル: アルゴリズムはスタンドアロンのPythonファイルとして実装。
- 🤏 最小限: アルゴリズム間で必要な部分のみを編集し、比較を容易に。
- ⚡️ GPU加速: JAXを用い、全トレーニングコードをエンドツーエンドでコンパイルし、超高速トレーニングを実現。
🤖 アルゴリズム
二種類のアルゴリズム実装を提供しています:
- スタンドアロン: 各アルゴリズムは最小限の依存関係で単一ファイルとして実装され、理解・修正が容易。
- 統一版: ほとんどのアルゴリズムは統一実装
unifloral.pyの設定ファイルとして利用可能。
final_returns/の.npzファイルに保存されます。全スクリプトはD4RLをサポートし、Weights & Biasesを用いたログ取得に対応。設定はWandBスイープファイルで提供。
モデルフリー
| アルゴリズム | スタンドアロン | 統一版 | 補足 |
| --- | --- | --- | --- |
| BC | bc.py | unifloral/bc.yaml | - |
| SAC-N | sac_n.py | unifloral/sac_n.yaml | [[ArXiv]](https://arxiv.org/abs/2110.01548) |
| EDAC | edac.py | unifloral/edac.yaml | [[ArXiv]](https://arxiv.org/abs/2110.01548) |
| CQL | cql.py | - | [[ArXiv]](https://arxiv.org/abs/2006.04779) |
| IQL | iql.py | unifloral/iql.yaml | [[ArXiv]](https://arxiv.org/abs/2110.06169) |
| TD3-BC | td3_bc.py | unifloral/td3_bc.yaml | [[ArXiv]](https://arxiv.org/abs/2106.06860) |
| ReBRAC | rebrac.py | unifloral/rebrac.yaml | [[ArXiv]](https://arxiv.org/abs/2305.09836) |
| TD3-AWR | - | unifloral/td3_awr.yaml | [[ArXiv]](https://arxiv.org/abs/2504.11453) |
モデルベース
ダイナミクスモデルのトレーニング用に単一のスクリプトを実装しています: dynamics.py、設定は dynamics.yaml です。
| アルゴリズム | 単独 | 統合 | 補足 |
| --- | --- | --- | --- |
| MOPO | mopo.py | - | [[ArXiv]](https://arxiv.org/abs/2005.13239) |
| MOReL | morel.py | - | [[ArXiv]](https://arxiv.org/abs/2005.05951) |
| COMBO | combo.py | - | [[ArXiv]](https://arxiv.org/abs/2102.08363) |
| MoBRAC | - | unifloral/mobrac.yaml | [[ArXiv]](https://arxiv.org/abs/2504.11453) |
新しいものが近日公開予定 👀
📊 評価
評価スクリプト (evaluation.py) は、論文で説明されているプロトコルを実装しており、UCBバンディットの性能を複数のポリシー評価にわたって解析します。
from evaluation import load_results_dataframe, bootstrap_bandit_trials
import jax.numpy as jnpLoad all results from the final_returns directory
df = load_results_dataframe("final_returns")Run bandit trials with bootstrapped confidence intervals
results = bootstrap_bandit_trials(
returns_array=jnp.array(policy_returns), # Shape: (num_policies, num_rollouts)
num_subsample=8, # Number of policies to subsample
num_repeats=1000, # Number of bandit trials
max_pulls=200, # Maximum pulls per trial
ucb_alpha=2.0, # UCB exploration coefficient
n_bootstraps=1000, # Bootstrap samples for confidence intervals
confidence=0.95 # Confidence level
)Access results
pulls = results["pulls"] # Number of pulls at each step
means = results["estimated_bests_mean"] # Mean score of estimated best policy
ci_low = results["estimated_bests_ci_low"] # Lower confidence bound
ci_high = results["estimated_bests_ci_high"] # Upper confidence bound📝 引用してください!
@misc{jackson2025clean,
title={A Clean Slate for Offline Reinforcement Learning},
author={Matthew Thomas Jackson and Uljad Berdica and Jarek Liesen and Shimon Whiteson and Jakob Nicolaus Foerster},
year={2025},
eprint={2504.11453},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2504.11453},
}--- Tranlated By Open Ai Tx | Last indexed: 2026-01-08 ---