からっぽのしょこ

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

3.4:ベルマン最適方程式【ゼロつく4のノート】

はじめに

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

 この記事は、3.4節の内容です。状態価値関数と行動価値関数についてのベルマン最適方程式を確認します。

【前節の内容】

www.anarchive-beta.com

【他の記事一覧】

www.anarchive-beta.com

【この記事の内容】

3.4 ベルマン最適方程式

 状態価値関数と行動価値関数それぞれについてのベルマン最適方程式の定義を確認します。

3.4.1 状態価値関数におけるベルマン最適方程式

 まずは、状態価値関数についてのベルマン最適方程式を確認します。

 「3.1.2:状態価値関数のベルマン方程式の導出【ゼロつく4のノート】 - からっぽのしょこ」で求めた状態価値関数のベルマン方程式は、次の式でした。

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

 最適方策を$\pi_{*}(a | s)$、最適状態価値関数(最適方策による状態価値関数)を$v_{*}(s)$で表すと、ベルマン最適方程式は、次の式になります。

$$ \begin{align} v_{*}(s) &= \sum_a \pi_{*}(a | s) \sum_{s'} p(s' | s, a) \Bigl\{ r(s, a, s') + \gamma v_{*}(s') \Bigr\} \tag{3.15}\\ &= \max_a \sum_{s'} p(s' | s, a) \Bigl\{ r(s, a, s') + \gamma v_{*}(s') \Bigr\} \tag{3.16} \end{align} $$

 最適方策とは、価値が最大となる行動を選ぶ方策なので、$v_{*}(s)$が最大となる$a$を選びます。この計算をmax演算子で表現できます。ちなみに、max演算子$\max_a x$はnp.max(x)と同じ処理(計算)です(恐くないよ)。

・max演算子の役割

 ベルマン最適方程式で利用するmax演算子の役割を確認します。

 簡単な例として、$x$が3つの値$x_1, x_2, x_3$を取る場合を考えます。ちなみに、これを$x \in \{x_1, x_2, x_3\}$と表現します。
 $x$となる確率を$p(x)$、$x$のときの報酬を$r(x)$とすると、報酬の期待値$\mathbb{E}[r(x)]$は、次の式で定義されます。

$$ \mathbb{E}[r(x)] = \sum_x r(x) p(x) $$

 この期待値計算を具体的な値を使って考えてみます。

 報酬$r(x)$を次のように設定します。

$$ r(x) = \begin{cases} - 2 & (x = x_1) \\ 0 & (x = x_2) \\ 4 & (x = x_3) \end{cases} $$

 $x$の確率分布$p(x)$を次のように設定します。

$$ p(x) = \begin{cases} 0.2 & (x = x_1) \\ 0.3 & (x = x_2) \\ 0.5 & (x = x_3) \end{cases} $$

 $p(x)$を用いて報酬の期待値を計算します。

$$ \begin{aligned} \mathbb{E}[r(x)] &= \sum_{i=1}^3 r(x_i) p(x_i) \\ &= r(x_1) p(x_1) + r(x_2) p(x_2) + r(x_3) p(x_3) \\ &= - 2 * 0.2 + 0 * 0.3 + 4 * 0.5 \\ &= 1.6 \end{aligned} $$

 この値は、方策$p(x)$に従うときに見込まれる報酬と言えます。

 続いて、最適方策に相当する例を考えます。
 報酬が最大となる$x_3$の確率が1で、それ以外の$x_1, x_2$の確率が0の分布を、最適分布$p_{*}(x)$とします。

$$ p_{*}(x) = \begin{cases} 0 & (x = x_1) \\ 0 & (x = x_2) \\ 1 & (x = x_3) \end{cases} $$

 $p_{*}(x)$を用いて報酬の期待値を計算します。

$$ \begin{aligned} \mathbb{E}_{*}[r(x)] &= \sum_{i=1}^3 r(x_i) p_{*}(x_i) \\ &= r(x_1) * 0 + r(x_2) * 0 + r(x_3) * 1 \\ &= r(x_3) \\ &= 4 \end{aligned} $$

 先ほどと同じ計算ですが、報酬$r(x)$と最適分布$p(x)$を掛けて総和をとることで、最大の報酬$r(x_3)$を取り出している(最大の報酬以外を0にして影響しないようにしている)ことが分かります。

 この計算(報酬の最大値を取り出す操作)は、max演算子を使って再現できます。

$$ \begin{aligned} \max_x r(x) &= \max_x \{ r(x_1), r(x_2), r(x_3) \} \\ &= r(x_3) \\ &= 4 \end{aligned} $$

 つまり、最適な確率分布(報酬が最大となる確率が1でそれ以外の確率が0の分布)使って期待値を求める計算(対応する確率を掛けて総和を求める計算)は、報酬の最大値を取り出す操作でありmax演算子に置き換えられます。
 ベルマン最適方程式でも同じ操作を行っています。

3.4.2 Q関数におけるベルマン最適方程式

 続いて、行動価値関数(Q関数)についてベルマン最適方程式を確認します。

 「3.3.2:行動価値関数のベルマン方程式の導出【ゼロつく4のノート】 - からっぽのしょこ」で求めたQ関数のベルマン方程式は、次の式でした。

$$ 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} $$

 最適行動価値関数(最適方策による行動価値関数)を$q_{*}(s, a)$で表すと、Q関数のベルマン最適方程式は、次の式になります。

$$ \begin{align} q_{*}(s, a) &= \sum_{s'} p(s' | s, a) \left\{ r(s, a, s') + \gamma \sum_{a'} \pi_{*}(a' | s') q_{*}(s', a') \right\} \tag{3.17}\\ &= \sum_{s'} p(s' | s, a) \Bigl\{ r(s, a, s') + \gamma \max_{a'} q_{*}(s', a') \Bigr\} \tag{3.18} \end{align} $$

 先ほどと同様に、最適方策による計算をmax演算子に置き換えます。

 以上で、ベルマン最適方程式を確認しました。次節では、ベルマン最適方程式を利用してみます。

参考文献

おわりに

 これくらいじゃもう物足りなくなってきました。
 確率分布を掛けて総和を取る計算が、期待値を求めているのか、1つの要素を取り出しているのかを意識しておくと、これまでの内容もこれからの内容も理解しやすくなると思います。

【次節の内容】

www.anarchive-beta.com