迷路における経路探索としては,Q学習が有名ですが, 本デモは「価値ベース」と「方策ベース」を組み合わせた Actor-Critic 法を用いています. 学習がどのように進行するのかを視覚的に理解することに重きを置いて, TD誤差によって価値が更新され、それに応じて方策も変化していく様子をリアルタイムに可視化しています. あわせてアルゴリズムの簡単な説明と実行コード(javascript)を載せています.
クリック:壁切替|Shift+クリック:ゴール設定|Ctrl+クリック:スタート設定
壁の設定を変えた時は、学習初期化を押してから、学習開始してください
このデモは,強化学習の Actor-Critic アルゴリズムによる迷路探索の一例である. Actor-Critic 法は「方策(Actor)」と「状態価値(Critic)」を並行して学習する手法である.
状態 $s$ において行動 $a$ を選択し, 報酬 $r$ を得て次状態 $s'$ に遷移したとき, 状態価値関数 $V(s)$ は以下のTD誤差(Temporal Difference Error)$\delta$ を用いて更新される:
$$ \delta = r + \gamma V(s') - V(s) $$ここで $\gamma$ は割引率である.Critic はこの $\delta$ を用いて状態価値 $V(s)$ を更新する:
$$ V(s) \leftarrow V(s) + \alpha_v \cdot \delta $$一方,Actor は,実際に選択された行動 $a$ の確率を強化し,他の行動の確率を減衰させる. この迷路環境では「↑」「↓」「←」「→」「○(その場に留まる)」の5つの行動を取りうることから, 各行動をとる確率の配列として,
$$ \pi(s) = [\pi(a_1|s), \pi(a_2|s), \ldots, \pi(a_{|A|}|s)] $$が定義できるが, 実際に取った行動に対しては,$\delta$を加算する: $$ \pi(a|s) \leftarrow \pi(a|s) + \alpha_p \cdot \delta $$
また実際には取られなかった行動に対しては,$\delta$を減算する: $$ \pi(a'|s) \leftarrow \pi(a'|s) - \frac{\alpha_p \cdot \delta}{|\mathcal{A}| - 1}, \quad \text{for } a' \ne a $$
更新後,全体の確率が1になるように以下のように正規化を行う. $$ \sum_{a \in A} \pi(a|s) = 1 \quad \text{かつ} \quad \pi(a|s) \geq 0 $$ プログラム中では, この確率ベクトルを `policy[s]` として状態 $s$ ごとに保持しており, 実際の行動選択時には乱数と累積確率によりサンプルされる.
v[s]
— 状態 \( s \) の状態価値 \( V(s) \)policy[s][a]
— 状態 \( s \) における行動 \( a \) の確率 \( \pi(a|s) \)delta = r + gamma * v[sNext] - v[s]
— TD誤差 \( \delta \) の計算v[s] += alpha_v * delta
— 価値の更新
- 各セルの色は状態価値 \( V(s) \) に対応し、明るいほど価値が高いことを意味します。
- 各セル中央の記号(↑, ↓, ←, →)は現在の方策における最も確率の高い行動を表します。
- スタート状態のポリシー変化はチャートにリアルタイムで描画され、学習の進行と収束の様子が視覚的に観察できます。
ブラウザ上で単体動作するようになっています。index.htmlをダウンロードすればローカルな環境でも動きます