カスタムGymnasium環境
gym.Envのサブクラス化、観測・行動空間、step/reset/render、カスタム環境の登録について学習します。
「カスタムGymnasium環境」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
Gymnasiumとは
Gymnasium(OpenAI Gymを引き継いで保守されている後継プロジェクト)は、強化学習環境の標準APIです。このインターフェースに従うエージェントは、互換性のあるあらゆる環境で動作します。そのため、独自の環境を構築すれば、カスタム問題にも強化学習を適用できます。
pip install gymnasium
import gymnasium as gymgymnasium.Envのサブクラス化
カスタム環境はgymnasium.Envをサブクラス化し、4つの要素を実装します。行動空間と観測空間、そしてresetとstepです。この契約だけで、エージェントに必要なものがすべて揃います。
class GridWorld(gym.Env):
def __init__(self):
super().__init__()行動空間
action_spaceは、有効な行動を宣言します。Discrete(n)はn個の選択肢(例:上・下・左・右)を意味し、Boxはステアリングなどの行動に対する連続値の範囲を定義します。
self.action_space = gym.spaces.Discrete(4) # 4 moves観測空間
observation_spaceは、エージェントが認識する内容を記述します。Box空間によって観測ベクトルの形状と値の範囲を設定するため、アルゴリズムは入力の次元を把握できます。
self.observation_space = gym.spaces.Box(
low=0, high=10, shape=(2,), dtype=float
) # agent (x, y) positionresetメソッド
resetは新しいエピソードを開始し、タプル(observation, info)を返します。再現性を確保するためのseedを受け取ります。ここでは必ず初期観測を返してください。
def reset(self, seed=None, options=None):
super().reset(seed=seed)
self.pos = [0, 0]
obs = self._get_obs()
info = {}
return obs, infostepメソッド
step(action)は環境を1ステップ進めます。5つの値、(obs, reward, terminated, truncated, info)を返します。このシグネチャを正しく実装することは、互換性を確保するうえで不可欠です。
def step(self, action):
self._move(action)
obs = self._get_obs()
...terminatedとtruncated
2つのフラグは別々の意味を持ちます。terminatedはタスクが自然に終了したこと(目標を達成した、または失敗した)を示し、truncatedは途中で打ち切られたこと(例:制限時間に達した)を示します。分けて扱うことで、アルゴリズムはそれぞれを正しく処理できます。
terminated = (self.pos == self.goal)
truncated = (self.steps >= self.max_steps)
reward = 1.0 if terminated else -0.01
return obs, reward, terminated, truncated, {}報酬の設計
報酬関数は目標を定義します。慎重に設計してください。小さなステップペナルティに目標達成ボーナスを加えると、目標にすばやく到達することを促せます。不適切な報酬設計は、強化学習が失敗する最も一般的な原因です。
環境の登録
環境をIDとともに登録すると、gym.makeで作成できるようになります。これは組み込み環境の慣例に合わせた方法です。
gym.register(id="GridWorld-v0", entry_point=GridWorld)
env = gym.make("GridWorld-v0")エージェントとの連携
標準APIに従っているため、カスタム環境を追加の接着コードなしでStable-Baselines3などのライブラリにそのまま接続できます。
from stable_baselines3 import PPO
env = gym.make("GridWorld-v0")
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=50_000)標準的なインタラクションループ
強化学習のループはすべて同じ形になります。まずresetで最初の観測を取得し、その後、行動を繰り返し選択してstepを呼び出し、terminatedまたはtruncatedになったら停止します。この一貫性こそがGymnasiumの目的です。
obs, info = env.reset()
done = False
while not done:
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)
done = terminated or truncated理解度チェック
Gymnasiumについての理解度を確認しましょう。
まとめ:カスタムGymnasium環境
gymnasium.Envをサブクラス化し、action_spaceとobservation_spaceを定義し、reset()(obsとinfoを返す)およびstep()(obs、reward、terminated、truncated、infoを返す)を実装して、カスタム環境を構築しました。また、報酬の設計についても学びました。標準APIに従えば、どの強化学習ライブラリでもその環境を使って学習できます。
よくある質問
「カスタムGymnasium環境」レッスンは無料ですか?
はい。「カスタムGymnasium環境」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「カスタムGymnasium環境」で何を学びますか?
gym.Envのサブクラス化、観測・行動空間、step/reset/render、カスタム環境の登録について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「カスタムGymnasium環境」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 方策勾配法:REINFORCE
- アクター・クリティック法(A2C)
- 近接方策最適化(PPO)
- カスタムGymnasium環境