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 共通設計原則

  1. 公平なシード制御: np.random / random / torch.manual_seed を全エージェント共通で再シードし、ペア比較で同じ環境ダイナミクスを見るようにした。
  2. n_planning = 5, rollout_len = 1 で全エージェント統一 (連続版の MBPO-Lite / Neural Dyna-DQN / Dreamer-Lite すべて)。これにより「想像経験 / 実経験」の比率を 約 4.7 〜 4.9 倍 に揃えている。
  3. ε-greedy / SAC のハイパラもベースラインと世界モデル版で同一。世界モデルの追加 (self.model, self.imagine(), self.train_model()) 以外は完全に同じコードパス。
  4. 離散 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 使用時)