Python(強化学習の試し05_Rewardの条件の変更)

■途中でRewardの条件を変える。
引き続き下の条件を使う。
・試行は100回。これを1エピソードとして、400エピソード実行。
・過去の試行3回分から強化学習。
今までは、試行の100回、エピソードの400回でずっと同じ条件でRewardを得ていた。0の次に1が来た場合、Rewardを1追加するというもの。

今回、試行の途中またはエピソードの途中で、「1、1、0」となった場合にRewardを1追加する条件に変える。

まず、試行の途中。
20回で「0,1」→「1,1,0」に変える。この場合、最大のRewardは、20回まで「0,1」で10、残る80回で「1,1,0」で26として、36くらいかな。エピソード横軸、Reward縦軸のグラフが下。

エピソード399、最終的なActionの履歴、Rewardが下の結果となった。最終的に「0,1,1」に収束しているようで、試行の途中で「0,1」→「1,1,0」となっているわけではない。


次に80回で「0,1」→「1,1,0」に変える。この場合、最大のRewardは、80回までで40、残る20回で6として、46くらい。

上と同じくエピソード399の結果が下。こちらは「0,1」になるよう学習されているよう。


過去の試行3回分では、どの試行回数のタイミングかの情報が無いので、試行回数によって行動を選び分けるといったことができないのではと思う。行動を選択するための環境に、例えば、前期、中期、後期のような考え方を入れればまた結果は変わるかもしれない。

次に、エピソードの途中で条件を変える。
エピソード200で「0,1」→「1,1,0」に変える。つまり、200までは「0,1」でRewardが得られ、それ以降は「1,1,0」でRewardが得られる。エピソード横軸、Reward縦軸のグラフが下。

200時点で急に条件が変わるので、今まで学習してきた内容ではRewardが得られない。その後にさらにエピソードを進める中で学習が進められている。ある環境でのQ値の更新の見ると、下のように行動の選択が逆転している。赤の数字が高いときは行動0、黄色の数字が高いときは行動1が選択される。


このサンプルでの試しはこのくらいかなー。次は迷路の行動選択とか考えてみたい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です