GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

openai

gym – 強化学習アルゴリズムを開発して比較するためのツールキット

投稿日:

強化学習アルゴリズムを開発して比較するためのツールキット。 https://gym.openai.com/

OpenAIジム

OpenAI Gymは、強化学習アルゴリズムの開発と比較のためのツールキットです。 これはgymオープンソースライブラリで、標準化された環境にアクセスできます。

下記の新機能のセクションをご覧ください

gymはあなたのエージェントの構造について何の前提もなく、TensorFlowやTheanoなどの数値計算ライブラリと互換性があります。 あなたはPythonコードから、そしてすぐに他の言語から使用することができます。

どこから始めたらよいかわからない場合は、当サイトのドキュメントから始めることをお勧めします。 FAQも参照してください

OpenAI Gymのホワイトペーパーは、 http: //arxiv.org/abs/1606.01540で入手できます。ここには、出版物に引用するために使用できるBibTeXエントリがあります。

@misc{1606.01540,
  Author = {Greg Brockman and Vicki Cheung and Ludwig Pettersson and Jonas Schneider and John Schulman and Jie Tang and Wojciech Zaremba},
  Title = {OpenAI Gym},
  Year = {2016},
  Eprint = {arXiv:1606.01540},
}

基本

強化学習には、環境(外界)とエージェント(つまり、あなたが書いているアルゴリズム)という2つの基本概念があります。 エージェントは行動を環境に送信し、環境は観測と報酬(つまりスコア)で応答します。

コアジムインタフェースは、統一された環境インタフェースであるEnvです。 エージェントのためのインタフェースはありません。 その部分はあなたに残されています。 以下は、知っておくべきEnvメソッドです:

  • reset(self):環境の状態をリセットします。 観測値を返します。
  • ステップ(自己、アクション):環境を1タイムステップだけステップします。 観測、報酬、完了、情報を返します。
  • render(self、mode = ‘human’、close = False):環境の1つのフレームをレンダリングします。 デフォルトのモードでは、ウィンドウをポップアップするなど、人にやさしい操作を行います。 クローズフラグを渡すと、レンダラーはそのようなウィンドウを閉じるように通知します。

インストール

あなたはgym最小限のインストールを実行することができます:

git clone https://github.com/openai/gym.git
cd gym
pip install -e .

必要に応じて、PyPIからパッケージ版の最小限のインストールを行うことができます:

pip install gym

すぐにいくつかの環境を実行することができます:

  • アルゴリズム的
  • toy_text
  • classic_control(レンダリングするにはpygletが必要です)

最初にこれらの環境で遊んでから、後で残りの環境の依存関係をインストールすることをお勧めします。

すべてをインストールする

完全な環境をインストールするには、いくつかのシステムパッケージをインストールする必要があります。 ここでは時間をかけてリストを作成します。 あなたのプラットフォームにインストールされるものを教えてください。

OSXの場合:

brew install cmake boost boost-python sdl2 swig wget

Ubuntu 14.04で:

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

MuJoCoは私たちがあなたに設定できない独自の依存関係を持っています。 mujoco-pyパッケージの指示に従ってください。

すべてをインストールする準備ができたら、 pip install -e '.[all]' (またはpip install 'gym[all]' )を実行します。

サポートされるシステム

現在、Python 2.7または3.5を実行しているLinuxおよびOS Xをサポートしています。 OSX + Python3上のユーザーの中には、実行する必要があるものがあります

brew install boost-python --with-python3

Python以外の言語からGymにアクセスする場合は、OpenAI Gym HTTP APIを使用して、lua / Torchなどの非Pythonフレームワークのサポートが制限されています

ピップバージョン

pip install -e '.[all]'を実行するには、半近似pipが必要です。 あなたのピップがバージョン1.5.0以上であることを確認してください。 以下を使用してアップグレードできます: pip install --ignore-installed pip あるいは、 setup.pyを開いて依存関係を手動でインストールすることもできます。

サーバー上でのレンダリング

サーバー上でビデオをレンダリングしようとしている場合は、偽のディスプレイに接続する必要があります。 これを行う最も簡単な方法は、 xvfb-run (Ubuntuの場合はxvfbパッケージをインストール)で実行することxvfb

xvfb-run -s "-screen 0 1400x900x24" bash

特定の環境の依存関係のインストール

特定の環境のみに依存関係をインストールする場合は、 setup.pyを参照してください。 我々は、環境グループごとの依存関係のリストを維持しています。

環境

各環境グループのコードは、独自のサブディレクトリgym / envsに格納されています。 各タスクの仕様は、 gym / envs / __ init__.pyにあります。 両方をブラウジングする価値があります。

アルゴリズム

これらは、シーケンスをコピーするための学習など、さまざまなアルゴリズムタスクです。

import gym
env = gym.make('Copy-v0')
env.reset()
env.render()

アタリ

Atari環境は、さまざまなAtariビデオゲームです。 完全インストールをしなかった場合は、 pip install -e '.[atari]'cmakeインストールされている必要があります)を使って依存関係をインストールし、

import gym
env = gym.make('SpaceInvaders-v0')
env.reset()
env.render()

これにより、 Arcade Learning Environmentを自動的にコンパイルするatari-pyがインストールされます。 これはかなりの時間がかかります(まともなラップトップでは数分かかるので)。

Box2d

Box2dは2D物理エンジンです。 pip install -e '.[box2d]'を実行してインストールしてから、次のようにして起動できます:

import gym
env = gym.make('LunarLander-v2')
env.reset()
env.render()

クラシックコントロール

これらは、典型的な強化学習の教科書に現れる様々な古典的な制御タスクである。 完全インストールをしていない場合は、 pip install -e '.[classic_control]'を実行してレンダリングを有効にする必要があります。 あなたはそれらを使って始めることができます:

import gym
env = gym.make('CartPole-v0')
env.reset()
env.render()

MuJoCo

MuJoCoは、連絡先との非常に詳細な効率的なシミュレーションを実行できる物理エンジンです。 オープンソースではないので、設定するにはmujoco-pyの指示に従わなければなりません。 フルインストールをしなかった場合は、 pip install -e '.[mujoco]'も実行pip install -e '.[mujoco]'必要があります。

import gym
env = gym.make('Humanoid-v2')
env.reset()
env.render()

ロボット工学

MuJoCoは接触で非常に詳細な効率的なシミュレーションを行うことができる物理エンジンであり、すべてのロボット環境で使用します。 オープンソースではないので、設定するにはmujoco-pyの指示に従わなければなりません。 pip install -e '.[robotics]'実行しなければならないでしょう。

import gym
env = gym.make('HandManipulateBlock-v0')
env.reset()
env.render()

付随する技術レポートブログ記事で詳細を確認することもできます。 これらの環境を使用する場合は、次のように引用できます。

@misc{1802.09464,
  Author = {Matthias Plappert and Marcin Andrychowicz and Alex Ray and Bob McGrew and Bowen Baker and Glenn Powell and Jonas Schneider and Josh Tobin and Maciek Chociej and Peter Welinder and Vikash Kumar and Wojciech Zaremba},
  Title = {Multi-Goal Reinforcement Learning: Challenging Robotics Environments and Request for Research},
  Year = {2018},
  Eprint = {arXiv:1802.09464},
}

おもちゃのテキスト

テキストベースの玩具環境。 余計な依存関係はありません。開始するには、次のようにします。

import gym
env = gym.make('FrozenLake-v0')
env.reset()
env.render()

examplesディレクトリを参照してください。

テスト

私たちはテストのためにpytestを使用しています。 あなたはそれらを介して実行することができます:

pytest

新着情報

  • 2018-02-28:一連の新しいロボット環境のリリース。

  • 2018-01-25:審美的な改良を施し、メンテナンスをしていないジムを取り外しました。 これは機能のダウングレードのように思えるかもしれませんが、実際には、来月にリリースされるいくつかの素晴らしい新機能に備えて、長く必要なクリーンアップです。

    • EnvとWrapperのサブクラスでは、メソッド名を強調表示するのではなく、step、reset、render、close、seedを定義する必要があります。
    • OpenAIで私たちによって維持管理されていないため、board_game、debugging、safety、parameter_tuning環境は削除されました。 作成者とユーザーは、これらの環境用に新しいリポジトリを作成することをお勧めします。
    • MultiDiscreteアクション空間を[a、…、b-1]ではなく[0、…、n-1]の範囲に変更しました。
    • もうレンダリングしない(close = True)、env固有のメソッドを使用してレンダリングを閉じます。
    • サイトがもう存在しないため、スコアボードディレクトリは削除されました。
    • ジム/監視をジム/ラッパー/監視に移動
    • Spaceにdtypeを追加します。
    • Pythonの組み込みモジュールをもう使用しないで、gym.loggerを使用する
  • 2018-01-24:すべての連続制御環境でmujoco_py> = 1.50が使用されるようになりました。 バージョンが-v2に応じて更新されました。たとえばHalfCheetah-v2です。 パフォーマンスは似ているはずです( https://github.com/openai/gym/pull/834を参照)が、MuJoCoの変更によっていくつかの違いが生じる可能性があります。

  • 2017-06-16:env.specを、未登録のEnvを印刷しようとしたときに発生するバグを修正するためのプロパティにします。

  • 2017-05-13:バックワード不一致:Atari環境は現在v4です。 古いv3環境を使い続けるには、ジム<= 0.8.2とatari-py <= 0.0.21を維持します。 違いはわずかですが、v4環境では既存のv3結果と同じ結果が得られないことに注意してください。 v4環境では、いくつかのROM修正を含む最新のArcade Learning Environment(ALE)が組み込まれ、エミュレータ状態の読み込みと保存が処理されます。 種はまだ確定性を保証しますが、ALEの乱数生成器が変更されているため、この種の種子の効果はこのアップグレードでは保持されません。 * NoFrameSkip-v4環境は今から標準的なAtari環境と見なすべきです。

  • 2017-03-05:バックワード不一致:configureメソッドがEnvから削除されました。 configureはジムでは使用されていませんでしたが、ユニバースを含むいくつかの依存ライブラリで使用されていました。 これらのライブラリは、代わりにラッパーを使用してconfigureメソッドから移行します。 この変更はマスターで行われ、0.8.0でリリースされます。

  • 2016-12-27:後方互換性:ジムモニターがラッパーになりました。 env.monitor.start(ディレクトリ)として監視を開始するのではなく、env = wrappers.Monitor(env、directory)となります。 この変更はマスター上で行われ、0.7.0でリリースされます。

  • 2016年11月1日:実行中のモニターと環境とのやりとりに関する実験的な変更。 envがdone = Trueを返していないときにreset()が呼び出された場合、モニターはエラーを発生させるようになりました。 モニターは、完了= Trueの完全なエピソードのみを記録します。 最後に、モニターは、基礎となるenvのseed()を呼び出さなくなり、シード情報を記録またはアップロードしません。

  • 2016年10月31日:実験的に環境ID形式を拡張して、オプションのユーザー名を追加しました。

  • 2016-09-21:ジムの自動ロガー設定を切り替えて、 ‘ジム’ロガーだけでなくルートロガーを設定します。

  • 2016-08-17:envでcloseを呼び出すと、モニタとレンダリングウィンドウも閉じます。

  • 2016-08-17:write_upon_reset = Trueが渡されない限り、モニタはマニフェストファイルをリアルタイムで書き込まなくなりました。

  • 2016-05-28:制御された再現性のために、envsがシーディングをサポートするようになりました(cf#91および#135)。 モニターは、どのシードが使用されているかを記録します。 我々はすぐにスコアボード上のディスプレイにシード情報を追加します。







-openai

執筆者: