はじめに
『ゼロから作る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