OpenAIGym
OpenAIGymは強化学習を効率良く行うことを目的として作られたプラットフォームです。
普通、ゲームを使って強化学習を行うとき、強化学習についての深い知識や経験だけでなく、ゲームに関しての深い知識や経験も必要になってきます。
OpenAIGymはこのゲームに関する部分を簡単に実装でき、必要なパラメータなどを使いやすい形で提供してくれるので、利用する側は強化学習のみに専念することができます。
#使い方
インストールしていない方は
pip install gym
でインストールしましょう。
import gym
env=gym.make("CartPole-v0")
for episode in range(20):
env.reset()
for t in range(100):
action=env.action_space.sample()
env.step(action)
env.render()
これがOpenAIGymの基本的な形になります。
env=gym.make("CartPole-v0")
この部分にゲーム名を入れることで、いろんなゲームの環境を構築できます。
env=gym.make("MountainCar-v0")
にすれば
別ゲームになります。
env.reset()
で環境がリセットされ、初期状態になります。
for t in range(100):
action=env.action_space.sample()
env.step(action)
env.render()
この部分では実際にゲームをプレイし、描画します。
action=env.action_space.sample()
はランダムな行動という意味です。CartPoleでは左(0)、右(1)の2つの行動だけなので、actionの値は0か1になります。
その後env.step(action)
で行動し、env.render()
で描画します。
#関数やパラメータ
env.step(action)
では実際に行動をしますが、そのとき以下のような4つのパラメータを返します。
1.observation(ゲームの状態)
2.reward(報酬)
3.done(終了判定)
4.info(デバッグなどの情報)
observation,reward,done,info=env.step(action)
とすることでそれらの値を取得できます。
import gym
env=gym.make("CartPole-v0")
for episode in range(20):
env.reset()
for t in range(100):
action=env.action_space.sample()
observation,reward,done,info=env.step(action)
env.render()
print("\nobservation=",observation)
print("\nreward=",reward)
print("\ndone=",done)
print("\ninfo=",info)
CartPoleでは、
observation=[カートの位置 カートの速度 ポールの角度 ポールの回転速度]、
棒が倒れているときreward=0でdone=True、棒が立っているときreward=1でdone=Falseとなります。