強化学習(World Model + MPC)迷路デモ

プログラミング

はじめに

前回は「Transformer が観測履歴をまとめて記憶する DQN」で、記憶を頼りに「次の一手」を決める話でした。今回はその進化版として、World Model + Model Predictive Control (MPC) を重ねて「記憶+先読み」にします。

ざっくりしたイメージ:

  • Transformer 記憶 … 過去の景色や曲がり角を覚えておく「記憶ノート」
  • World Model … 「この曲がり角はT字路っぽい」「この細い路地は行き止まりが多い」みたいな ぼんやり地図 を頭の中に描く力
  • MPC … そのぼんやり地図を使って 6手先まで最大8通り シミュレーションし、評価して「いちばん良さそうなルートの最初の一歩」だけ踏み出す

人間で言えば、「あの店に行きたいとき、長年の勘で『この分岐は行き止まり多い』『こっちは明るい商店街で店ありそう』『この路地は暗くて店はなさそう』」と感じながら、数歩先まで頭の中で歩いてみてから実際に歩き出す感じです。


ソースコード(GitHub)

実装全体はこちらで公開しています。

👉 GitHub
https://github.com/daiki3027/app-ai-grid-world/tree/grid-world-dl-wm-mpc


デモ動画(YouTube)

実際の動作や学習の進み方はこちらの動画で確認できます。

🎥 YouTube


何が増えたか(進化ポイント)

  • 共通の Transformer 記憶
    DQN もWorld Modelも同じ HistoryEncoder を使い、過去の観測・行動・報酬をまとめた「記憶ベクトル」を共有します。
    → 「さっき曲がった」「ここは細い路地だった」を覚えておく。
  • World Model(ぼんやり地図)
    「記憶 + ある行動」から、次の 5×5 観測パッチ / 報酬 / 終了確率を予測。
    → 「ここはT字路っぽいから右は行き止まり多そう」「この先は罠かも」という直感を内部で学習。
  • MPC で先読み(6手先・8サンプル)
    World Modelで 6手先8通り シミュレーションし、累積報酬が最大のルートの「最初の1歩」を実行(planner_mode=”mpc”)。
    → 「この店に行くなら、ここを曲がって…」と数歩先まで考えてから1歩踏み出す。
  • Transformer 記憶ベースの行動生成
    MPC が試す各ステップの行動候補は、Transformer 記憶から得た Q 値を softmax でサンプリング(ランダム一様の枝は使わない)。
    → 勘に基づいた「それっぽい道」を優先しつつ、少しゆらぎを残す。
  • 自動フォールバック
    World Modelのデータが足りない間は DQN に自動フォールバックし、十分学習されたら MPC が発動。
    → 直感(WM)が育つまでは手堅く、育ったら先読みを活用。

どんなデモか

  • planner_mode(要求)と planner_used(実際に使われたプランナー)が見える
    → 今「記憶だけで動いている」のか、「記憶+先読み(MPC)」なのかが分かる
  • wm_last_loss / wm_avg_recent_loss / wm_samples_needed / wm_buffer_size
    → World Modelがどれくらい温まったか、あと何サンプル必要かが見える
  • epsilon, episode, step, success_rate, avg_episode_reward
    → 従来指標もそのまま確認できる

迷路モードは WebSocket メッセージで切り替え可能:

  • {"type": "maze_mode", "value": "memory"}: 記憶がないと迷いやすいループ/T 字路
  • {"type": "maze_mode", "value": true}: ランダム迷路(デフォルト)
  • {"type": "maze_mode", "value": false}: 固定迷路

仕組みのざっくり解説

1) 観測履歴を記憶化(Transformer)
直近 16 ステップの「5×5観測パッチ + 行動 + 報酬」をトークン化し、Transformer で統合。
→ 「さっき曲がった」「ここで罠に近づいた」を覚えておく。

2) DQN(記憶付き)
記憶から 4 行動の Q 値を出し、ε-greedyで行動。
→ 記憶を頼りに「次の一手」を決める。

3) World Model学習(ぼんやり地図を育てる)
記憶と「候補行動」から、次のパッチ/報酬/終了を予測するネットをオンライン学習(min_train_size=200 から学習開始)。
→ 「この先は行き止まりっぽい」「ここは危険ゾーンかも」という直感を作る。

4) MPC(先読み計画)

  • World Modelが温まったら実行。温まっていなければ DQN。
  • 6手先・8サンプル の行動列をWorld Modelでシミュレートし、累積報酬が最大のルートの「最初の1歩」を採用。
  • 各ステップの候補行動は、Transformer 記憶からの Q 値を softmax でサンプリング。
    → 数歩先まで頭の中で歩いてみて、一番マシなルートの最初の一歩を踏む。

おわりに

前回は「記憶だけで次の一手を選ぶ」段階でしたが、今回は 記憶+ぼんやり地図+先読み を組み合わせて、「あの店へ行くならこのルートが良さそう」と考えながら歩くスタイルにしています。

  • 記憶共有: Transformer 記憶を DQN とWorld Modelが共用
  • 先読み設定: horizon=6, num_samples=8(軽量に先読み)
  • 自動切替: World Modelが育つまでは DQN、育ったら MPC

人間が勘と経験で「この道は危ない」「あっちにお店がありそう」と感じるのに近い形で、迷路を「覚えて」「先読み」しながら進む様子をブラウザで眺めてみてください。


コメント

タイトルとURLをコピーしました