Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 121 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]`連結ベクトル
Expand Down