OpenAIのgymインストール方法

 

ゲームボットや自動運転技術、自動化処理に役立つ Python ライブラリの gym。

公式ページ通りに作業してもインストールできなく、的確な情報がなかったため調査。

結果、 gym のインストール、 Taxiゲームの機械学習ができたのでご紹介。

 

<< 当方の作業環境 >>

Ubuntu 16.04 LTS
Anaconda 1.6.14
Jupyter notebook 5.0.0
Python 3.6.1

 

 

<< インストールしたいもの >>

OpenAI の gym

 

<< やりたいこと >>

ゲームを機械学習で遊ばせる、という体験

 

 

gymのインストール作業

ターミナル起動

■step1■

sudo apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig

 

■step2■

git clone https://github.com/openai/gym.git

 

■step3■

cd gym

 

■step4■

pip install -e ‘.[all]’

5分ほどかかる

 

■step5■
cd

 

■step6■

git clone https://github.com/openai/doom-py.git

 

■step7■

cd doom-py

 

■step8■

pip install -e .

 

■step9■

cd

 

■step10■

pip install cmake

 

■step11■

pip install vizdoom

10分ほどかかる

vizdoomは、AIボット用ライブラリ

 

■step12■

pip install ppaquette-gym-doom

 

以上で gym の実行環境構築完了。

 

 

gym を動かす場所(作業ディレクトリ)の確認

ちょっと詳しく調べられていませんが、デフォルトの状態では gym を動かす場所が決まっています。

gym の作業ディレクトリの確認は、

 

  1. ターミナル起動
  2. python
  3. import python
  4. gym.__file__

 

__init__.py と同じディレクトリで作業します。

 

 

gym を試す

公式ページに書かれている


import gym
env = gym.make(“Taxi-v1”)
observation = env.reset()
for _ in range(1000):
env.render()
action = env.action_space.sample() # your agent here (this takes random actions)
observation, reward, done, info = env.step(action)


これを Pythonファイルに保存しても、・・・動きません。

2行目の “Taxi-v1” を “Taxi-v2” にすると動きます。

しかしこれでは、ちょっとイメージしにくいですよね。

学習パターンによるスコア評価をもって、ゲームの機械学習、実感したいですね。

 

 

ゲームの機械学習をスコア化

ちょっと私のスキルでは難しかったので、 Thomas SIMONINI さんの動画を参考に指せて頂きました。

https://www.youtube.com/watch?v=q2ZOEFAaaI0

以下コピペ用に Jupyter notebook 用のコードをご紹介。

結果を確認したい方は、pdf をみて下さい。

Taxi-v2.pdf

 

 

<< Taxi-v2 スコア化のコード >>

■step1■

import numpy as np
import gym
import random

 

■step2■

env = gym.make(“Taxi-v2”)
env.render()

 

■step3■

action_size = env.action_space.n
print(“Action size”, action_size)

state_size = env.observation_space.n
print(“State size”, state_size)

 

■step4■

qtable = np.zeros((state_size, action_size))
print(qtable)

 

■step5■

total_episodes = 1000
total_test_episodes = 100
max_steps = 99

learning_rate = 0.8
gamma = 0.618

# Exploration parameters
epsilon = 1.0
max_epsilon = 1.0
min_epsilon = 0.01
decay_rate = 0.01

 

■step6■

for episode in range(total_episodes):
state = env.reset()
step = 0
done = False

for step in range(max_steps):

exp_exp_tradeoff = random.uniform(0,1)

if exp_exp_tradeoff > epsilon:
action = np.argmax(qtable[state,:])

else:
action = env.action_space.sample()

new_state, reward, done, info = env.step(action)

qtable[state, action] = qtable[state, action] + learning_rate * (reward + gamma * np.max(qtable[new_state, :]) – qtable[state, action])

state = new_state

if done == True:
break

episode += 1

epsilon = min_epsilon + (max_epsilon – min_epsilon)*np.exp(-decay_rate*episode)

 

■step7■

env.reset()
rewards = []

for episode in range(total_test_episodes):
state = env.reset()
step = 0
done = False
total_rewards = 0
print(“****************************************************”)
print(“EPISODE “, episode)

for step in range(max_steps):
env.render()

action = np.argmax(qtable[state,:])

new_state, reward, done, info = env.step(action)

total_rewards += reward

if done:
rewards.append(total_rewards)
print (“Score”, total_rewards)
break
state = new_state
env.close()
print (“Score over time: ” + str(sum(rewards)/total_test_episodes))

 

Score over time: 7.61

この数字が高くなるように学習内容を変えていくといいみたいですね。

ちょっと仮想通貨とは関係ないプログラムの紹介でしたが、 OpenAI の gym で困っておられる方の参考になればと思い情報整理させて頂きました。

 

 

<< 参考にしたページ >>

OpenAI gym 公式 https://gym.openai.com/

gym intstall 参考動画 https://www.youtube.com/watch?v=j7F4Qe42Eqc

Taxi-v2参考動画 https://www.youtube.com/watch?v=q2ZOEFAaaI0

 

 

Leave a Reply

will not be published

wp-puzzle.com logo