見出し画像

OpenAI Gym入門 / OpenAI Gymの概要

1. OpenAI Gym

OpenAI Gym」は、非営利団体である「OpenAI」が提供している強化学習用のツールキットです。
強化学習の「エージェント」と「環境」の共通インタフェースを提供している他、強化学習のタスクの学習に利用できるさまざまな「環境」が用意されています。

2. OpenAI Gymの特徴

OpenAI Gymの特徴は次の通りです。

◎シンプルな環境インタフェース
OpenAI Gymは、「環境」に対するシンプルなPythonインターフェースを提供します。具体的にはステップ毎に、入力として「環境」に「行動」を渡すことで、出力として「観察」「報酬」「エピソード完了」「情報」を返します。
これによって、「環境」に対して利用できる「学習アルゴリズム」の制約をなくしています。

◎比較可能性
特定の「環境」における学習アルゴリズムのパフォーマンスを、別の学習アルゴリズムと比較することができます。
例えば、Atariゲームで平均1,000のスコアを獲得するエージェントの方が、平均100のスコアを獲得するエージェントよりもパフォーマンスが良いことがわかります。

◎再現性
「環境」が少しでも変更されてしまうと、この比較は不公平なものになってしまいます。そのため、OpenAI Gymでは環境に対して厳密なバージョン管理を行っています。「環境」に少しでも変更があったら、環境名のバージョン番号を変更します。
例えば、「SpaceInvaders-v0」という名前の環境に少しでも変更があったら、「SpaceInvaders-v1」という名前に変更されます。このシンプルなバージョン管理により、常に同じ「環境」でパフォーマンスを比較できるようにしています。

◎進捗状況の監視
OpenAI Gymの一機能として、利用可能なすべての「環境」は「Monitor」という機能を備えています。「Monitor」は、シミュレーションのステップ毎および環境リセット毎にログを記録します。これによって、エージェントがどのよう学習し適応しているかを追跡することができます。エージェントのプレイの様子を動画で保存するように「Monitor」に設定することもできます。

3. OpenAI Gymの環境の種類

OpenAI Gymがどのような「環境」を提供しているかは、「OpenAI Gym」のサイトで参照できます。

画像1

◎Algorithmic
複数桁の数字の追加、入力シーケンスからのデータのコピー、シーケンスの反転などの、計算タスクを提供します。

画像2

◎Atari
Atariゲームのスコアを競うタスクを提供しています。学習するための入力としてゲームの画面イメージまたはRAMを提供します。

画像3

◎Box2D
オープンソースな2Dの物理エンジン「Box2D」で開発された、いくつかの連続的な制御タスクを提供します。二足歩行ロボット、月着陸船、レースカーなどの環境が含まれています。

画像4

◎Classic control
初期の強化学習アルゴリズムの開発のベンチマークとして使われてきた古典的なタスクを提供します。CartPoleやMountain Carなどの環境が含まれます。

画像5

◎MuJoCo
3Dの物理エンジン「MuJoCo」で開発された、いくつかの連続的な制御タスクを提供します。
2足歩行のロボットの歩行、走行、水泳などのタスクが含まれます。
ロボット工学の強化学習環境のデファクトですが、ライセンス料が必要になります。

画像6

◎Roboschool
「Roboschool」は、OpenAIが提供しているOSSのMuJoCoライクなロボットタスクを提供します。MuJoCoと違いライセンス料はありません。MuJoCo環境に近い8つの環境と、それ以外のいくつかの新しく挑戦的な環境を提供します。

画像7

◎Robot
FetchおよびShadowHandロボットの目標ベースのタスクを提供します。MuJoCoを使ってるので、ライセンス料をが必要です。

画像8

◎Toy Text
単純なテキストベースの古典的タスクを提供します。「Frozen Lake」などの環境が含まれます。

画像9

4. MuJoCoのライセンス料

MuJoCoは一般は30日間、学生は1年間無料で利用でき、その後は年間$500のライセンス料が必要になります。MuJoCoのセットアップ方法は次の通りです。

(1)以下のURLから自分のプラットフォーム(Linux or Mac)用のMuJoCoをダウンロード。
https://www.roboti.us/license.html

(2)以下のURLからMuJoCo Proのライセンスを取得し設定。
https://www.roboti.us/license.html

5. OpenAI Gymのシステムパッケージのインストール

はじめに、「OpenAI Gym」の動作に必要なシステムパッケージをインストールします。

【macOS】

$ brew install cmake boost boost-python sdl2 swig wget

【Ubuntu】

$ 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

6. OpenAI Gymのインストール

「OpenAI Gym」はPythonパッケージで、pipでインストールすることができます。Anacondaなどで仮想環境を作成した後、以下のコマンドを入力してください。

pip install gym

これによって、以下の3カテゴリの「環境」が使えるようになります。
・Algorithmic
・Toy text
・Classic control

以下のコードで動作確認できます。OpenAI Gym環境「MountainCar-v0」を生成し、ランダム行動を行うコードです。

#!/usr/bin/env python
import gym

# 環境の生成
env = gym.make("MountainCar-v0")
env.reset()

# ランダム行動
for _ in range(2000):
   env.render()
   env.step(env.action_space.sample())

画像10

7. その他のOpenAI Gym環境の利用

この状態では、まだ全てのOpenAI Gymが提供している「環境」を利用できるわけではありません。

OSに応じて以下の依存関係をインストールします。

◎Mac

brew install cmake boost boost-python sdl2 swig wget

そして利用する「環境」に応じて以下のパッケージをインストールします。

◎Atari

pip install 'gym[atari]'

◎Box2D

pip install 'gym[box2d]'

◎MuJoCo (MuJoCoライセンス必要)

pip install 'gym[mujoco]'

◎Robotics (MuJoCoライセンス必要)

pip install 'gym[robotics]'

◎Roboschool
Roboschoolのサイト参照。 


この記事が気に入ったらサポートをしてみませんか?