初Qiita
方策反復(方策改善と方策評価)についてちょっと理解が進んだので備忘録とMarkdown練習を兼ねてメモ.
方策ってなんぞや
方策 $\pi(a|s)$ は確率分布なので,今いる状態 $s$ と 今とれる行動 $a$ を投げると
その行動 $a$ が選ばれる確率を返してくれる関数だと思っとけば具合が良い気がする.
- 強化学習の目的
- どの状態でも最適な行動を提示してくれる,万能の最適方策 $\pi^*(a|s)$ を見つけること.
-
方策反復 は,その目的に対する手段
- 方策評価と方策改善を繰り返して,方策 $\pi(a|s)$ を最適方策に近づけていく.
方策反復
-
方策評価:方策を用いた再帰反復計算で価値関数を求めること.
- Q. なんで価値関数求めることが方策の評価になるんや?
A. そういうものだと得心せよ
- Q. なんで価値関数求めることが方策の評価になるんや?
-
方策改善:価値関数をもとに新たな方策を得る.
- ε-greedyとかSoftmaxとかの手法で,価値関数を方策に変換するイメージ
SARSAの流れ
- 今いる状態 $s_t$ を取得
- ε-greedyやSoftmaxなどの手法を用いて,価値関数をもとに新たな方策 $\pi(a|s)$ を得る(方策改善)
- 方策 $\pi(a|s)$ に今いる状態 $s_t$ を投げると取るべき行動 $a_t$ がわかる
- 行動 $a_t$ を取ると,状態が $s_t$ から $s_{t+1}$ に遷移し,即時報酬 $r$ が発生する
- SARSAの式にはもう一個先の行動 $a_{t+1}$ も必要なので,今度は方策 $\pi(a|s)$ に遷移先の状態 $s_{t+1}$ を投げて $a_{t+1}$ を得る
-
$s_t, a_t, r, s_{t+1}, a_{t+1}$ がそろったので,下のSARSAの更新式で行動価値関数 $Q(s_t,a_t)$ を求める(方策評価)
{ Q(s_t,a_t) \leftarrow Q(s_t,a_t) + α\{ r + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t,a_t) \} }
1.に戻る
Q学習の流れ
4.まではSARSAとおんなじ
- 今いる状態 $s_t$ を取得
- ε-greedyやSoftmaxなどの手法を用いて,価値関数をもとに新たな方策 $\pi(a|s)$ を得る(方策改善)
- 方策 $\pi(a|s)$ に今いる状態 $s_t$ を投げると取るべき行動 $a_t$ がわかる
- 行動 $a_t$ を取ると,状態が $s_t$ から $s_{t+1}$ に遷移し,即時報酬 $r$ が発生する
-
Q学習では $a_{t+1}$ は必要なく, $s_t, a_t, r, s_{t+1}$ がそろってるので,下のQ学習の更新式で行動価値関数 $Q(s_t,a_t)$ を求める(方策評価(?))
{ Q(s_t,a_t) \leftarrow Q(s_t,a_t) + α\{ r + \gamma \max_{a_i} Q(s_{t+1}, a_i) - Q(s_t,a_t) \} }
1.に戻る
何が違ったっけ
方策評価とは,方策を用いた 再帰反復計算で価値関数を求めることなのだった.
「SARSAの流れ」の 6. の方策評価では,$Q(s_t,a_t)$ を求めるために $a_{t+1}$ が必要だったので,
方策 $\pi(a|s)$ を使って $a_{t+1}$ を求めた.
要するに,価値関数を求めるために 方策を用いた(On-policy) ので,方策評価が行われたことになる.
- SARSAでは,未来の行動は現在の方策に則って選ばれると仮定している.
対して,
「Q学習の流れ」の 5. の方策評価(?)では, $a_t$ を求める必要がなかった.
すなわち,価値関数を求めるために 方策を用いていない(Off-policy) ので, 方策評価は行われていない ことになる.
- Q学習では,未来の行動は最善のものが選ばれると仮定している.
参考ページ
https://qiita.com/ABmushi/items/83a639506fcbc4050ce8
https://teratail.com/questions/126990