機械学習、強化学習の調査録

機械学習関連のことをまとめていきます。強化学習関連が多いかもしれません

【強化学習】SARSA

SARSAとは

sarsaは強化学習の一種で、Q値を以下の式で更新します。

$$ \begin{eqnarray} Q(s, a) \leftarrow Q(s, a) + \alpha (r + \gamma Q(s', a') - Q(s, a)) \end{eqnarray} $$

$Q(s, a)$の更新量は、遷移先状態でどのような行動を取るかで決定します。
つまり、$Q(s, a)$は遷移先状態$s'$でとる行動$a'$ を決定した後に更新します。
$Q(s, a)$の更新時に$\langle s, a, r, s', a' \rangle$ を用いるのでSARSAと呼ばれます。

評価用問題

下記の書籍ある問題を用います。

ここでは、シンプルな問題とするために
以下のような風がないシンプルな10x7のグリッドワールドを用います。

f:id:ttt242242:20190329170151j:plain

今回は風がないので、単純にひたすら右を選択し続けるのが、
最適戦略になります。

行動は左、上、右、下、
状態は座標、
報酬はゴールは+100、それ以外は-1になります。

プログラム

githubにあげておきます。

github.com

githubからクローンして、
以下のコマンドで実行できます。

python run_sarsa_gridworld.py

結果

探索率$\epsilon=0.01$、学習率$\alpha=0.2$、割引率$\gamma=0.99$ で固定です。
以下が実験結果になります。

f:id:ttt242242:20190329170548j:plain

横軸がエピソード、縦軸が累積報酬になります。
エピソードが進むにつれて累積報酬が高くなっていることがわかります。
学習が進むに連れてより良いルートが学習していることがわかります。