diff --git a/README.md b/README.md index 7756db4..1ddb8e6 100644 --- a/README.md +++ b/README.md @@ -508,7 +508,127 @@ bash scripts/eval_plots.sh runs/exp_dreamer_shared --- -## 15. 補足メモ +## 15. 実験内容 + +### 15.1 実験の目的 + +マルチエージェント協調制御タスク(PettingZoo Multiwalker)において、**世界モデルベースの強化学習(Dreamer系 RSSM)がモデルフリー手法(PPO)に対してどの程度優位性を持つか**を定量的・定性的に検証する。 + +具体的には以下の問いに答える: + +1. 世界モデルによる潜在空間上での想像ロールアウトは、サンプル効率を改善するか? +2. 共有方策(3エージェントが同一パラメータを共有)の設定下で、世界モデルの恩恵は維持されるか? +3. 協調行動の品質(隊列維持、落下回避)にアプローチ間で差が生じるか? + +### 15.2 実験条件 + +| 項目 | Dreamer (A系) | PPO (B系) | +|------|--------------|-----------| +| 環境 | multiwalker_v9 (3エージェント) | 同左 | +| 総学習ステップ | 1,000,000 | 1,000,000 | +| 乱数シード | 42 | 42 | +| 共有方策 | あり (agent_id one-hot付与) | あり (agent_id one-hot付与) | +| 観測正規化 | あり (RunningNorm) | あり | +| 並列環境数 | 4 | 4 | +| エピソード長 | 500ステップ | 500ステップ | +| 割引率 γ | 0.99 | 0.99 | +| λ-return / GAE λ | 0.95 | 0.95 | +| 学習率 | 3.0e-4 (世界モデル/Actor/Critic共通) | 3.0e-4 | +| 勾配クリッピング | 100.0 | 0.5 (max_grad_norm) | + +**Dreamer固有の設定**: + +| パラメータ | 値 | 説明 | +|-----------|-----|------| +| RSSM 決定的状態 (h_t) | 200次元 | GRU隠れ状態 | +| RSSM 確率的状態 (z_t) | 32次元 | ガウス分布 | +| 想像ホライズン | 15ステップ | 潜在ロールアウト長 | +| KLバランス | 0.8 | Prior/Posterior のKL重み配分 | +| Free nats | 3.0 | KL損失の下限閾値 | +| リプレイバッファ容量 | 100,000 | シーケンスバッファ | +| バッチサイズ | 256 | シーケンスサンプル数 | +| シーケンス長 | 50 | 1サンプルあたりのステップ数 | +| 初期ランダム探索 | 2,000ステップ | リプレイバッファの初期充填 | +| エントロピー係数 | 1.0e-3 | 方策のエントロピー正則化 | + +**PPO固有の設定**: + +| パラメータ | 値 | 説明 | +|-----------|-----|------| +| ミニバッチサイズ | 4,096 | PPO更新あたりのサンプル数 | +| n_steps | 1,024 | ロールアウト長 | +| エポック数 | 10 | 1回の更新あたりのエポック | +| クリップ範囲 | 0.2 | PPOクリッピング | +| エントロピー係数 | 0.01 | 探索促進 | +| 価値関数係数 | 0.5 | 価値損失の重み | + +### 15.3 評価プロトコル + +* **評価頻度**: 50,000ステップごと +* **評価エピソード数**: 10エピソード(評価時は探索ノイズ無効) +* **チェックポイント保存**: 100,000ステップごとに `.pt` ファイルで保存 + +### 15.4 評価指標 + +**定量指標**: + +| 指標 | 説明 | +|------|------| +| エピソード総報酬 | 3エージェントのチーム報酬合計 | +| 成功率 | エピソード完走(500ステップ生存)の割合 | +| 隊列崩壊率 | エージェント間の距離が閾値を超えた割合 | +| 落下回数 | エージェントが転倒・落下した回数 | +| 学習曲線の収束速度 | 一定報酬に到達するまでのステップ数 | + +**定性指標(可視化)**: + +| 可視化手法 | 出力 | 目的 | +|-----------|------|------| +| エピソード動画 | MP4/GIF | 協調行動の質的評価 | +| Latent t-SNE | PNG | 潜在表現の構造とクラスタリング | +| 行動分布ヒストグラム | PNG | 方策の安定性・多様性 | +| 価値推移プロット | PNG | 価値推定の精度とバイアス | + +### 15.5 ネットワーク構成 + +``` +【Dreamer アーキテクチャ】 + +観測 (45次元) → [MLPエンコーダ 256→256] → 埋め込み + ↓ + ┌──────────────────────── RSSM ──────────────────────┐ + │ h_t = GRU(h_{t-1}, [z_{t-1}, embed_t]) │ + │ Prior: p(z_t | h_t) → μ, σ (32次元) │ + │ Posterior: q(z_t | h_t, e_t) → μ, σ (32次元) │ + └────────────────────────────────────────────────────┘ + [h_t, z_t] (232次元) + ↓ ↓ ↓ + 観測デコーダ 報酬ヘッド 終端ヘッド + ↓ ↓ + Actor (256→256) Value (256→256) + → 行動分布 → 状態価値 + +【PPO アーキテクチャ】 + +観測 (45次元) → [共有MLP] → Actor → 行動分布 + → Critic → 状態価値 +``` + +### 15.6 実験ワークフロー + +``` +1. Dreamer学習 → runs/exp_dreamer_shared/ +2. PPO学習 → runs/exp_ppo_shared/ +3. 各モデルを評価 → エピソード報酬・成功率を記録 +4. 動画生成 → runs/*/videos/ +5. Latent t-SNE → runs/*/latents/ → runs/*/figs/ +6. プロット生成 → runs/*/figs/ +7. 結果比較・集約 → runs/compare/ (CSV + グラフ) +``` + +--- + +## 16. 補足メモ * 行動空間が連続か離散かは`multiwalker_v9`の設定に依存する。連続ならActorHeadは正規分布、離散ならCategorical * t-SNEは`sklearn`を使用。対象は`[h_t, z_t]`連結ベクトル