強化学習、マルチエージェント強化学習、その他機械学習全般

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

【強化学習、入門】Q学習、Q Learning

Q Learningとは、一言で言ってしまうと
行動価値(Q値)を遷移先の最大行動価値
を用いて更新する強化学習アルゴリズムの一種です。

Q Learningでは、 各状態において各行動を行った時に得られる期待報酬値(Q値)を保持しておく Qテーブルというテーブルを使います。
そして、このQテーブルを 以下のような手順を繰り返し行いQ値を更新(学習)していきます。

  1. 現在の状態 $s$である行動$a$の選択(ε-greedyなどを用いて)
  2. 実際に行動し、状態遷移し、遷移先の状態$s'$と報酬$r$の観測の観測
  3. 遷移先の状態$s'$と報酬$r$を元に、以下の式を用いてQ値($Q(s, a)$)を更新(学習)

$$ Q(s,a) \leftarrow Q(s,a) + \alpha(r + \gamma \max_{a' \in A}Q(s',a')-Q(s,a)) $$

$\max_{a' \in A}Q(s',a')$ は遷移先状態s'においての最大Q値、
$\alpha$は学習率、
$\gamma$は割引率 を表しています。

特徴的なのが遷移先の最大Q値を用いて、
遷移前のQ値を更新
するところです。

具体例(迷路問題)

迷路問題をQ Learningエージェントに解かせてみようと思います。
Q Learning エージェントの目的は最短経路を見つけることです。
もちろん人が上からこのマップを見れば、簡単にわかりますが、
エージェント自身は上から見えませんし、ゴールの座標もわかりません。
エージェントが観測できるのは、現在の自分の位置(状態)、その状態でもらえる報酬のみです。
エージェントは何回もスタート地点からゴールまで行ってみて、
少しづつQテーブルを更新していきます。
最終的には、スタート地点から最大のQ値の行動をひたすら選択すれば、
最も早く目的地に到達できるようになります。

ゴールにたどり着いたら、同じスタート地点にエージェントを戻し、
繰り返し迷路を解かせます。

スライドを用いて、どのように学習していくかを説明

問題設定

以下のようなマップを用いました。
エージェントはゴールのGまでにたどり着く最短ルートを学習することが目的になります。

f:id:ttt242242:20190329170151j:plain

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

プログラム

githubにあげました。

github.com

プログラムを実行するために、
まずクローンして、

git clone https://github.com/tocom242242/qlearning_sample.git

run_qlearning_sample.pyを実行してください

python run_qlearning_sample.py

実行結果

f:id:ttt242242:20190401155613j:plain

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