概要
本記事では、強化学習のシミュレーション環境である「Gymnasium」をGoogle Colaboratory上で実装する方法について記載しました。
私はPythonを伴う勉強の際、Google Colabが手軽で個人的には好きなのですが、gymnasiumに関してはGoogle Colabでの実装例が少なく感じました。
また、Google Colabにおけるgymnasiumの出力結果の描画に少し手間取ったという点もあり、本記事を執筆しました。
似たような方々の参考になれば幸いです。
Google Colaboratoryの利点
Google Colaboratoryは、ブラウザから直接Pythonを実行できるサービスです。
動作はJupyter Notebookに似ています。
anacondaなど自力で実行環境を構築せずともPythonコードを実行でき、GPUを無料で利用できるため、パパっと動作を確認したいときや、機械学習関連のコードを共有したときなどに便利です。
Gymnasiumとは
Gymnasiumとは、すべての単一エージェントの強化学習環境にAPIを提供するプロジェクトであり、cartpole、pendulum、mountain-car、mujoco、atari などの一般的な環境の実装が含まれています。
一般的に、強化学習で利用する環境は、OpenAI Gymがよく使用されていました。しかし、下記の通り2021年にGymはGymnasiumに移行しました。
そのため、現在は下記ドキュメンテーションを参照しながら強化学習環境を構築するのが良いと思います。
今回は、「gymnasium」の中でも特に「Box2D」の環境について記載します。
「Box2D」は、以下の3つのトイゲームをカバーしています。
環境(出力の描画まで)の実装
それでは、実装についてみていきます。
Box2Dのインストール
!pip install swig
!pip install gymnasium[box2d]
私はそもそもこのインストールで少し手間取りました。。
以下にエラー解決につながったissueを貼っておきますので、エラーが起きる方はご参照ください。
出力結果の描画
出力の描画については、以下の記事を参考にさせていただきました。
これに倣い、Gym-Notebook-Wrapperライブラリを利用させていただきます。
# Gym-Notebook-Wrapperのインストール
!apt update && apt install xvfb
!pip install gym-notebook-wrapper
今回は「Car Racing」を実装していますが、env
設定の部分を変えればほかの環境も実装できます。
また、ポリシーはランダムで設定しています。
import gnwrapper
import gym
env = gnwrapper.Monitor(gym.make('CarRacing-v2'),directory="./") # 環境の作成
observation = env.reset()
for _ in range(1000):
observation, reward, done, info = env.step(env.action_space.sample()) # ポリシーを記述
if done:
env.reset()
env.display() # 描画データの表示
これをベースに強化学習や深層強化学習を実装していく流れになるかと思います。
おわりに
今回は、Q学習やDQNについての実装には至りませんでしたので、そちらはまた今度実装したいと思います。
(個人的には「Car Racing」が面白そうなので、そちらに取り組みたいです。)