← 機械学習テキスト 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:価値関数とベルマン方程式

要点(BLUF)


1. なぜモデルフリーか

価値関数とベルマン方程式では、遷移確率 P(ss,a)P(s'\mid s,a) と報酬 R(s,a)R(s,a)既知である前提で、ベルマン方程式を解いて価値を求めました(動的計画法)。

しかし現実の多くの問題では、PPRR事前にはわかりません。ロボットが床を蹴ったとき次にどこへ転ぶか、ゲームでこの手を指したとき相手がどう応じるか、その確率分布を式で持っていることはまずありません。

そこで発想を変えます。確率分布を知らなくても、実際に動いてみればサンプルは手に入る。状態 ss で行動 aa をとったら、報酬 RR が返り、次状態 ss' に遷移した――この一回一回の経験 (s,a,R,s)(s, a, R, s') を積み上げて、価値関数を直接推定する。これが**モデルフリー(model-free)**の強化学習です。

要するに:期待値を計算する代わりに、サンプルで近似する。確率分布の数式を持たずに、経験の積み重ねで価値を学ぶ。


2. TD学習とブートストラップ

TD誤差

状態価値 VV を例にとります。ベルマン方程式は V(s)=E[R+γV(s)]V(s) = \mathbb{E}[R + \gamma V(s')] でした。期待値 E\mathbb{E} は分布を知らないと計算できませんが、1回の経験 (s,R,s)(s, R, s')R+γV(s)R + \gamma V(s') という1サンプルを与えてくれます。

このサンプルと現在の推定 V(s)V(s) のズレを **TD誤差(temporal-difference error)**と呼びます:

δ=R+γV(s)TDターゲットV(s)現在の推定\delta = \underbrace{R + \gamma V(s')}_{\text{TDターゲット}} - \underbrace{V(s)}_{\text{現在の推定}}

そして V(s)V(s) をこの誤差の方向へ少しだけ動かします(α\alpha は学習率):

V(s)V(s)+αδ=V(s)+α[R+γV(s)V(s)]V(s) \leftarrow V(s) + \alpha\,\delta = V(s) + \alpha\big[R + \gamma V(s') - V(s)\big]

要するに:TD誤差は「予想より良かった/悪かった」の差分。良ければ価値を上げ、悪ければ下げる。δ>0\delta>0 なら V(s)V(s) が過小評価だった合図です。

ブートストラップとは

TDターゲット R+γV(s)R + \gamma V(s') の中に、まだ確定していない推定値 V(s)V(s') が入っている点に注目してください。確定した実測値ではなく、自分の推定で自分の推定を更新している。これを**ブートストラップ(bootstrapping)**と呼びます。

最初は V(s)V(s') もデタラメですが、すべての状態が互いを少しずつ正しい方向へ引っ張り合い、反復のうちに全体が真の価値へ収束していきます。

TD vs モンテカルロ

ブートストラップの有無が、TDと**モンテカルロ法(MC)**を分けます。

モンテカルロ(MC)TD学習
ターゲットエピソード終了までの実収益 GG1ステップ先の推定 R+γV(s)R+\gamma V(s')
ブートストラップしないする
更新タイミングエピソード終了後1ステップごと(オンライン)
バイアスなし(不偏)あり(推定値を使うため)
分散大きい(多数の確率事象の積み重ね)小さい

要するに:MCは最後まで待って実際の収益で更新するので不偏だが分散が大きい。TDは1歩先の推定で即更新するのでバイアスは入るが分散が小さく、エピソードが終わらない問題でも学べる。バイアス‐バリアンスのトレードオフです。

flowchart LR
    A["状態 s で行動 a"] --> B["報酬 R と次状態 s' を観測"]
    B --> C["TDターゲット = R + γ × 次の価値推定"]
    C --> D["TD誤差 δ = ターゲット − 現在の推定"]
    D --> E["価値を α×δ だけ更新"]
    E --> A

3. SARSA(方策オン制御)

状態価値 VV だけでは、モデルがないと「どの行動が良いか」を選べません(行動を比較するには遷移先の分布が要る)。そこで行動価値 Q(s,a)Q(s,a) を学びます。QQ さえあれば、各状態で QQ が最大の行動を選ぶだけで方策が決まります。

SARSAの更新則は次の通りです:

Q(s,a)Q(s,a)+α[R+γQ(s,a)Q(s,a)]Q(s,a) \leftarrow Q(s,a) + \alpha\big[R + \gamma\,Q(s',a') - Q(s,a)\big]

ここで aa' は、現在の方策(例:ε-greedy)に従って次状態 ss' で実際に選んだ行動です。更新に使う5つの量

(s, a, R, s, a)(\,s,\ a,\ R,\ s',\ a'\,)

の頭文字を並べて **SARSA(State–Action–Reward–State–Action)**と名づけられました。

要するに:SARSAは「次に本当にとる行動 aa' の価値」でブートストラップする。だから自分が今まさに従っている方策の価値を学ぶ。これが**方策オン(on-policy)**の意味です。学習対象の方策と、行動を決める方策が同一。


4. Q学習(方策オフ制御)

Q学習の更新則はSARSAとほぼ同じ形ですが、Q(s,a)Q(s',a') の代わりに次状態での最大値を使います:

Q(s,a)Q(s,a)+α[R+γmaxaQ(s,a)Q(s,a)]Q(s,a) \leftarrow Q(s,a) + \alpha\Big[R + \gamma\,\max_{a'} Q(s',a') - Q(s,a)\Big]

maxa\max_{a'} は「次状態 ss'最も価値の高い行動をとったと仮定した値」です。実際に次にどの行動をとるか(探索でわざと外すかもしれない)とは無関係に、常に貪欲(greedy)な行動を基準にターゲットを作る点がSARSAと決定的に違います。

このため Q学習は2つの方策を区別します:

両者が別物なので **方策オフ(off-policy)**と呼びます。Q学習の更新則は最適行動価値 QQ^{*} に対するベルマン最適方程式 Q(s,a)=E[R+γmaxaQ(s,a)]Q^{*}(s,a)=\mathbb{E}[R+\gamma\max_{a'}Q^{*}(s',a')] をサンプルで近似したものなので、探索しながら(行動方策が何であれ)最適方策の価値 QQ^{*} を学べます

graph TB
    subgraph SARSA["SARSA(方策オン)"]
        S1["TDターゲット = R + γ × Q ( s' , a' )"]
        S2["a' は実際にとる次の行動"]
        S1 --- S2
    end
    subgraph QL["Q学習(方策オフ)"]
        Q1["TDターゲット = R + γ × max_a' Q ( s' , a' )"]
        Q2["貪欲な行動を仮定(実際の a' は無関係)"]
        Q1 --- Q2
    end

5. SARSA と Q学習の違い:崖歩き

両者の性格差が最もきれいに出るのが **崖歩き(cliff walking)**という格子世界です。スタートからゴールまで歩き、各ステップで 1-1、崖に落ちると 100-100 でスタートに戻されます。崖のすぐ縁を通る経路が最短ですが、探索(ε-greedy)で時々ヨコに外れると崖に落ちます。

要するに:Q学習は「探索が消えた後の最適方策」の価値を学ぶので攻める。SARSAは「今まさに探索している自分」の価値を学ぶので安全側に倒れる。なお ε0\varepsilon\to0 に減衰させれば、両者とも同じ最適方策に近づきます。


6. 探索と活用(ε-greedy)

価値推定が手に入っても、常に「今いちばん良さそうな行動」だけを選ぶ(純粋な活用 exploitation)と、まだ試していない本当に良い行動を永遠に発見できません。一度たまたま低く評価された行動は二度と選ばれず、推定が更新されないまま局所最適に固定されます。

そこで**探索(exploration)**を混ぜます。最も基本的なのが ε-greedy

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

実務では ε\varepsilon徐々に減衰させ、初めは探索、後半は活用へと移すのが定石です。

要するに:探索=「未知を試す投資」、活用=「既知の最善で稼ぐ」。この探索と活用のトレードオフは強化学習の根本問題で、ε-greedy はその最小限の解決策です。


7. 収束条件

Q学習・SARSAが真の価値(Q学習なら QQ^{*})へ収束するための代表的な条件は次の2つです(Watkins & Dayan 1992 ほか、確率近似理論に基づく)。

  1. 全状態行動対を無限回訪問:どの (s,a)(s,a) も訪れ続ける(探索を絶やさない= ε>0\varepsilon>0 を保つことが効く)。一度も試さない手の価値は学べません。
  2. 学習率の減衰(ロビンス・モンロー条件)
tαt=,tαt2<\sum_{t} \alpha_t = \infty, \qquad \sum_{t} \alpha_t^{2} < \infty

前者は「更新を止めない(どこへでも動ける)」、後者は「ノイズを平均化して落ち着かせる」を意味します。αt=1/t\alpha_t = 1/t のような減衰がこれを満たします。

要するに:「全部の手を試し続ける」+「学習率を適切に小さくしていく」が揃えば、サンプルだけからでも価値は真値に収束します。


⚠️ よくある誤解・落とし穴


対応するシミュレーション

simulations/q_learning_gridworld.py:5×5のグリッドワールド(左上→右下ゴール)で Q学習を自前実装します。ε-greedy で探索しながら TD誤差 r+γmaxaQ(s,a)Q(s,a)r+\gamma\max_{a'}Q(s',a')-Q(s,a) で Q値を更新すると、ゴールまでの手数が最短(8手)へ収束し、各マスの価値(ゴール側ほど高い)と最善の方策(全矢印がゴールへ向かう)を報酬モデルだけから学べることを可視化します。max を使う方策オフ学習で、SARSA は実際にとった aa' を使う点が違います。

グリッドワールドでQ学習が収束

関連ノート