日記(5/11)
5/11
Coursera
強化学習に関しては全く未知よりの未知*1だったので学ぶことが多く新鮮.
環境構築ついでに興味のあったQ学習について調べてみた.
Q学習
以下,「車が坂を登る」ために人工知能が各時間にどのような行動を取ればよいかという問題を考える.
車は各フレームに右進,静止,左進のいずれかの行動を取ることができるものとする.
Q学習では,環境とエージェントというものを考える.エージェントは環境に応じて行動を起こす.また,エージェントはその行動と環境の情報からその行動の価値を出力する行動価値関数というものを持っており,エージェントは基本,この行動価値関数が最大であるような行動を取る.行動の価値は,環境からの報酬によって得られこの報酬を用いて更新される.
この行動⇨環境の変化⇨報酬⇨更新のプロセスを繰り返し,よりよい行動価値関数を得ることがQ学習の目的である.
この坂上りにおいて,環境は車の位置と速さであり,行動は前述のように右進,静止,左進であり,報酬はステップごとに-1である.また,位置と速さは離散値として扱いたいため最大値と最小値の間を40分割する.
以降の図において静止:0,左進:1,右進:2とする.
注:報酬情報を勘違いしていたので以降の図の報酬情報:0は間違いで-1が正しい(かも)
エージェントは(位置×速さ×行動)の3次元の配列に行動価値を保存する行動価値関数(Qテーブル)と,行動情報,環境情報,報酬情報を保持しているとする.まず,現在状態の位置,及び速さにおけるQテーブルを参照にし,取るべき行動を取得する.
取るべき行動に応じた環境からの応答は次フレームにおける位置,速さ,及び報酬である.
これらの行動によって得られた環境と報酬,及び行動前の環境の情報を用いてQテーブルの更新を行う.
Qテーブルの更新は移動前の環境情報を$s_0$,移動後を$s_1$とし,行動を$a$,報酬を$r$と置くと,
$$Q \left(s_0, a\right) \longleftarrow Q \left(s_0, a\right)+\alpha\left(r+\gamma\max_{a’}~{Q\left(s_1, a'\right)}- Q \left(s_0, a\right) \right)$$
のようにして更新される.
ただし,$\alpha$は学習率と呼ばれ,今回は$0.2$,$\gamma$は割引率と呼ばれ,今回は$0.99$とした.
このプロセスの繰り返しにより精度を高めていく.
ただし,この方法では局所解へと陥る可能性があるため,常に行動価値関数が最大の行動を取るのではなく,たまにランダムな方向へと移動するようにする.この方法のことは$\varepsilon-$グリーディ法と呼ばれる.
こちらにあるコードを参照にして実装を行った結果,20000エポックを経たあと,なんかめっちゃいい感じで坂を登っていた.すごい.
- 実験レポート
- Kaggle
- Coursera
- Ruby on Rails
- Blender
- AOJ-ICPC過去問
- 適度な運動
- 整った食習慣
- 質の良い睡眠
*1:JK流行語