← ゲームに戻る
原理解説
ネズミ vs チーズ 強化学習の仕組み
目次
1. 強化学習とは 2. 方策勾配法 3. ニューラルネットワーク構造 4. 報酬設計 5. 学習アルゴリズム 6. ハイパーパラメータの影響 7. 探索と活用のジレンマ
1. 強化学習とは

強化学習(Reinforcement Learning)は、機械学習の一分野です。 エージェント(行動する主体)が環境と相互作用しながら、 試行錯誤を通じて最適な行動方針を学習する手法です。

このゲームでは、ネズミがエージェント、 15x15のグリッド迷路が環境、 チーズを獲得することが目標です。

エージェント
(ネズミ)
行動 at
環境
(迷路)
状態 st+1 + 報酬 rt

強化学習の基本的な要素は以下の3つです:

エージェントの目標は、累積報酬を最大化する方策(行動の選び方)を学習することです。 正解を教えるのではなく、報酬というヒントだけを頼りに自ら最適解を見つけ出す点が、 教師あり学習との大きな違いです。

2. 方策勾配法

方策勾配法(Policy Gradient)は、ニューラルネットワークを使って 行動の確率分布を直接学習する手法です。

ネットワークは各状態に対して「上に行く確率は30%、右に行く確率は50%...」のように 行動確率を出力します。この確率分布が方策(Policy)と呼ばれます。

π(a|s) = P(行動=a | 状態=s)
方策 π は、状態 s のとき行動 a を取る確率

学習の基本的なアイデアは次の通りです:

これはREINFORCEアルゴリズムとも呼ばれ、 方策の勾配を以下の式で推定します:

∇J(θ) = E[ ∇log πθ(a|s) · Rt ]
方策パラメータ θ の勾配 = 対数確率の勾配 × 割引累積報酬

直感的には、「良い報酬が得られたエピソードで取った行動は、 もっと高い確率で選ばれるようにパラメータを更新する」ということです。

3. ニューラルネットワーク構造

このゲームで使用するニューラルネットワークは、 3層構造の全結合ネットワークです。

入力層
...
225
(15×15)
ReLU
隠れ層
...
50~500
(設定可能)
Softmax
出力層
4
(行動数)

入力の符号化(One-Hot):

15×15=225次元のベクトルを用意し、ネズミの位置とチーズの位置に対応するセルを 1 にセットします。それ以外はすべて 0 です。

入力ベクトル(225次元): インデックス = y × 15 + x [0, 0, 0, ..., 1, ..., 0, ..., 1, ..., 0, 0] ^ ^ ネズミの位置 チーズの位置

活性化関数:

Softmax: P(ai) = ezi / Σj ezj
各行動の確率 = その行動のスコアの指数 / 全スコアの指数の合計
4. 報酬設計

報酬の設計は強化学習で最も重要な要素のひとつです。 適切な報酬がなければ、エージェントは何を学べばよいか分かりません。

条件 報酬 説明
チーズ獲得 +1 ネズミがチーズのマスに到達した
チーズに接近 +1 マンハッタン距離が前ステップより縮んだ
チーズから離反 -1 マンハッタン距離が前ステップより増えた

距離ベースの報酬シェーピング:

チーズ獲得の報酬(+1)だけでは、ネズミが偶然チーズにたどり着くまで学習信号がなく、 学習が極めて遅くなります。そこで報酬シェーピングを導入し、 チーズに近づくだけでも正の報酬を与えます。

距離 = |xmouse - xcheese| + |ymouse - ycheese|
マンハッタン距離(上下左右の移動量の合計)

この仕組みにより、ネズミは最初からチーズの方向に向かう傾向を素早く学習できます。 ただし、壁の存在により最短距離が直線距離とは限らないため、 迷路の構造を理解する学習も必要になります。

5. 学習アルゴリズム

学習は以下のステップを繰り返すことで進行します:

順伝播
Forward Pass
行動選択
Action Selection
報酬取得
Get Reward
割引報酬計算
Discount Rewards
勾配計算
Compute Gradients
RMSProp更新
Update Weights

割引累積報酬:

各時刻 t での報酬は、将来の報酬も含めた割引累積報酬として計算されます。 割引率 γ(ガンマ)により、遠い未来の報酬ほど小さく評価されます。

Rt = rt + γ · rt+1 + γ2 · rt+2 + γ3 · rt+3 + ...

Rt = 時刻 t からの割引累積報酬
rt = 時刻 t の即時報酬, γ = 割引率 (0~1)

割引報酬の正規化:

計算された割引報酬は平均0、分散1に正規化されます。 これにより学習が安定し、報酬のスケールに依存しない勾配更新が可能になります。

Rtnorm = (Rt - μ) / σ
μ = 報酬の平均, σ = 報酬の標準偏差

RMSProp オプティマイザ:

重みの更新にはRMSPropを使用します。 これは勾配の二乗の移動平均を追跡し、パラメータごとに学習率を適応的に調整する手法です。

cache = decay · cache + (1 - decay) · g2
w = w + lr · g / (√cache + ε)

g = 勾配, decay = 減衰率(0.97), ε = 安定化定数(10-5)
6. ハイパーパラメータの影響

学習の挙動はハイパーパラメータの設定に大きく依存します。 各パラメータの役割と調整のコツを解説します。

学習率 (Learning Rate)
パラメータの更新幅を制御。大きいほど学習が速いが、 大きすぎると振動して発散する。
TIP: 0.001~0.005の範囲が安定。速度優先なら0.006まで
割引率 γ (Gamma)
未来の報酬をどれだけ重視するか。0.99なら100ステップ後の報酬も 約0.37倍で考慮される。
TIP: 0.95~0.99が一般的。迷路が大きいほど高い値が有効
探索率 ε (Epsilon)
ランダムに行動する確率。高いほど新しい経路を発見しやすいが、 学習済みの知識を活かせない。
TIP: 0.02~0.05が基本。序盤は高め、収束後は下げる
バッチサイズ (Batch Size)
何エピソード分の経験をまとめて1回の更新に使うか。 大きいほど安定するが学習速度は遅くなる。
TIP: 2~6で高速学習、8~10で安定重視
隠れ層サイズ (Hidden Size)
ニューラルネットの表現力。大きいほど複雑なパターンを 学習できるが、計算コストが増加する。
TIP: 200がバランス良好。50は限界テスト、400は高性能狙い
実行速度 (Speed)
1フレームあたりのステップ数。学習自体には影響しないが、 高速にすると学習過程を素早く観察できる。
TIP: 観察は10前後、高速学習は50~100
7. 探索と活用のジレンマ

強化学習における最も基本的かつ重要な問題が、 探索と活用のジレンマ(Exploration vs Exploitation Tradeoff)です。

探索 (Exploration)
まだ試していない行動を選ぶ
新しい経路を発見する可能性
短期的には報酬が低い
VS
活用 (Exploitation)
既に学習済みの最善手を選ぶ
安定した報酬を獲得できる
より良い方策を見逃す可能性

このゲームではε-greedy法を使ってこのバランスを取ります。 確率 ε でランダムな行動(探索)、確率 1-ε でネットワークが推薦する行動(活用)を選びます。

行動 = ランダム行動(確率 ε)or π(s) に従う行動(確率 1-ε)

なぜ探索が必要なのか:

学習初期のネットワークは未熟で、出力する確率分布は最適とは限りません。 もし常に現在の方策に従うだけなら、たまたま最初に発見した経路しか強化されず、 局所最適解に陥ってしまいます。

適度な探索を入れることで、ネットワークが未知の状態空間を経験し、 より良い方策を発見する機会が生まれます。ただし、探索率が高すぎると せっかく学習した知識がランダム行動で掻き乱されてしまいます。

ゲーム画面でεの値を変えながら、 学習の進み方がどう変わるか観察してみてください。

← ゲームに戻って試してみる