0Pricing
Learn AI with Python · レッスン

カスタム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 gym

gymnasium.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) position

resetメソッド

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, info

stepメソッド

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 方策勾配法:REINFORCE
  2. アクター・クリティック法(A2C)
  3. 近接方策最適化(PPO)
  4. カスタムGymnasium環境
← Learn AI with Pythonに戻る