Q学習シミュレーター 戻る
機械学習

Q学習シミュレーター — 強化学習グリッドワールド

強化学習の基礎であるQ学習を、迷路のようなグリッドワールドで動かして体験するツールです。学習率・割引率・探索率を変えると、エージェントが報酬だけを頼りにゴールへの最適経路を学んでいく過程と、価値関数の収束がリアルタイムで分かります。

パラメータ設定
グリッドワールド
学習させる環境の種類
学習率 α
新しい経験を Q 値に反映する強さ
割引率 γ
将来の報酬をどれだけ重視するか
探索率 ε
ε-greedy でランダム行動をとる確率
学習エピソード数
スタートからゴール/落とし穴までを1エピソードとして反復
計算結果
学習エピソード数
最適経路の歩数
開始セルの価値 V(start)
平均報酬(直近50)
ゴール到達率(直近50)
学習状態
グリッドワールド — 価値ヒートマップと貪欲方策

各セルの色は学習した価値 V(s)(暗い青→明るい青ほど高価値)。矢印は貪欲方策、緑=ゴール、赤=落とし穴、灰=壁。黄色の点が貪欲方策でゴールへ歩くエージェントです。

学習曲線 — エピソードごとの総報酬
開始セルの価値 V(start) の収束
理論・主要公式

$$Q(s,a)\leftarrow Q(s,a)+\alpha\Big[\,r+\gamma\max_{a'}Q(s',a')-Q(s,a)\,\Big]$$

Q学習の更新則。s:現在の状態、a:とった行動、r:得た報酬、s':次の状態。角括弧の中身 $r+\gamma\max_{a'}Q(s',a')-Q(s,a)$ はTD誤差(時間差分誤差)と呼ばれ、現在の予測と「観測した報酬+次状態の最良予測」とのズレを表します。

$$\pi(s)=\arg\max_{a}Q(s,a), \qquad V(s)=\max_{a}Q(s,a)$$

学習後の貪欲方策 π と状態価値 V。各状態で Q が最大の行動を選び続けるのが最適方策、その最大 Q 値がその状態の価値です。

$$a_t=\begin{cases}\text{ランダムな行動} & \text{確率 }\varepsilon\\[2pt]\arg\max_{a}Q(s_t,a) & \text{確率 }1-\varepsilon\end{cases}$$

ε-greedy による行動選択。確率 ε で探索、確率 1−ε で活用を行い、両者のバランスを ε が決めます。

Q学習とは

🙋
「強化学習」って、よくゲームAIとかロボットの話で聞くんですけど、結局なにを学習してるんですか?
🎓
ざっくり言うと「どう動けば一番得をするか」を、試行錯誤だけで学ぶ仕組みだよ。このシミュレーターのグリッドワールドだと、エージェント(黄色い点)はスタートから動き出して、ゴールに着けば報酬 +1、落とし穴に落ちると −1。さらに1マス動くごとに −0.04 のちょっとした「歩きコスト」がかかる。最初はマップも知らないし、ルールも教わってない。ただ動いて、報酬を受け取って、それを手がかりに賢くなっていくんだ。
🙋
マップを知らないのに、どうやって正解の道を見つけるんですか?
🎓
そこでQ学習の出番だ。Q学習は「この状態でこの行動をとると、その後どれくらい得しそうか」という数字 Q(s,a) を、状態と行動の組ごとに表で持つ。1歩動くたびに、上の理論カードにある更新式で Q をちょっとずつ直していく。カギは max のところ。「次のマスで取りうる一番いい行動の価値」を今の見積もりに混ぜ込むから、ゴールの +1 がじわじわ手前のマスへ伝わっていく。最終的にゴール近くのマスから順に価値が高くなって、価値の高い方へたどればゴールに着く、というわけ。
🙋
なるほど!左のスライダーの「割引率 γ」って何ですか?0.9 が標準みたいですけど。
🎓
γ は「将来の報酬をどれだけ大事にするか」のつまみだよ。1歩先の価値を γ 倍して引き継ぐから、γ=0.9 ならゴールの +1 は7歩離れると 0.9⁷≒0.48 くらいまで目減りする。γ を小さくすると遠い報酬がほとんど見えなくなって、目先のことしか考えないエージェントになる。逆に1に近づけると遠いゴールまで見据えるけど、価値が伝わるのに時間がかかる。「開始セルの価値 V(start)」の収束グラフを見ると、γ を変えたとき最終的な価値の高さが変わるのがわかるよ。
🙋
「探索率 ε」を 0 にしてみたら、なんだか経路がいまいちな気がします。ランダムに動かないほうが効率いい気がするのに…。
🎓
それが強化学習で一番有名なジレンマ、「探索と活用のトレードオフ」だ。ε=0 だと、エージェントは常に今わかってる最善手しか選ばない。すると序盤にたまたま通った道ばかり強化して、本当はもっと良い近道があっても一度も試さず、そこそこの方策で固まってしまう。かといって ε=1 で完全ランダムだと、せっかく学んだ知識を全然使えない。だから実務では最初は ε を大きめにしてよく探索し、学習が進むにつれ少しずつ ε を下げていく「ε 減衰」がよく使われるんだ。
🙋
Q学習って、迷路以外だとどんなところで使われてるんですか?
🎓
考え方はいろんな所で生きてる。エレベーターの配車、信号制御、在庫の発注タイミング、ゲームの対戦AIなんかが典型例だ。状態数が爆発的に多い問題(囲碁やビデオゲームの画面)では、Q を表で持てないからニューラルネットで近似する。それが2015年に話題になった DQN(Deep Q-Network)で、まさにこのテーブル型Q学習が出発点になっている。だからこのグリッドの小さな例は、最先端の手法を理解するための一番大事な土台なんだよ。

よくある質問

Q学習は強化学習の代表的なアルゴリズムで、エージェントが環境のモデルを一切持たずに、行動して得た報酬だけから「ある状態でどの行動が良いか」を表す行動価値関数 Q(s,a) を学習します。各ステップで Q(s,a) ← Q(s,a) + α[r + γ·max Q(s',a') − Q(s,a)] という更新を繰り返すだけで、十分な試行の後には最適な行動価値に収束することが理論的に保証されています。テーブル型では状態と行動の組ごとに Q 値を表で持ちます。
学習率 α は新しい経験をどれだけ強く Q 値に反映するかを決めます。大きいほど学習は速いですが値が振動しやすく、小さいと安定する代わりに遅くなります。割引率 γ は将来の報酬をどれだけ重視するかを決め、γ が 1 に近いほど遠い先のゴール報酬まで見据えた行動を学びます。探索率 ε は ε-greedy 法でランダムな行動をとる確率で、探索(新しい経路を試す)と活用(今わかっている最善手を使う)のバランスを取ります。
ε=0 では純粋な貪欲方策となり、エージェントは常に現在の Q 値が最大の行動だけを選びます。Q 値の初期値がすべて等しい場合、序盤に偶然たどり着いた経路ばかりを強化し、もっと良い経路を試さないまま局所最適な方策に固定されることがあります。これが「探索不足」の問題です。逆に ε=1 では完全にランダムに動くため学習した知識を活用できず、ゴール到達率が大きく下がります。実務では学習初期は ε を大きく、徐々に小さくする ε 減衰がよく使われます。
どちらも価値ベースの時間差分学習ですが、更新式の「次状態の価値」の取り方が異なります。Q学習は更新に max Q(s',a')、つまり次状態で取りうる最善の行動の価値を使うため、実際にどう行動するかと切り離して最適方策を学ぶ「方策オフ型(off-policy)」です。SARSA は実際に選んだ次の行動 a' の Q(s',a') を使う「方策オン型(on-policy)」で、探索の危険まで織り込んだやや保守的な方策を学びます。崖沿いの経路などでは両者の挙動がはっきり分かれます。

実世界での応用

ロボット制御と経路計画:移動ロボットが障害物を避けて目的地へ向かう経路の学習は、まさにこのグリッドワールドの拡張です。実機では状態が連続値(位置・速度・角度)になるため、Q をそのまま表で持てず関数近似と組み合わせますが、「報酬を頼りに方策を学ぶ」という骨格は変わりません。倉庫の自律搬送車や掃除ロボットの行動最適化に応用されています。

ゲームAIとDQN:テーブル型Q学習を出発点に、Q 関数を深層ニューラルネットで近似したのが DQN(Deep Q-Network)です。2015年にAtariのビデオゲームを画面ピクセルだけから人間並みにプレイして注目されました。状態空間が巨大でも、Q学習の更新則(TD誤差で価値を直す)はそのまま使われており、本シミュレーターはその最小モデルです。

制御・スケジューリング:エレベーター群の配車、信号機のタイミング制御、データセンターの空調最適化、在庫の発注量決定など、「現在の状態で最善の行動を逐次選ぶ」問題は強化学習の得意分野です。明示的な数式モデルを作りにくい複雑な系でも、シミュレータ上で試行錯誤させて方策を獲得できます。

強化学習の教育・アルゴリズム検証:グリッドワールドは強化学習の「ベンチマークの定番」です。新しいアルゴリズムを提案するとき、まず小さなグリッドで学習曲線が立ち上がるか、価値関数が正しく収束するかを確認します。本ツールのように学習曲線と V(start) 収束を可視化することは、ハイパーパラメータ(α・γ・ε)の感覚をつかむ最初のステップになります。

よくある誤解と注意点

まず多い誤解が、「学習率 α は大きいほど速く賢くなる」というものです。α は確かに学習速度を上げますが、1 に近づけると毎ステップで Q 値を経験値で丸ごと置き換えるような更新になり、ノイズの多い報酬や ε による偶然のばらつきで値が大きく振動します。学習曲線がいつまでもギザギザのまま安定しないときは、α を下げると落ち着くことが多い。理論上、収束保証を得るには学習が進むにつれ α を徐々に小さくする必要があります。「速さ」と「安定性」はトレードオフだと理解してください。

次に、「割引率 γ は 1 にすれば一番先を見通せて得」という思い込み。確かに γ を大きくすると遠いゴールまで価値が伝わりますが、エピソードが終わらない(ゴールにも穴にも着かない)タスクで γ=1 にすると、価値が発散して計算が破綻します。本ツールのように各エピソードにステップ上限を設け、ゴールで終了する設計でも、γ を 1 ちょうどにすると価値の伝播が遅く、収束に膨大なエピソードが必要になります。多くの実装で γ=0.9〜0.99 が使われるのはこのためです。

最後に、「学習が終われば探索 ε はもう不要」という考え方にも注意が必要です。環境が固定なら学習後は ε=0 の貪欲方策で問題ありません。しかし現実の環境は変化します(経路がふさがれる、報酬構造が変わる)。ε を完全に 0 にしてしまうと、エージェントは環境の変化に気づけず、古い最適方策に固執します。また、報酬がまばらな(ゴール以外ほぼ 0 の)問題では、探索が足りないとゴールに一度もたどり着けず、Q 値が一切育たないことがあります。ε はゼロにする前に、本当に探索しなくてよい状況かを必ず見極めてください。

使い方ガイド

  1. 学習率(α)を0.1~0.9の範囲で設定:αが大きいほど直近の経験を重視し、小さいほど過去の学習を保持します
  2. 割引率(γ)を0.5~0.99で調整:γ=0.99は長期報酬を重視し、γ=0.5は即座の報酬を優先します
  3. 探索率(ε)を0.01~0.3で指定:εが高いと未探索セルを試し、低いと学習済みの最適行動を選択します
  4. エピソード数を100~5000で入力:学習反復回数が多いほどQ値の収束精度が向上します
  5. 「シミュレーション実行」ボタンをクリックしグリッドワールドでの学習を開始します

具体的な計算例

5×5グリッドワールドでα=0.3、γ=0.95、ε=0.1、エピソード数3000の設定で学習した場合:1000エピソード時点で開始セル(0,0)の価値V(start)≈8.2、最適経路の歩数が5.8ステップまで短縮、ゴール到達率が直近50エピソードで94%に達します。α=0.8に増加させると収束が早まり500エピソード時点でV(start)≈7.9となりますが、局所最適解に陥るリスクが生じます

実務での注意点