
プランニング問題
環境のダイナミクス(状態遷移確率や報酬関数)が既知の場合の逐次的意思決定問題。
価値反復法 ベルマン最適作用素を繰り返し用いて、最適価値関数を直接求めます。
\[ (B_{\*}v)(s) = \max_a \{g(s,a) + \gamma \sum_{s'} p_T(s'|s,a)v(s')\} \] \[ V^{\*} = \lim_{k \to \infty} (B_{*}^{k}V)(s) \]方策反復法 「方策評価」と「方策改善」の2ステップを繰り返し、最適方策を求めます。
- 方策評価: 現在の方策 \(\pi\) の下での価値関数 \(V^\pi\) を、ベルマン期待作用素を用いて計算します。 \( (B_{\pi}v)(s) = \sum_a \pi(a|s) (g(s,a) + \gamma \sum_{s'} p_T(s'|s,a)v(s')) \) \( V^{\pi} = \lim_{k \to \infty} (B_{\pi}^{k}V)(s) \)
- 方策改善: 計算した価値関数 \(V^\pi\) を使って、より良い方策を貪欲に決定します。 \( \pi(s) = \arg\max_a \{g(s,a) + \gamma \sum_{s'} p_T(s'|s,a)V^\pi(s')\} \)
強化学習
前節のプランニング問題は、遷移確率 \(p_T(s'|s,a)\) と報酬関数 \(g(s,a)\) という環境モデルが既知であることを前提とし、ベルマン作用素を繰り返し適用する動的計画法で最適方策を求めました。しかし実世界の多くの問題(ロボット制御やゲームなど)では、この環境モデルは未知です。強化学習は、環境のダイナミクスが未知の場合の逐次的意思決定問題であり、エージェントは環境と実際に相互作用して得た経験(状態・行動・報酬の系列)だけから、モデルを経由せずに価値関数や方策を直接学習します。
環境モデルなしにどうやって価値を見積もるのか、その方法は大きく2つに分かれます。
モンテカルロ法とTD学習:モデルなしで価値を推定する2つの方法
状態価値関数の定義 \(V^\pi(s) = \mathbb{E}_\pi[G_t \mid S_t=s]\) (ここで \(G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \dots\) は時刻 \(t\) 以降の割引累積報酬、収益)に立ち返ると、これを近似する最も素朴な方法は、実際にエピソードを最後まで実行して得られた収益 \(G_t\) をそのまま価値の推定値として使うことです。これがモンテカルロ法 (Monte Carlo method) です。
\[ \hat{V}(s_t) \leftarrow \hat{V}(s_t) + \alpha_t \big(G_t - \hat{V}(s_t)\big) \]\(G_t\) は環境から実際に観測された報酬のみから計算されるため、\(\hat V(s_t)\) の更新に真の価値関数以外のいかなる推定値も混ざらない、不偏 (unbiased) な手法です。しかし2つの制約があります。第一に、\(G_t\) を計算するにはエピソードが終了するまで待つ必要があり、エピソードが長い(または終了しない継続タスクの)問題では更新頻度が極端に低くなります。第二に、\(G_t\) は将来の(確率的な)報酬と行動選択をすべて含む確率変数の実現値であるため、分散が大きくなりがちです。
一方、ベルマン期待方程式(プランニング問題の節参照)を状態価値関数について書き下すと
\[ V^\pi(s) = \mathbb{E}_\pi\big[r_t + \gamma V^\pi(s_{t+1}) \mid s_t = s\big] \tag{1} \]が成り立ちます。真の \(V^\pi\) さえ分かればこの等式は厳密に成立しますが、学習途中の推定値 \(\hat V\) は一般にこの等式を満たしません。そこで、式(1)の右辺の期待値を1サンプルの実現値 \(r_t + \gamma \hat V(s_{t+1})\) で置き換えたものを「暫定的な正解(TDターゲット)」とみなし、現在の推定値 \(\hat V(s_t)\) とのズレ
\[ \delta_t = r_t + \gamma \hat{V}(s_{t+1}) - \hat{V}(s_t) \]だけ \(\hat V(s_t)\) を修正するのがTD学習 (Temporal-Difference learning)、具体的にはTD(0)です。
\[ \hat{V}(s_t) \leftarrow \hat{V}(s_t) + \alpha_t \delta_t \]TD誤差 \(\delta_t\) は、式(1)のベルマン期待方程式が学習途中の \(\hat V\) に対してどれだけ破れているかを表す残差に他なりません。\(\delta_t\) がすべての状態で恒常的に0になれば、\(\hat V\) は式(1)を満たす、すなわちベルマン期待方程式の不動点である \(V^\pi\) に収束したことになります。また、TDターゲット \(r_t + \gamma \hat V(s_{t+1})\) は、まだ学習途中で不正確かもしれない \(\hat V(s_{t+1})\) 自身を使って将来の価値を見積もる**ブートストラップ(自己参照)**になっている点が、モンテカルロ法との本質的な違いです。
ブートストラップにより、TD学習は真の \(V^\pi\) が未知でも1ステップごとに(エピソード終了を待たずに)更新でき、かつ更新に使う情報が1ステップ分の報酬のみなので、モンテカルロ法よりも分散が小さくなります。その代わり、\(\hat V(s_{t+1})\) 自体が正確でない学習初期は、TDターゲットに系統誤差(バイアス)が乗ります。つまりモンテカルロ法とTD学習は「不偏だが高分散・低頻度更新」対「バイアスありだが低分散・高頻度更新(オンライン更新可能)」というトレードオフの関係にあります。この違いを具体的な数値で確認する実験は、後述のCliff Walking実験で行います。
価値ベースの手法
価値関数(状態価値関数Vや行動価値関数Q)を推定し、それに基づいて暗黙的に方策を決定します。上で導出したTD(0)を、状態価値関数ではなく行動価値関数 \(Q(s,a)\) に適用したものがQ学習とSARSAです。
Q学習 (Q-Learning) 行動価値関数についても、ベルマン最適方程式
\[ Q^*(s,a) = \mathbb{E}\big[r_t + \gamma \max_{a'} Q^*(s_{t+1}, a') \mid s_t=s, a_t=a\big] \tag{2} \]が成り立ちます。式(2)の右辺の期待値を1サンプル \(r_t + \gamma \max_{a'} \hat Q(s_{t+1},a')\) で置き換え、これをTDターゲットとして \(\hat Q(s_t,a_t)\) を修正するのがQ学習です。
\[ \delta_t = r_t + \gamma \max_{a'} \hat{Q}(s_{t+1}, a') - \hat{Q}(s_t, a_t) \] \[ \hat{Q}(s_t, a_t) \leftarrow \hat{Q}(s_t, a_t) + \alpha_t \delta_t \]式(2)は最適方策ではなく最適価値関数 \(Q^*\) そのものについての恒等式であり、右辺の \(\max_{a'}\) は「実際にエージェントが次にどの行動を取ったか」に一切依存しません。つまりQ学習のTDターゲットは、遷移 \((s_t,a_t,r_t,s_{t+1})\) さえ観測できれば、それを生成した行動選択方策(探索のためのε-greedy方策など)が何であっても計算できます。これがQ学習が**方策オフ型 (Off-Policy)**と呼ばれる理由であり、Q学習は探索方策とは独立に \(Q^*\) そのものへ収束します(すべての状態行動対が十分な頻度で訪問され、学習率 \(\alpha_t\) が適切に減衰する場合)。
SARSA 一方、方策 \(\pi\) を固定したときの行動価値関数 \(Q^\pi\) が満たすベルマン期待方程式は
\[ Q^\pi(s,a) = \mathbb{E}_\pi\big[r_t + \gamma Q^\pi(s_{t+1}, a_{t+1}) \mid s_t=s, a_t=a\big] \tag{3} \]です。式(3)右辺の \(a_{t+1}\) は方策 \(\pi\) (例えばε-greedy方策)に従って実際に選ばれた行動そのものであり、右辺の期待値をこの1サンプル \(r_t + \gamma \hat Q(s_{t+1},a_{t+1})\) で置き換えると、
\[ \delta_t = r_t + \gamma \hat{Q}(s_{t+1}, a_{t+1}) - \hat{Q}(s_t, a_t) \] \[ \hat{Q}(s_t, a_t) \leftarrow \hat{Q}(s_t, a_t) + \alpha_t \delta_t \]が得られます。これがSARSA(状態 \(s_t\) ・行動 \(a_t\) ・報酬 \(r_t\) ・次状態 \(s_{t+1}\) ・次行動 \(a_{t+1}\) の頭文字)です。式(3)は方策 \(\pi\) 自身についての恒等式なので、SARSAが学習するのは「今まさに実行している方策 \(\pi\) 」の行動価値関数であり、これが**方策オン型 (On-Policy)**と呼ばれる理由です。
Q学習とSARSAの更新式は \(\max_{a'}\hat Q(s_{t+1},a')\) か \(\hat Q(s_{t+1},a_{t+1})\) かの1点しか違いませんが、探索を伴う方策(\(\varepsilon>0\) のε-greedy方策など)の下では収束先が異なりえます。Q学習は探索方策に関係なく最適価値関数 \(Q^*\) (=探索を一切行わない貪欲方策の価値)に収束するのに対し、SARSAは探索そのものを含んだ方策 \(\pi_\varepsilon\) の価値関数 \(Q^{\pi_\varepsilon}\) に収束します。つまりSARSAが学習する「良い行動」には、ε-greedyのランダムな探索によって稀に大失敗するリスクまで織り込まれます。この違いを、有名なCliff Walking問題で数値的に検証します。
Q学習とSARSAの違いを検証する:Cliff Walking
環境設定: 4行12列のグリッド。エージェントは左下 \((3,0)\) からスタートし、右下 \((3,11)\) のゴールを目指します。最下段の \((3,1)\) から \((3,10)\) は「崖」で、足を踏み入れると報酬 \(-100\) を得てスタート地点に戻されます(エピソードは終了しません)。それ以外の遷移では毎ステップ報酬 \(-1\) 。割引率 \(\gamma=1\) 、学習率 \(\alpha=0.5\) 、探索率は \(\varepsilon=0.1\) のε-greedy方策で固定(減衰させない)としました。
import numpy as np
n_rows, n_cols = 4, 12
start, goal = (3, 0), (3, 11)
cliff = [(3, c) for c in range(1, 11)]
def step(state, action): # 0:上 1:右 2:下 3:左
r, c = state
if action == 0: r = max(r - 1, 0)
elif action == 1: c = min(c + 1, n_cols - 1)
elif action == 2: r = min(r + 1, n_rows - 1)
elif action == 3: c = max(c - 1, 0)
ns = (r, c)
if ns in cliff:
return start, -100, False # 崖に落ちてスタートへ(エピソードは継続)
if ns == goal:
return ns, -1, True # ゴール到達でエピソード終了
return ns, -1, False
# Q学習: 次状態での max_a' Q(s',a') をターゲットに使う(off-policy)
Q[s][a] += alpha * (r + gamma * Q[ns].max() - Q[s][a])
# SARSA: 次状態で実際に選ばれた行動 a' の Q(s',a') をターゲットに使う(on-policy)
Q[s][a] += alpha * (r + gamma * Q[ns][na] - Q[s][a])
500エピソードの学習を100回独立に繰り返し平均を取ったところ、次の結果が得られました。
- 学習後の貪欲方策(\(\varepsilon=0\) でテスト): Q学習は崖のすぐ上の行(2行目)を右に11マス進んでからゴールへ降りる13ステップ・報酬 \(-13\) の最短経路を学習しました。一方SARSAは最上段(0行目)まで上がってから横断する17ステップ・報酬 \(-17\) の遠回りだが崖から離れた経路を学習しました。
- 学習中(\(\varepsilon=0.1\) で探索しながら)のオンライン平均報酬: 学習後半(401〜500エピソード目)の平均は、Q学習が -49.89、SARSAが -26.09 でした(学習序盤の1〜100エピソード目はそれぞれ -80.52 と -71.45)。
Q学習が学習する貪欲方策自体は最短経路(真に最適)であるにもかかわらず、学習中の実測平均報酬はSARSAより大幅に悪化しています。理由は式(2)と式(3)の違いそのものです。Q学習のTDターゲットは常に \(\max_{a'}\) を使うため、崖のすぐ上を歩く「攻めた」経路の価値が高く評価されますが、実際にデータを集めているのはε-greedy方策なので、確率 \(\varepsilon\) でランダムな行動を取り、崖際を歩いている最中に確率的に崖へ転落して \(-100\) を受け取ってしまいます。一方SARSAのTDターゲットは実際に選ばれる次行動 \(a_{t+1}\) (つまりε-greedyのランダム性を含む)を使うため、崖際にいることの「転落リスク」がそのままQ値に反映され、崖から離れた安全な経路の方が高く評価されるようになります。これは、探索を行う実環境での学習曲線にも明確に表れています。

上図の学習曲線が示す通り、SARSAはQ学習よりも一貫して高い(絶対値の小さい)オンライン報酬を得ています。両者ともに序盤で急激に改善し、以後は探索ノイズに応じた変動を続けますが、SARSAの収束レベルはQ学習よりおよそ20〜25ポイント高い水準で安定しています。
さらに、同じ環境でモンテカルロ制御(first-visit MC control、\(\alpha=0.5\) の定数ステップサイズ更新、1エピソードの上限を300ステップに設定)も実装し比較しました。
G = 0
visited = set()
for s, a, r in reversed(episode):
G = r + gamma * G
if (s, a) not in visited:
visited.add((s, a))
Q[s][a] += alpha * (G - Q[s][a])
500エピソード・100試行平均での結果は、序盤(1〜100エピソード目)の平均報酬が -1051.11、終盤(401〜500エピソード目)でも -537.56 までしか改善せず、Q学習・SARSAのどちらよりも2桁近く悪いままでした。学習後の貪欲方策をテストしたところ、200ステップの上限内にゴールへ到達できず、左上隅の状態で行動が堂々巡りする(同じマスに留まり続ける)未学習の方策になっていました。
これは前節で述べたモンテカルロ法の弱点が顕在化した結果です。モンテカルロ法は1エピソードが終了するまでどの状態行動対も更新できないため、学習初期のほぼランダムな方策の下でエピソードが(崖からの引き戻しを繰り返しながら)非常に長くなりやすいこの環境では、300ステップで打ち切られた不完全なエピソードからしか学習できず、\(48\) 状態 \(\times 4\) 行動の価値をエピソードあたり高々数十回の更新でしか埋められません。対してTD学習ベースのQ学習・SARSAは1ステップごとに全遷移を使って更新するため、同じ500エピソードでもはるかに多くの更新回数を稼げます。ブートストラップが単なる理論上の性質ではなく、エピソードが長い・終了が不確実な問題における実用上の学習速度の差として現れることが、この実験から確認できます。
方策ベースの手法
価値関数を介さず、方策 \(\pi_\theta\) を直接パラメータ \(\theta\) でモデル化し、最適化します。
- 方策勾配法 性能指標 \(J(\theta)\) を最大化するように、勾配 \(\nabla_\theta J(\theta)\) を計算し、方策パラメータ \(\theta\) を更新します。 \( \theta_{t+1} = \theta_t + \alpha \nabla_\theta J(\theta_t) \)
方策勾配定理の導出
方策のパラメータ \(\theta\) を性能指標
\[ J(\theta) = \mathbb{E}_{\tau \sim p_\theta}[R(\tau)], \qquad R(\tau) = \sum_{t=0}^{T} \gamma^t r_t \]を最大化する方向に更新したいとします。ここで \(\tau=(s_0,a_0,r_0,s_1,a_1,r_1,\dots)\) は方策 \(\pi_\theta\) に従って生成される軌道(トラジェクトリ)、\(p_\theta(\tau)\) はその生成確率です。
\(J(\theta)\) を直接 \(\theta\) で微分すると
\[ \nabla_\theta J(\theta) = \nabla_\theta \int p_\theta(\tau) R(\tau) \, d\tau = \int \nabla_\theta p_\theta(\tau) \, R(\tau) \, d\tau \]となりますが、\(\nabla_\theta p_\theta(\tau)\) は期待値の形をしておらずサンプリングで近似できません。ここで対数微分トリック(\(\nabla_\theta \log p_\theta(\tau) = \nabla_\theta p_\theta(\tau)/p_\theta(\tau)\) の両辺に \(p_\theta(\tau)\) を掛けるだけで得られる恒等式 \(\nabla_\theta p_\theta(\tau) = p_\theta(\tau) \nabla_\theta \log p_\theta(\tau)\) )を使うと、
\[ \nabla_\theta J(\theta) = \int p_\theta(\tau) \, \nabla_\theta \log p_\theta(\tau) \, R(\tau) \, d\tau = \mathbb{E}_{\tau \sim p_\theta}\big[\nabla_\theta \log p_\theta(\tau) \, R(\tau)\big] \]という、\(\tau \sim p_\theta\) からサンプリングして平均するだけで計算できる形になります。あとは \(\log p_\theta(\tau)\) の中身を具体化すればよく、軌道の生成確率はマルコフ性と各時刻での方策による行動選択の独立性から
\[ p_\theta(\tau) = p(s_0) \prod_{t=0}^{T} \pi_\theta(a_t|s_t) \, p_T(s_{t+1}|s_t,a_t) \]と分解できるので、対数を取ると
\[ \log p_\theta(\tau) = \log p(s_0) + \sum_{t=0}^{T} \big[\log \pi_\theta(a_t|s_t) + \log p_T(s_{t+1}|s_t,a_t)\big] \]となります。ここで初期状態分布 \(p(s_0)\) と環境の遷移確率 \(p_T(s_{t+1}|s_t,a_t)\) はいずれも方策パラメータ \(\theta\) に依存しないため、\(\theta\) で微分すると消えます。
\[ \nabla_\theta \log p_\theta(\tau) = \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t) \]これはモデルフリー強化学習にとって決定的に重要な性質です。環境の遷移確率 \(p_T\) を一切知らなくても(式に登場すらしないので)、方策勾配 \(\nabla_\theta J(\theta)\) は計算できるということを意味します。以上をまとめると
\[ \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim p_\theta}\left[\left(\sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t)\right) R(\tau)\right] \]が得られます。さらに、時刻 \(t\) の行動 \(a_t\) は時刻 \(t\) より前の報酬 \(r_0,\dots,r_{t-1}\) には影響を与えられない(因果性)ことを使うと、和の中の \(R(\tau)\) を時刻 \(t\) 以降の割引収益 \(G_t = \sum_{k=t}^T \gamma^{k-t} r_k\) に置き換えても期待値は変わらないことが示せます(\(t\) より前の報酬項は \(\nabla_\theta \log \pi_\theta(a_t|s_t)\) と独立なので期待値の外に出せ、方策の確率の総和が1であることから寄与が0になります)。\(G_t\) の条件付き期待値の定義 \(\mathbb{E}[G_t\mid s_t,a_t]=Q^{\pi_\theta}(s_t,a_t)\) を使うと、最終的に
\[ \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\big[\nabla_\theta \log \pi_\theta(a_t|s_t) \, Q^{\pi_\theta}(s_t,a_t)\big] \]という方策勾配定理が得られます(状態については定常分布 \(d^{\pi_\theta}(s)\) に関する期待値としてまとめて書けば、\(\nabla_\theta J(\theta) = \sum_s d^{\pi_\theta}(s)\sum_a \pi_\theta(a|s)\nabla_\theta \log \pi_\theta(a|s)Q^{\pi_\theta}(s,a)\) という形になります)。\(Q^{\pi_\theta}\) が未知の場合に、モンテカルロ法で実際に観測した収益 \(G_t\) で置き換えたものがREINFORCEアルゴリズムです。
REINFORCEを実際に動かす:Q学習との比較
ここまでの導出は数式の上では完結していますが、方策勾配法が価値ベースの手法と比べて実際にどう違うのか(特に前節で議論した「TDのブートストラップ vs モンテカルロ法」という対立が、方策の最適化でも同じ形で現れるのか)を確認するため、Q学習(価値ベース)とREINFORCE(方策ベース)を同一の環境で実際に学習させて比較します。
環境設定: 5行5列のグリッド。エージェントは左上 \((0,0)\) からスタートし、右下 \((4,4)\) のゴールを目指します。崖のような罠は置かず、毎ステップ報酬 \(-1\) 、ゴール到達でエピソード終了(報酬\(-1\) を最後に加算)という単純な設定にしました。割引率 \(\gamma=1\) 。最適経路長はマンハッタン距離の \(8\) ステップ、最適収益は \(-8\) です。
REINFORCEの方策は状態ごとにテーブルで持つ softmax パラメータ \(\theta_{s,a}\)
とし、\(\pi_\theta(a|s) \propto \exp(\theta_{s,a})\)
とします。ここで実装上重要な注意があります。素朴に softmax をそのまま使うと、学習の初期に「崖のような致命的な失敗はないが、ゴールにも到達しない」ループ状の軌道に方策が強く引きつけられ、\(\theta\)
が急速に飽和して探索が停滞しやすくなります(実際に検証したところ、探索フロアを外すとゴール到達率は明確に悪化しました。ただし劣化の度合いは実装の細部——学習率のスケジューリングやthetaの初期化、乱数生成器の選び方など——に敏感で、悪化幅を一つの数値として断定するのは避けます)。そこで、Q学習の方でも使っているのと同じ \(\varepsilon=0.1\)
の探索フロアを、方策からの行動選択にも常時混ぜます。
def mixed_policy(theta_s, eps=0.1):
p_soft = softmax(theta_s)
return (1 - eps) * p_soft + eps / n_actions, p_soft
# Q学習(価値ベース、ε-greedy行動選択、方策オフ型): 状態ごとに前節と同じTD(0)更新
Q[s][a] += alpha * (r + gamma * Q[ns].max() - Q[s][a])
# REINFORCE(方策ベース): 連鎖律で d/dtheta_k log p_mix(a|s) を計算して勾配上昇
p_mix, p_soft = mixed_policy(theta[s])
grad = -p_soft * p_soft[a]
grad[a] += p_soft[a]
grad *= (1 - eps) / p_mix[a]
theta[s] += alpha * advantage * grad # advantage = G_t(ベースラインなし)or G_t - V[s](ベースラインあり)
学習率はQ学習が \(\alpha=0.5\)
、REINFORCEが \(\alpha=0.05\)
(\(\hat V\)
を使う場合は \(\alpha_V=0.1\)
)とし、500エピソードの学習をシード 2000〜2099 の100回独立に繰り返し平均を取りました(最大ステップ数100)。
- Q学習: 学習序盤(1〜50エピソード目)の平均報酬 \(-20.84\) から、終盤(451〜500エピソード目)には \(-8.83\) まで改善し、学習後の貪欲方策は100回中99回ゴールに到達(平均収益 \(-8.92\) 、ほぼ最適の \(-8\) )。
- REINFORCE(ベースラインなし): 序盤 \(-69.94\) から終盤 \(-25.12\) までしか改善せず、貪欲方策のゴール到達率は100回中79回、平均収益 \(-27.86\) 。
- REINFORCE(状態価値のモンテカルロ推定をベースラインに使用): 序盤 \(-52.55\) から終盤 \(-15.22\) まで改善し、貪欲方策のゴール到達率は100回中94回、平均収益 \(-13.80\) 。

同じ500エピソードでもQ学習は100エピソード程度でほぼ最適解に達するのに対し、REINFORCEはどちらも大きく出遅れています。これはCliff Walkingの節で確認した「TD学習はブートストラップにより1ステップごとに更新できるが、モンテカルロ法はエピソード終了を待たねばならず分散も大きい」という対立が、状態価値の推定だけでなく方策そのものの最適化にもそのまま現れていることを示しています。Q学習は1回の遷移ごとにTD誤差で\(Q\) を更新し、その情報がブートストラップで他の状態へも伝播していくのに対し、REINFORCEの勾配はエピソード全体の収益 \(G_t\) (分散の大きい確率変数)でしか重み付けできず、方策を確実な方向へ動かすには多数のエピソードを重ねて分散を平均で潰す必要があります。ベースラインの有無による差(ゴール到達率79%→94%、平均収益 \(-27.86 \to -13.80\) )は、次節で理論的に導出する分散削減の効果がそのまま現れたものです。
アクタークリティック法
価値ベースと方策ベースの手法を組み合わせたものです。
- アクター: 方策 \(\pi_\theta\) を更新(行動を選択)
- クリティック: 価値関数を学習し、アクターが選択した行動を評価
TD誤差 \(\delta_t\) を用いてアクターとクリティックの両方を更新します。
ベースラインによる分散削減
REINFORCEの勾配 \(\nabla_\theta \log \pi_\theta(a_t|s_t) G_t\) は不偏推定量ですが、\(G_t\) は将来の確率的な報酬列の総和であるため分散が大きく、学習が不安定になりがちです。ここで、状態 \(s\) にのみ依存し行動 \(a\) に依存しない任意の関数(ベースライン)\(b(s)\) を勾配から引いても、期待値は変化しないことが示せます。
\[ \mathbb{E}_{a \sim \pi_\theta(\cdot|s)}\big[\nabla_\theta \log \pi_\theta(a|s)\, b(s)\big] = b(s) \sum_a \nabla_\theta \pi_\theta(a|s) = b(s) \, \nabla_\theta \sum_a \pi_\theta(a|s) = b(s) \, \nabla_\theta 1 = 0 \](\(\sum_a \pi_\theta(a|s)=1\) が任意の \(\theta\) で常に成り立つ恒等式であることを使いました。)したがって
\[ \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\big[\nabla_\theta \log \pi_\theta(a_t|s_t)\, \big(Q^{\pi_\theta}(s_t,a_t) - b(s_t)\big)\big] \]は \(b(s)\) によらず常に不偏です。特に \(b(s) = V^{\pi_\theta}(s)\) を選ぶと、括弧の中身はアドバンテージ関数 \(A^{\pi_\theta}(s,a) = Q^{\pi_\theta}(s,a) - V^{\pi_\theta}(s)\) になります。\(A^{\pi_\theta}(s,a)\) は「状態 \(s\) の平均的な良さ \(V(s)\) と比べて、行動 \(a\) がどれだけ得か」を表す量であり、\(Q\) そのものより値の範囲(≒分散)が小さくなるため、勾配推定の分散が低減されます。
不偏性は上式で証明済みですが、実際に分散がどれだけ下がるのかを数値で確認しておきます。前節の5×5グリッドワールドで、初期方策(一様分布、\(\theta=0\)
)から3000エピソードをロールアウトし(シード7)、各エピソードで得られる方策勾配の推定値 \(\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t)\,G_t\)
のノルムと、ベースライン(同じ状態から観測された収益の事後平均、モンテカルロ推定 \(\hat V\)
)を引いた \(\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t)\,(G_t - \hat V(s_t))\)
のノルムを、それぞれ3000サンプル分集計しました。結果は、勾配ノルムの平均が \(290.5 \to 162.4\)
に下がり、その分散は \(28471.1 \to 3725.2\)
と約7.6倍小さくなりました。不偏性を保ったまま(平均的な向きは変えずに)推定のばらつきだけが大幅に減っていることが確認できます。これは前節でREINFORCE(ベースラインあり)がREINFORCE(ベースラインなし)より速く・安定してゴールへの経路を学習できた理由(オンライン報酬の分散も、学習終盤で比較すると \(1016.8 \to 436.2\)
と約2.3倍減っています)を裏付ける数値です。
このアドバンテージ関数を、価値関数を別途学習して見積もるのがアクタークリティック法です。ベルマン方程式
\[ Q^\pi(s,a) = \mathbb{E}\big[r_t + \gamma V^\pi(s_{t+1}) \mid s_t=s,a_t=a\big] \tag{4} \]を使うと、TD誤差の条件付き期待値は
\[ \mathbb{E}[\delta_t \mid s_t,a_t] = \mathbb{E}\big[r_t + \gamma V^\pi(s_{t+1}) \mid s_t,a_t\big] - V^\pi(s_t) = Q^\pi(s_t,a_t) - V^\pi(s_t) = A^\pi(s_t,a_t) \]となり、TD誤差 \(\delta_t\) (クリティックが1ステップだけ観測すれば計算できる量)は、まさにアドバンテージ関数の不偏な1サンプル推定量になっています。これが、アクター(方策)の更新に \(Q\) そのものではなく、クリティックが計算するTD誤差 \(\delta_t\) をそのまま使ってよい理由です。
- クリティックの更新 (価値関数の学習) \( \delta_t = r_t + \gamma \hat{V}_w(s_{t+1}) - \hat{V}_w(s_t) \) \( w_{t+1} = w_t + \alpha_w \delta_t \nabla_w \hat{V}_w(s_t) \)
- アクターの更新 (方策の学習):上で導出した通り \(\delta_t\) はアドバンテージ関数の不偏推定量なので、これをそのまま方策勾配の重みとして使います。 \( \theta_{t+1} = \theta_t + \alpha_\theta \delta_t \nabla_\theta \log \pi_\theta(a_t|s_t) \)
発展:クリティックなしのベースライン — GRPO (2024)
ここまでの議論では、ベースライン \(b(s)\) の具体例として「モンテカルロ推定 \(\hat V(s)\) 」(前節)と「TDでブートストラップ学習するクリティック \(\hat V_w(s)\) 」(アクタークリティック法)の2つを見てきました。しかし式(4)の直前で示した通り、\(b(s)\) が「行動 \(a\) に依存しない、状態 \(s\) だけの関数」でありさえすれば不偏性は保たれるので、他にも様々な選び方が可能です。
2024年に大規模言語モデルの数学推論能力向上のために提案された**GRPO (Group Relative Policy Optimization)**は、まさにこの自由度を利用してクリティックそのものを丸ごと省略します。同じ状態(プロンプト)\(s\) に対して方策から \(G\) 個の軌道(応答)を独立にサンプリングし、得られた報酬 \(r_1,\dots,r_G\) の集団内での相対値を使ってアドバンテージを直接見積もります。
\[ \hat{A}_i = \frac{r_i - \mathrm{mean}(r_1,\dots,r_G)}{\mathrm{std}(r_1,\dots,r_G) + \epsilon} \]ここで \(\mathrm{mean}(r_1,\dots,r_G)\) は、同じ状態 \(s\) から得られた \(G\) 個のサンプルだけから計算される量であり、個々の行動 \(a_i\) には依存しないので、まさに本節で証明した「行動に依存しない任意の \(b(s)\) 」の一種です。つまりGRPOは、クリティックを学習で獲得する代わりに、同一状態からの複数サンプリングによって経験的にベースラインを推定していることになります。パラメータを持つ価値関数の学習(クリティックのネットワークとその最適化)が丸ごと不要になるため、方策のネットワーク自体が巨大な大規模言語モデルの場合、計算資源とメモリの大幅な節約になります(Shao et al., “DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models,” arXiv:2402.03300 , 2024)。
ただし、クリティックを省く代償もあります。de Oliveira et al. (2025) はGRPOを本節と同じような古典的な単一タスク強化学習環境(離散・連続の制御タスク)で系統的に検証し、CartPoleのような短ホライゾンのタスクを除いて、学習されたクリティックを持つ手法(PPOなど)がクリティックなしの手法を一貫して上回ることを報告しています(“Learning Without Critics? Revisiting GRPO in Classical Reinforcement Learning Environments,” arXiv:2511.03527 , 2025)。これは本記事の実験結果とも整合的です。Cliff Walkingのようにエピソードが長くなりやすい(ブートストラップの恩恵が大きい)環境ではTD学習ベースの手法が圧倒的に有利であった一方、5×5グリッドワールドのような短いホライゾンの問題ではモンテカルロ推定によるベースラインだけでも大きな改善が得られました。「クリティック(ブートストラップ)が本質的に必要になるのは長いホライゾンの問題である」という直感が、2020年代のLLM向け強化学習の文脈でも再確認されているのは興味深い点です。
関数近似
状態空間が広大または連続的な場合、価値関数や方策をテーブルで表現する代わりに、パラメータ \(w\) や \(\theta\) を持つ関数(線形関数やニューラルネットワークなど)で近似します。
価値関数近似 TD法やQ学習などの更新則に、関数近似を組み合わせます。例えば、近似Q学習では重み \(w\) を以下のように更新します。
\[ \delta_t = r_t + \gamma \max_{a'} \hat{Q}_w(s_{t+1}, a') - \hat{Q}_w(s_t, a_t) \] \[ w_{t+1} = w_t + \alpha_t \delta_t \nabla_w \hat{Q}_w(s_t, a_t) \]深層Qネットワーク (DQN) は、ニューラルネットワークを行動価値関数の近似に用いますが、素朴に上式の更新則をそのままニューラルネットの学習に適用すると、学習が不安定になったり発散したりすることが知られています。主な原因は2つあります。
- サンプルの相関: エージェントが生成する遷移列 \((s_t,a_t,r_t,s_{t+1})\) は時間的に強く相関しており、確率的勾配降下法が前提とする独立同分布 (i.i.d.) なサンプルという仮定に反します。連続する似た状態ばかりで学習すると、ネットワークがその局所的なパターンに過学習し、他の状態での価値推定を破壊してしまいます(破局的忘却)。
- 動く目標 (moving target): 更新式のTDターゲット \(r_t + \gamma \max_{a'} \hat Q_w(s_{t+1},a')\) は、まさに今更新しようとしているパラメータ \(w\) 自身を使って計算されています。\(w\) を1歩更新するたびにターゲット自体も変化するため、回帰問題として見ると目標値が絶えず動く非定常な問題を解いていることになり、価値の推定が発散しやすくなります。テーブル表現(tabular)のQ学習ではある状態のQ値を更新しても他の状態のQ値は変化しませんが、ニューラルネットのように状態間でパラメータを共有する関数近似では、ある状態での更新が(意図せず)他の多くの状態の推定値まで変化させてしまう点が、この問題をさらに深刻にします。
DQNはこの2つの問題に、それぞれ対応する技術で対処します。
- 経験再生 (Experience Replay): 遷移 \((s_t,a_t,r_t,s_{t+1})\) を巨大なバッファに蓄積しておき、学習時はそこからランダムにミニバッチをサンプリングして使います。時間的に隣接しない遷移をランダムに混ぜることで、i.i.d.に近いサンプル集合を疑似的に作り出し、相関の問題を緩和します。また過去の経験を繰り返し再利用できるためサンプル効率も向上します。
- ターゲットネットワーク (Target Network): オンラインで更新するパラメータ \(w\) とは別に、ターゲット計算専用のパラメータ \(w^-\) のコピーを用意します。\(w\) は毎ステップ勾配降下で更新しますが、\(w^-\) は一定間隔(例えば数千ステップごと)でしか \(w\) の値をコピーしません。TDターゲットは常にこの固定された \(w^-\) で計算する(\(r_t + \gamma \max_{a'} \hat Q_{w^-}(s_{t+1},a')\) )ことで、学習中の目標値を一時的に凍結し、動く目標問題を緩和します。
方策関数近似 方策勾配法やアクタークリティック法で、方策を直接関数近似します。
関連記事
- 強化学習の基礎:概要とマルコフ決定過程 - MDPの定式化とベルマン方程式の証明、価値反復法・方策反復法の実装
- モデルフリー強化学習 - 探索と活用のトレードオフ、TD(\(\lambda\) )法の解説
- 方策勾配法 - 方策勾配定理のさらに詳しい解説
- Advantage Actor-Critic (A2C) - アドバンテージ関数を用いたActor-Critic法
- 深層強化学習の主要アルゴリズム - DQN以降の発展的アルゴリズム
参考文献
- 森村 哲郎, “ MLP機械学習プロフェッショナルシリーズ 強化学習 ”