強化学習とは
強化学習とは、エージェントが環境の状態に応じてどのように行動すれば報酬を多くもらえるかを求める手法です。
学習データなしに自身の試行錯誤のみで学習するのが特徴になります。
効率のいい学習アルゴリズムは日々進化・公開されており、それを理解するよりもうまく使いこなす方が重要ではないかと感じております。
(アルゴリズムを理解するために必要な呪文のような数式に挫折したという理由もあります😥)
学習アルゴリズムを使いこなすために、独自の学習環境・・・つまりカスタム環境をいろいろと作成できるようなったほうがよいのではないかと思い今回の記事を書くことにしました。
(環境構築等は省略します)
カスタムGym環境作成
今回は2次元マップを独自で作成し、スタート地点からゴール地点までたどり着く環境を作成してみます。
できるだけ単純なマップとするために、移動可能な平地と移動できない山だけを並べてみました。
[ソース]
1 | # activate openai_gym |
ランダム実行
上記で作成したカスタム環境を読み込み、ランダムで実行してみます。
[ソース]
1 | import gym |
結果は次のように表示されます。
星マーク(☆)が移動するプレイヤーを現しています。
[結果(1部略)]
☆ 山 山G 山 山 reward: -1 total_reward -1 ----------- ☆ 山 山G 山 山 reward: -1 total_reward -2 ----------- S☆山 山G 山 山 reward: -1 total_reward -3 ----------- S☆山 山G 山 山 reward: -1 total_reward -4 ----------- S☆山 山G 山 山 reward: -1 total_reward -5 ----------- ☆ 山 山G 山 山 reward: -1 total_reward -6 ----------- S 山 ☆山G 山 山 reward: -1 total_reward -7 ----------- (略) ----------- S 山☆ 山G 山 山 reward: -1 total_reward -146 ----------- S 山 山G☆ 山 山 reward: -1 total_reward -147 ----------- S 山☆ 山G 山 山 reward: -1 total_reward -148 ----------- S 山☆ 山G 山 山 reward: -1 total_reward -149 ----------- S 山☆ 山G 山 山 reward: -1 total_reward -150 ----------- S 山 山G☆ 山 山 reward: -1 total_reward -151 ----------- S 山 山☆ 山 山 reward: 100 total_reward -51 ----------- done
ランダムでプレイヤーを移動させるので、結果は毎回変わりますがトータル報酬(total_reward)は-450~70の範囲でした。
次回はStable BaselinesのPPO2アルゴリズムを使って、強化学習を行ってみます。