からっぽのしょこ

読んだら書く!書いたら読む!同じ事は二度調べ(たく)ない

3.3.2:行動価値関数のベルマン方程式の導出【ゼロつく4のノート】

はじめに

 『ゼロから作るDeep Learning 4 ――強化学習編』の独学時のまとめノートです。初学者の補助となるようにゼロつくシリーズの4巻の内容に解説を加えていきます。本と一緒に読んでください。

 この記事は、3.3.2節の内容です。行動価値関数についてのベルマン方程式を導出します。

【前節の内容】

www.anarchive-beta.com

【他の記事一覧】

www.anarchive-beta.com

【この記事の内容】

3.3.2 行動価値関数のベルマン方程式の導出

 行動価値関数(Q関数)についてのベルマン方程式を導出します。行動価値関数については「3.3.1:行動価値関数【ゼロつく4のノート】 - からっぽのしょこ」を、ベルマン方程式の導出については「3.2.1:状態価値関数のベルマン方程式の例【ゼロつく4のノート】 - からっぽのしょこ」も参照してください。

・行動価値関数の計算式

 まずは、行動価値関数の計算式を扱いやすいように変形するための準備をします。

 行動価値関数は、次の式でした。

$$ q_{\pi}(s, a) = \mathbb{E}[G_t | S_t = s, A_t = a] $$

 この式に、収益$G_t$の定義式

$$ \begin{align} G_t &= R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} + \gamma^3 R_{t+3} + \cdots \tag{2.1}\\ &= R_t + \gamma G_{t+1} \tag{3.3} \end{align} $$

を代入して、期待値の項を分割します。

$$ \begin{align} q_{\pi}(s, a) &= \mathbb{E}[R_t + \gamma G_{t+1} | S_t = s, A_t = a] \\ &= \mathbb{E}[R_t | S_t = s, A_t = a] + \gamma \mathbb{E}[G_{t+1} | S_t = s, A_t = a] \tag{3.12} \end{align} $$

 「時刻$t$の報酬$R_t$の期待値」と「時刻$t + 1$の収益$G_{t+1}$の期待値」で計算できるのが分かりました。

 次からは、この2つの期待値の計算式を求めます。

・報酬の期待値の計算式

 式(3.12)の前の項「時刻$t$における報酬$R_t$の期待値」の計算式を求めます。

 時刻$t$において状態$s$で行動$a$を取った場面を考えます。この場面の状態を$S_t = s$、行動を$A_t = a$で表します。
 このとき、報酬$R_t$として得られる値は、$s'$として取り得る状態の数だけあります。よって、$R_t$の期待値は、「状態遷移確率(行動$a$により状態が$s$から$s'$に遷移する確率)$p(s' | s, a)$」を用いて、次の式で計算できます。

$$ \begin{aligned} \mathbb{E}_{\pi}[R_t | S_t = s, A_t = a] &= \sum_{s'} R_t p(S_{t+1} = s' | S_t = s, A_t = a) \\ &= \sum_{s'} R_t p(s' | s, a) \end{aligned} $$

 この式では、各状態$s'$になる確率に応じて報酬の加重平均をとる計算をしています。

 $s', a, s$と報酬の関係が分かったので、各報酬を$R_t = r(s', a, s)$で置き換えます。

$$ \mathbb{E}_{\pi}[R_t | S_t = s, A_t = a] = \sum_{s'} p(s' | s, a) r(s', a, s) \tag{a} $$

 $R_t$の期待値の具体的な計算式が得られました。

・次の時刻の収益の期待値の計算式

 続いて、式(3.12)の後の項「時刻$t + 1$における収益$G_{t+1}$の期待値」の計算式を求めます。ただし、時刻$t$の状態が$s$、行動が$a$という条件を持ちます。

 (時刻$t$における条件を持たない)時刻$t + 1$における行動価値関数を考えます。

$$ q_{\pi}(s', a') = \mathbb{E}_{\pi}[G_{t+1} | S_{t+1} = s', A_{t+1} = a'] $$

 ここで、$a'$は、時刻$t + 1$における行動を表し、確率的方策$\pi(a' | s')$によって決まります。

 ここで知りたいのは、$S_t = s$と$A_t = a$を条件とする期待値$\mathbb{E}_{\pi}[G_{t+1} | S_t = s, A_t = a]$です。$\mathbb{E}_{\pi}[G_{t+1} | S_t = s, A_t = a]$は、上の式の右辺について、「$A_{t+1} = a'$と$S_t = s'$の同時確率$p(a', s' | s, a)$」を掛けて$a'$と$s'$について総和をとることで得られます。

$$ \begin{aligned} \mathbb{E}_{\pi}[G_{t+1} | S_t = s, A_t = a] &= \sum_{a'} \sum_{s'} p(A_{t+1} = a', S_{t+1} = s' | S_t = s, A_t = a) \mathbb{E}_{\pi}[G_{t+1} | S_{t+1} = s', A_{t+1} = a'] \\ &= \sum_{a'} \sum_{s'} p(a', s' | s, a) \mathbb{E}_{\pi}[G_{t+1} | S_{t+1} = s', A_{t+1} = a'] \end{aligned} $$

 「3.1.2:状態価値関数のベルマン方程式の導出【ゼロつく4のノート】 - からっぽのしょこ」で確認した期待値の性質(4)よって条件を入れ替えています。

 $p(a', s' | s, a)$を(時刻$t + 1$の)確率的方策と(時刻$t$の)状態遷移確率に分解します。

$$ \begin{aligned} \mathbb{E}_{\pi}[G_{t+1} | S_t = s, A_t = a] &= \sum_{a'} \sum_{s'} \pi(a' | s') p(s' | s, a) \mathbb{E}_{\pi}[G_{t+1} | S_{t+1} = s', A_{t+1} = a'] \\ &= \sum_{s'} p(s' | s, a) \sum_{a'} \pi(a' | s') \mathbb{E}_{\pi}[G_{t+1} | S_{t+1} = s', A_{t+1} = a'] \end{aligned} $$

 1つ目の式を使って、期待値の項を$q_{\pi}(s', a')$に置き換えます。

$$ \mathbb{E}_{\pi}[G_{t+1} | S_t = s, A_t = a] = \sum_{s'} p(s' | s, a) \sum_{a'} \pi(a' | s') q_{\pi}(s', a') \tag{b} $$

 $G_{t+1}$の期待値の具体的な計算式が得られました。

・行動価値関数のベルマン方程式

 2つの期待値の計算式が得られたので、ベルマン方程式の話に戻ります。

 行動価値関数(3.12)に、式(a)と(b)を代入して式を整理します。

$$ \begin{align} q_{\pi}(s, a) &= \mathbb{E}[G_t | S_t = s, A_t = a] \\ &= \mathbb{E}[R_t | S_t = s, A_t = a] + \gamma \mathbb{E}[G_{t+1} | S_t = s, A_t = a] \tag{3.12}\\ &= \sum_{s'} p(s' | s, a) r(s', a, s) + \gamma \sum_{s'} p(s' | s, a) \sum_{a'} \pi(a' | s') q_{\pi}(s', a') \\ &= \sum_{s'} p(s' | s, a) \left\{ r(s', a, s) + \gamma \sum_{a'} \pi(a' | s') q_{\pi}(s', a') \right\} \tag{3.14} \end{align} $$

 行動価値関数のベルマン方程式が得られました。ベルマン方程式(3.14)は、「状態$s$と行動$a$の価値関数$q_{\pi}(s, a)$」と「次の状態$s'$と行動$a'$の価値関数$q_{\pi}(s', a')$」の関係を表します。

 さらに、前項で求めた状態価値関数と行動価値関数の関係式(3.11)より

$$ v_{\pi}(s') = \sum_{a'} \pi(a' | s') q_{\pi}(s', a') $$

で置き換えます。

$$ q_{\pi}(s, a) = \sum_{s'} p(s' | s, a) \Bigl\{ r(s', a, s) + \gamma v_{\pi}(s') \Bigr\} \tag{3.13} $$

 この式は、「状態$s$と行動$a$の価値関数$q_{\pi}(s, a)$」と「次の状態$s'$の価値関数$v_{\pi}(s')$」の関係を表します。

 この節までで、状態価値関数と行動価値関数のそれぞれについてのベルマン方程式を導出しました。次節では、ベルマン最適方程式を求めます。

参考文献

おわりに

 随分苦しんだだけあってかなり式変形に慣れてきました。

 状態価値関数のときのようにプログラムを組もうと思ったのですが、初回の行動aを指定するように変更するだけだと思うので、省略します。本にもないですしね。

【次節の内容】

www.anarchive-beta.com