はじめに
ディープラーニング(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(畳み込みニューラルネット)で画像のように処理
学習の流れ
- 観測パッチを CNN に入力し、4 行動分の Q 値を出力
- 行動選択
epsilonの確率でランダム行動- それ以外は Q 値最大の行動
- 行動を実行し、報酬を得る
- 経験をリプレイバッファに保存
- まとめて学習(経験再生)
epsilon は学習が進むにつれて徐々に小さくなり、
探索 → 活用 へと自然に移行します。
おわりに
このデモは、ディープラーニングを使って
「行動の良し悪し(価値)を学ぶ」
という強化学習の感覚を、視覚的に掴むための入口として作りました。
まずは動かしてみて、
epsilonが下がるにつれて行動が変わる- 無駄な動きが減っていく
その変化を眺めてみてください。
強化学習や DQN に興味がある方にとって、
「数式より先に挙動を理解する」 きっかけになれば嬉しいです。


コメント