強化学習(DL:DQN)を可視化する迷路デモ

プログラミング

はじめに

ディープラーニング(DL)は、ニューラルネットワークを多層に重ねることで、
入力データから必要な特徴を自動的に抽出する 手法です。

画像であれば輪郭や形、文章であれば単語同士の関係性などを、人が手作業で設計せずとも学習できる点が最大の特徴です。

ニューラルネットワーク自体は、

入力 → 重み付き和 → 非線形変換 → 出力

という小さな計算を大量につないだ 「関数の集合体」 と考えると理解しやすいでしょう。
学習では、出力が望ましい方向に近づくように内部の重み(パラメータ)を少しずつ更新していきます。

今回は、この ディープラーニングを強化学習に組み込む とどうなるのかを、
できるだけ小さな題材で試してみます。

採用した手法は DQN(Deep Q-Network)
ざっくり言えば、

「次にどの行動を取るのが一番お得か?」
をニューラルネットワークに予測させながら学習する仕組み

です。

題材はおなじみの 迷路(GridWorld)
エージェント(プレイヤー役)が試行錯誤しながら、徐々にゴールへの近道を覚えていく様子を ブラウザ上でリアルタイムに観察 できます。


ソースコード(GitHub)

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

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


デモ動画(YouTube)

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

🎥 YouTube


デモで見られること

デモでは、次のような変化を視覚的に確認できます。

  • 迷路上でエージェントが動く(学習初期はかなり迷走)
  • 学習が進むにつれて、寄り道が減りゴールに向かいやすくなる
  • 画面上に次の学習指標がリアルタイムで更新される
  • episode:挑戦回数
  • epsilon:どれだけランダム行動するか
  • total_reward:累積報酬
  • success_rate:ゴール成功率

「数値の変化」と「行動の変化」が同時に見えるのがポイントです。


どのようなルールで学習させているか

学習環境は 10×10 の GridWorld(盤面) です。
迷路には以下の要素が含まれます。

  • スタート
  • ゴール
  • 罠(到達すると失敗)

エージェントは毎ステップ、次の 4 つの行動 から1つを選択します。

用語整理

  • 環境:迷路そのもの(ルールを持つ世界)
  • エージェント:迷路内を動く学習主体
  • ステップ:1 回の行動
  • エピソード:スタートから終了までの1まとまり

報酬設計

行動の結果に、次の報酬を与えています。

状態報酬
通常移動-0.01
壁に衝突-0.05
ゴール到達+1.0
罠に到達-1.0

常に小さなマイナスが入るため、
「できるだけ短い経路でゴールする」 行動が自然に選ばれるようになります。

1 エピソードは最大 200 ステップ
ゴール到達・罠到達・タイムアウトのいずれかで終了します。


学習(DQN)の流れをざっくり

DQNは、

状態 → 各行動の Q 値(価値)を出力するモデル

です。

このデモでは、エージェントの 周囲 5×5 マス を切り出した
観測パッチ をニューラルネットワークへの入力にしています。

  • 盤面の外側は「壁」として扱う
  • CNN(畳み込みニューラルネット)で画像のように処理

学習の流れ

  1. 観測パッチを CNN に入力し、4 行動分の Q 値を出力
  2. 行動選択
  • epsilon の確率でランダム行動
  • それ以外は Q 値最大の行動
  1. 行動を実行し、報酬を得る
  2. 経験をリプレイバッファに保存
  3. まとめて学習(経験再生)

epsilon は学習が進むにつれて徐々に小さくなり、
探索 → 活用 へと自然に移行します。


おわりに

このデモは、ディープラーニングを使って

「行動の良し悪し(価値)を学ぶ」

という強化学習の感覚を、視覚的に掴むための入口として作りました。

まずは動かしてみて、

  • epsilon が下がるにつれて行動が変わる
  • 無駄な動きが減っていく

その変化を眺めてみてください。

強化学習や DQN に興味がある方にとって、
「数式より先に挙動を理解する」 きっかけになれば嬉しいです。


コメント

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