← 機械学習テキスト 一覧

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

📎 前提:マルコフ決定過程

要点(BLUF)


1. なぜ価値関数が要るのか

マルコフ決定過程 で、強化学習の目的は累積報酬(リターン)の期待値を最大化することだと定義しました。リターンは

Gt=Rt+1+γRt+2+γ2Rt+3+=k=0γkRt+k+1G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}

でした(γ[0,1)\gamma \in [0,1) は割引率)。しかし GtG_t は将来の確率的な報酬の無限和なので、これ自体は直接最大化できません。そこで「期待値を取って状態(や行動)の関数にしてしまえば扱える」という発想が価値関数です。


2. 状態価値関数 VπV^\pi と行動価値関数 QπQ^\pi

状態価値関数は、状態 ss から方策 π\pi に従ったときのリターンの期待値です。

Vπ(s)=Eπ ⁣[GtSt=s]V^\pi(s) = \mathbb{E}_\pi\!\left[\, G_t \mid S_t = s \,\right]

要するに:「この状態にいると、これから平均でどれくらい得するか」を表す数。

行動価値関数(Q関数)は、状態 ss行動 aa を取ってから方策 π\pi に従ったときのリターンの期待値です。

Qπ(s,a)=Eπ ⁣[GtSt=s,At=a]Q^\pi(s, a) = \mathbb{E}_\pi\!\left[\, G_t \mid S_t = s,\, A_t = a \,\right]

要するに:「この状態でこの行動を選ぶと、これから平均でどれくらい得するか」。VV は状態だけ、QQ は状態と行動の組で評価する点が違います。

両者の関係は、最初の1手を方策に従って選ぶ期待を取れば VV になる、というものです。

Vπ(s)=aπ(as)Qπ(s,a)V^\pi(s) = \sum_a \pi(a \mid s)\, Q^\pi(s, a)

逆に QQ は「即時報酬 + 割引した次状態の VV」で書けます(次節で導きます)。

Qπ(s,a)=sP(ss,a)[R(s,a,s)+γVπ(s)]Q^\pi(s, a) = \sum_{s'} P(s' \mid s, a)\,\big[\, R(s,a,s') + \gamma V^\pi(s') \,\big]

3. ベルマン期待方程式(導出)

価値関数の威力は、リターンの再帰構造から来ます。定義の和を1つ前と1つ後に分けると

Gt=Rt+1+γ(Rt+2+γRt+3+)=Rt+1+γGt+1G_t = R_{t+1} + \gamma\big( R_{t+2} + \gamma R_{t+3} + \cdots \big) = R_{t+1} + \gamma\, G_{t+1}

要するに:リターン=「次にもらう報酬」+「割引した、その先のリターン」。

これを VπV^\pi の定義に代入します。期待の線形性から

Vπ(s)=Eπ ⁣[Rt+1+γGt+1St=s]=Eπ ⁣[Rt+1St=s]+γEπ ⁣[Gt+1St=s]V^\pi(s) = \mathbb{E}_\pi\!\left[\, R_{t+1} + \gamma G_{t+1} \mid S_t = s \,\right] = \mathbb{E}_\pi\!\left[\, R_{t+1} \mid S_t = s \,\right] + \gamma\, \mathbb{E}_\pi\!\left[\, G_{t+1} \mid S_t = s \,\right]

ここで第2項に注目します。Gt+1G_{t+1} は時刻 t+1t+1 以降の量なので、いったん次状態 St+1=sS_{t+1}=s' で条件付ければ、マルコフ性により「ss' から先のリターンの期待」= Vπ(s)V^\pi(s') にまとまります(全期待値の法則)。状態遷移の確率を明示的に展開すると、ベルマン期待方程式が得られます。

  Vπ(s)=aπ(as)sP(ss,a)[R(s,a,s)+γVπ(s)]  \boxed{\; V^\pi(s) = \sum_a \pi(a \mid s) \sum_{s'} P(s' \mid s, a)\,\big[\, R(s,a,s') + \gamma\, V^\pi(s') \,\big] \;}

要するに:Vπ(s)V^\pi(s) は「自分でできる関数評価」だけで閉じている。無限和を消して、次状態の同じ関数 VπV^\pi で書き直したのがミソです。

QπQ^\pi についても同様に、Qπ(s,a)Q^\pi(s,a) を1手分展開してから次状態で方策に従うと

Qπ(s,a)=sP(ss,a)[R(s,a,s)+γaπ(as)Qπ(s,a)]Q^\pi(s, a) = \sum_{s'} P(s' \mid s, a)\,\Big[\, R(s,a,s') + \gamma \sum_{a'} \pi(a' \mid s')\, Q^\pi(s', a') \,\Big]

となります。VV 版と QQ 版は、Vπ(s)=aπ(as)Qπ(s,a)V^\pi(s')=\sum_{a'}\pi(a'\mid s')Q^\pi(s',a') を通して互いに変換できます。

バックアップ図(期待の取り方)

ベルマン方程式は「状態 → 行動 → 次状態」と1段先まで木を展開し、確率で重み付けして価値を**戻す(バックアップ)**操作として読めます。

graph TD
    S["状態 s : Vπ(s)"]
    A1["行動 a1"]
    A2["行動 a2"]
    S1["次状態 s' : Vπ(s')"]
    S2["次状態 s'' : Vπ(s'')"]
    S3["次状態 s''' : Vπ(s''')"]

    S -- "π(a1|s)" --> A1
    S -- "π(a2|s)" --> A2
    A1 -- "P(s'|s,a1) → R + γVπ(s')" --> S1
    A1 -- "P(s''|s,a1) → R + γVπ(s'')" --> S2
    A2 -- "P(s'''|s,a2) → R + γVπ(s''')" --> S3

上向きに「即時報酬+割引した次状態価値」を期待で集約すると Vπ(s)V^\pi(s) になる、という図です。\sum はこの集約(行動について方策で、次状態について遷移確率で)を表します。


4. ベルマン最適方程式

価値関数には半順序を入れられます。すべての状態で Vπ(s)Vπ(s)V^{\pi'}(s) \ge V^\pi(s) なら「π\pi'π\pi 以上」と定めます。有限MDPでは、この順序で最大の価値を達成する方策が必ず存在し、それを最適方策 π\pi^*、その価値を最適価値と呼びます。

V(s)=maxπVπ(s),Q(s,a)=maxπQπ(s,a)V^*(s) = \max_\pi V^\pi(s), \qquad Q^*(s,a) = \max_\pi Q^\pi(s,a)

最適価値が満たす再帰は、ベルマン期待方程式で「方策に従って行動を平均する」代わりに「最良の行動を選ぶ」に置き換えたものです。

  V(s)=maxasP(ss,a)[R(s,a,s)+γV(s)]  \boxed{\; V^*(s) = \max_a \sum_{s'} P(s' \mid s, a)\,\big[\, R(s,a,s') + \gamma\, V^*(s') \,\big] \;}

QQ^* についても同様に、次状態では最良の行動を取るので

Q(s,a)=sP(ss,a)[R(s,a,s)+γmaxaQ(s,a)]Q^*(s, a) = \sum_{s'} P(s' \mid s, a)\,\Big[\, R(s,a,s') + \gamma \max_{a'} Q^*(s', a') \,\Big]

要するに:期待方程式の aπ(as)\sum_a \pi(a\mid s)maxa\max_a に変わっただけ。これが「最適とはこういう関係を満たす」という定義不要の自己整合条件です。

VV^*QQ^* の関係、最適方策の取り出し

両者は次で結ばれます。

V(s)=maxaQ(s,a),Q(s,a)=sP(ss,a)[R(s,a,s)+γV(s)]V^*(s) = \max_a Q^*(s, a), \qquad Q^*(s,a) = \sum_{s'} P(s'\mid s,a)\big[\,R(s,a,s') + \gamma V^*(s')\,\big]

最適方策は QQ^* に関して貪欲(greedy)に取れば得られます。

π(s)=argmaxaQ(s,a)\pi^*(s) = \arg\max_a Q^*(s, a)

要するに:QQ^* さえ分かれば、各状態で最大の QQ^* を与える行動を選ぶだけで最適に動ける。これが Q学習が QQ^* を直接狙う理由です(Q学習とSARSA)。なお VV^* から方策を取り出すには P,RP,R(遷移モデル)が要りますが、QQ^* からならモデル不要なのが実務上の大きな違いです。


5. 動的計画法(モデルあり)

遷移 PP と報酬 RR既知なら、ベルマン方程式を計算手続きに変えて最適価値を求められます。これが**動的計画法(DP)**です。

ベルマン作用素

価値関数を入力に取り、ベルマン更新を1回適用して新しい価値関数を返す写像をベルマン作用素と呼びます。最適版(ベルマン最適作用素)TT

(TV)(s)=maxasP(ss,a)[R(s,a,s)+γV(s)](TV)(s) = \max_a \sum_{s'} P(s' \mid s, a)\,\big[\, R(s,a,s') + \gamma V(s') \,\big]

です。ベルマン最適方程式は TV=VTV^* = V^*、つまり VV^*TT の不動点だと言い換えられます。

価値反復(value iteration)

TT をひたすら適用します。

Vk+1=TVk(k=0,1,2,)V_{k+1} = T V_k \qquad (k = 0, 1, 2, \dots)

収束したら(Vk+1Vk\|V_{k+1}-V_k\| が十分小さくなったら)貪欲方策を取り出します。

flowchart TD
    INIT["V を任意に初期化"] --> UPD["全状態を更新 : V(s) ← max_a Σ P・(R + γV(s'))"]
    UPD --> CONV{"変化が ε 未満か"}
    CONV -- "いいえ" --> UPD
    CONV -- "はい" --> POL["貪欲方策を抽出 : π(s) = argmax_a Q(s,a)"]
    POL --> END["最適方策 π*"]

方策反復(policy iteration)

「評価」と「改善」を交互に繰り返します。

  1. 方策評価:固定した π\pi のベルマン期待方程式を解いて VπV^\pi を求める(線形方程式 Vπ=Rπ+γPπVπV^\pi = R^\pi + \gamma P^\pi V^\pi を直接解くか、期待作用素を反復)。
  2. 方策改善:得た VπV^\pi に貪欲な新方策 π(s)=argmaxasP(ss,a)[R+γVπ(s)]\pi'(s) = \arg\max_a \sum_{s'} P(s'\mid s,a)[R + \gamma V^\pi(s')] を作る。
  3. 方策が変わらなくなったら終了。
flowchart TD
    INIT["方策 π を初期化"] --> EVAL["方策評価 : Vπ を Σ で求める"]
    EVAL --> IMPR["方策改善 : π'(s) = argmax_a Q(s,a)"]
    IMPR --> STABLE{"π が変化したか"}
    STABLE -- "はい" --> EVAL
    STABLE -- "いいえ" --> END["最適方策 π*"]

方策改善定理により各改善ステップで VπVπV^{\pi'} \ge V^\pi(成分ごと)が保証され、有限MDPでは決定的方策が有限個しかないので有限回で停止して最適に到達します。価値反復は「評価を1回だけにした方策反復」とも見なせます。

なぜ収束するか:γ\gamma-収縮とバナッハの不動点定理

DP が必ず最適価値に行き着く核心は、TT最大値ノルムで γ\gamma-収縮写像だという事実です。任意の2つの価値関数 V,WV, W に対し

TVTWγVW,U=maxsU(s)\|TV - TW\|_\infty \le \gamma\, \|V - W\|_\infty, \qquad \|U\|_\infty = \max_s |U(s)|

が成り立ちます(0γ<10 \le \gamma < 1)。

証明の要点。各状態 ss について、a=argmaxaa^* = \arg\max_aTVTV 側で最大を取る行動)とすると、TWTW はその aa^* でも最大以下なので

(TV)(s)(TW)(s)γsP(ss,a)[V(s)W(s)]γsP(ss,a)VW=γVW(TV)(s) - (TW)(s) \le \gamma \sum_{s'} P(s'\mid s, a^*)\big[\, V(s') - W(s') \,\big] \le \gamma \sum_{s'} P(s'\mid s, a^*)\,\|V - W\|_\infty = \gamma \|V-W\|_\infty

を得ます(途中で RR が打ち消し、確率の和が1)。V,WV,W を入れ替えれば逆向きの不等式も成り立つので、両辺の絶対値・maxs\max_s を取って収縮が言えます。

要するに:max\max も「即時報酬の差はゼロ、残るのは次状態価値の差が γ\gamma 倍に縮む」という構造を壊さない。だから1回 TT を当てるたびに、真の解 VV^* との距離が必ず γ\gamma 倍以下になります。

収縮写像なのでバナッハの不動点定理から、不動点 VV^* は一意に存在し、任意の初期値から

VkVγkV0V\|V_k - V^*\|_\infty \le \gamma^k\, \|V_0 - V^*\|_\infty

幾何級数的(指数的)に収束します。γ\gamma が1に近いほど縮みが緩く、収束が遅くなります。


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


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

simulations/value_iteration.py:遷移と報酬が分かっている(やや確率的な)グリッドワールドで、ベルマン最適方程式 V(s)=maxasP(ss,a)[r+γV(s)]V(s)=\max_a\sum_{s'}P(s'|s,a)[r+\gamma V(s')] を右辺→左辺の代入として繰り返します。価値が一意の最適値 VV^* に収束し、その誤差が毎回 γ\gamma 倍以下に縮む(対数軸で直線=幾何的収束=γ\gamma-収縮写像)ことを可視化します。得られる最適方策は Q学習(Q学習とSARSA)と一致し、違いは「モデルあり動的計画法」か「経験から学ぶモデルなし」かです。

ベルマン最適バックアップの収縮収束

関連ノート