からっぽのしょこ

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

3.5.2:最適方策【ゼロつく4のノート】

はじめに

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

 この記事は、3.5.2節の内容です。最適方策の定義を確認します。

【前節の内容】

www.anarchive-beta.com

【他の記事一覧】

www.anarchive-beta.com

【この記事の内容】

3.5.2 最適方策

 最適な方策を考えます。

・最適方策の定義

 まずは、最適方策の定義式を確認します。

 最適な方策では、価値が最大となる(1つの)行動を選ぶので、確率論的方策(確率分布)$\pi_{*}(a | s)$ではなく、決定論的方策(関数)$a = \mu_{*}(s)$になります(2.2.3項)。また、ベルマン最適方程式では、価値が最大となる「値を得る」ためにmax演算子を使いました(3.4節)。最適方策では、価値が最大となる「行動(引数)を得る」ためにargmax演算子を使います。
 よって、$\mu_{*}(s)$は、最適行動価値関数(行動価値が最大となる行動価値関数)$q_{*}(s, a)$を用いて、次の式になります。

$$ \mu_{*}(s) = \mathop{\mathrm{argmax}}\limits_a q_{*}(s, a) \tag{3.20} $$

 ちなみに、$\mathrm{argmax}_x x$は、np.argmax(x)と同じ役割です(恐くないよ)。

 3.3.2項で求めた行動価値関数(3.13)より、最適行動価値関数

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

で置き換えます。

$$ \mu_{*}(s) = \mathop{\mathrm{argmax}}\limits_a \sum_{s'} p(s' | s, a) \Bigl\{ r(s', a, s) + \gamma v_{*}(s') \Bigr\} \tag{3.21} $$

 「次の状態$s'$の最適状態価値関数$q_{*}(s')$」により「最適方策$\mu_{*}(s)$」が得られることが分かります。

・最適方策の計算

 最適方策(3.21)に具体的な値を代入して、最適方策を求めます。3.5.1項と同様に、2マスのグリッドワールド(図3-7)を考えます。問題設定については「3.2.1:状態価値関数のベルマン方程式の例【ゼロつく4のノート】 - からっぽのしょこ」を参照してください。

 この例では、決定論的に状態が遷移するので、最適方策は、次の式になります。

$$ \mu_{*}(s) = \mathop{\mathrm{argmax}}\limits_a \Bigl\{ r(s', a, s) + \gamma v_{*}(s') \Bigr\} \tag{3.21} $$

 また、「3.5.1:ベルマン最適方程式の適用【ゼロつく4のノート】 - からっぽのしょこ」で求めたこの例の最適状態価値は

$$ \begin{cases} v_{*}(L1) = 5.26316 \\ v_{*}(L2) = 4.73684 \end{cases} $$

です。

 割引率を$\gamma = 0.9$として、初期状態$s$がL1の場合を考えます。行動$a$がLeftのとき次の状態$s'$がL1、行動$a$がRightのとき次の状態$s'$がL2になるので、次のようになります。

$$ \begin{aligned} \mu_{*}(s = L1) &= \mathop{\mathrm{argmax}}\limits_a \left\{ \begin{matrix} r(s' = L1, a = \mathrm{Left}, s = L1) + 0.9 v_{*}(s' = L1) \\ r(s' = L2, a = \mathrm{Right}, s = L1) + 0.9 v_{*}(s' = L2) \end{matrix} \right\} \\ &= \mathop{\mathrm{argmax}}\limits_a \left\{ \begin{matrix} - 1 + 0.9 * 5.26 \\ 1 + 0.9 * 4.73 \end{matrix} \right\} \\ &= \mathop{\mathrm{argmax}}\limits_a \left\{ \begin{matrix} 3.734 \\ 5.257 \end{matrix} \right\} \\ &= \mathrm{Right} \end{aligned} $$

 同様に、$s = L2$の場合を考えます。$a = \mathrm{Left}$のとき$s' = L1$、$a = \mathrm{Right}$のとき$s' = L2$なので、次のようになります。

$$ \begin{aligned} \mu_{*}(s = L2) &= \mathop{\mathrm{argmax}}\limits_a \left\{ \begin{matrix} r(s' = L1, a = \mathrm{Left}, s = L2) + 0.9 v_{*}(s' = L1) \\ r(s' = L2, a = \mathrm{Right}, s = L2) + 0.9 v_{*}(s' = L2) \end{matrix} \right\} \\ &= \mathop{\mathrm{argmax}}\limits_a \left\{ \begin{matrix} 0.9 * 5.26 \\ - 1 + 0.9 * 4.73 \end{matrix} \right\} \\ &= \mathop{\mathrm{argmax}}\limits_a \left\{ \begin{matrix} 4.734 \\ 3.257 \end{matrix} \right\} \\ &= \mathrm{Left} \end{aligned} $$

 最適方策が得られました。

 この章では、MDPで行う計算について確認しました。次章では、最適方策を得るためのアルゴリズムを確認します。

参考文献


おわりに

 これで3章終了です!お疲れ様でしたー。2章から数式たっぷりで大変でしたね。4章はどうなんでしょうか、これから読みます。

 投稿日前日に公開された新MVをどうぞ!

 早く世間に見つかってほしいなぁ。

【次節の内容】

www.anarchive-beta.com