WindowsでOpenAI Gymを使う

| Topic path: Top / 強化学習 / WindowsでOpenAI Gymを使う

*はじめに [#ia4c9bd4]

[[OpenAI Gym:http://gym.openai.com]] は、安全な人工汎用知能 (AGI) の研究を支援している非営利団体 [[OpenAI:https://openai.com]] が提供している強化学習ツールキットです。

OpenAI Gymのページには、Windowsへのインストール方法は載っていません。
また、Windowsへのインストール方法を解説しているページでは、Windows 10のWindows Subsystem for Linux (WSL)上にインストールする方法が多いです。

ここでは、WSLを使わずに、Anacondaを使ってWindows上にOpenAI Gymをインストールする方法を説明します。

Anacondaは機械学習のためのツールをまとめてインストールしてくれますが、Anacondaのパッケージ管理ツールのcondaがまだGymをサポートしていません。
Anacondaは機械学習のためのツールをまとめてインストールしてくれますが、Anacondaのパッケージ管理ツールのcondaのWindows版がまだGymをサポートしていません。

そこで、Anaconda上でPython標準のパッケージ管理ツールであるpipを使って、Gymをインストールします。

ただし、condaとpipは「混ぜるな危険!」ということらしいので、Anaconda上にGym用の環境を作成し、pipだけを使ってインストールします。

AnacondaのインストールとJupyter Notebookの使い方については、こちらで確認してください。
-[[Pythonでデータ分析するはじめの一歩(Windows編)>機械学習/Pythonでデータ分析するはじめの一歩(Windows編)]] - とうごろうぃき


この記事の内容は、以下の環境で確認しました。
-Windows 10 Home
-Anaconda 5.3 Python 3.7 version



*Gymのインストール [#k48032d9]

まず、Anaconda NavigatorのHome画面で「Environments」をクリックして、環境の一覧を開きます。
#ref(Anaconda_environments.png,nolink,50%)

「Create」をクリックして、新しい環境を作ります。
#ref(Anaconda_create.png,nolink,50%)

ここでは、新しい環境の名前を「gym」として、「Create」をクリックします。
#ref(Anaconda_new_environment.png,nolink,50%)

新しい環境ができたら、「Open Terminal」でターミナルを開きます。
#ref(Anaconda_open_terminal.png,nolink,50%)

ターミナルが開いたら、pipでGymをインストールします。
(Python 3とPython 2の両方がインストールされている場合は、pipの替わりにpip3を使用します。)
#geshi(sh){{
> pip install gym
}}


*Jupyter Notebookのインストール [#p916bc32]

Anaconda NavigatorのHomeに戻り、リストから新しく追加した環境「gym」を選択して、「Install」をクリックします。
#ref(Anaconda_jupyter_install.png,nolink,50%)


*Gymの動作確認 [#sfd49c48]

Anaconda NavigatorのHomeから、「gym」を選択して、「Launch」をクリックします。
#ref(Anaconda_jupyter_launch.png,nolink,50%)

Jupyter Notebookが起動し、ブラウザが開きます。

新しいNotebookを開いて、次のサンプルプログラムを打ち込み、実行します。
#geshi(python){{
import gym
env = gym.make('CartPole-v0')

for i_episode in range(20):
    observation = env.reset()  # 状態
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()  # 行動(一様選択) 0: 左、1: 右
        observation, reward, done, info = env.step(action)  # 行動を実行し、次の状態、報酬、終端状態かどうか、デバッグ用情報を受け取る
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break
}}

次のような画面が出てきて、ランダムな動きをしたらOKです。
#ref(Gym_cart_pole.png,nolink,50%)
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS