World Model
Series
世界モデル vs 強化学習 — 離散タブから連続状態空間への「世界モデル優位性」の崩れ方
Part 2
研究手法
World Model
Reinforcement Learning
Dyna-Q
MBPO
Sample Efficiency
2. 研究手法
2.1 比較対象 (5 + 6 エージェント)
離散実験 (8×8 GridWorld, 5 エージェント)
|
Q の表現 |
世界モデルの表現 |
| Q-learning |
表 |
なし |
| Dyna-Q (辞書) |
表 |
辞書 (丸暗記) |
| Neural Dyna-Q |
表 |
NN (近似) |
| DQN |
NN |
なし |
| Neural Dyna-DQN |
NN |
NN (近似) |
連続実験 (3 タスク × 2 エージェント)
| タスク |
ベースライン (Model-Free) |
世界モデル付き |
| CartPole-v1 (連続4D / 離散2) |
DQN (NN Q) |
Neural Dyna-DQN (NN Q + NN モデル) |
| MountainCar-v0 (連続2D / 離散3, スパース) |
DQN |
Neural Dyna-DQN |
| Pendulum-v1 (連続3D / 連続1D) |
SAC |
MBPO-Lite (SAC + NN モデル) |
2.2 共通設計原則
- 公平なシード制御:
np.random / random / torch.manual_seed を全エージェント共通で再シードし、ペア比較で同じ環境ダイナミクスを見るようにした。
n_planning = 5, rollout_len = 1 で全エージェント統一 (連続版の MBPO-Lite / Neural Dyna-DQN / Dreamer-Lite すべて)。これにより「想像経験 / 実経験」の比率を 約 4.7 〜 4.9 倍 に揃えている。
- ε-greedy / SAC のハイパラもベースラインと世界モデル版で同一。世界モデルの追加 (
self.model, self.imagine(), self.train_model()) 以外は完全に同じコードパス。
- 離散 GridWorld には NN ベースのエージェントも CPU 固定 (8×8 では GPU の恩恵がないため)。連続版は GPU 自動検出。
2.3 NN 世界モデルの形
タスクの連続性に応じて世界モデルの形が変わる:
| タスク |
世界モデル |
損失 |
| 離散 GridWorld (Neural Dyna-Q/DQN) |
MLP (s_oh, a_oh) → (s'_logits, r, done) |
CE + MSE + BCE |
| CartPole / MountainCar (Neural Dyna-DQN) |
MLP (s, a_oh) → (Δs, r, done) |
MSE + MSE + BCE |
| Pendulum (MBPO-Lite) |
MLP (s, a) → (Δs, r) |
MSE + MSE |
連続版は 絶対状態ではなく差分 Δs を予測するように設計し、状態のスケール依存性を抑制している。
2.4 評価指標
- 学習曲線: エピソードあたり累積報酬の平均 ± 標準偏差 (シード方向)
- サンプル効率: 累積実環境ステップ数 vs 累積報酬 (補間)
- 想像経験量:
imagined_steps / real_steps の比率
- しきい値到達: 5 エピソード移動平均が指定報酬を初めて越えたエピソード番号
- NN 損失曲線: Q/Critic ネットと世界モデルそれぞれの 50 ステップ移動平均
2.5 実験環境
- 言語: Python 3.x
- 主要ライブラリ: numpy, torch, matplotlib, gymnasium (離散版は依存なし)
- シード数: 離散 5 シード、連続 3 シード
- エピソード数: GridWorld 100ep / CartPole 200ep / MountainCar 300ep / Pendulum 100ep
- デバイス: 離散実験は CPU 固定、連続実験は GPU 自動検出
- 実行時間: 離散 < 1 分、連続全タスク合計で数分〜十数分 (GPU 使用時)