0Pricing
Learn AI with Python · Урок

Пользовательские среды Gymnasium

Подкласс gym.Env, пространства наблюдений и действий, step/reset/render, регистрация пользовательской среды

«Пользовательские среды Gymnasium» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Что такое Gymnasium?

Gymnasium, поддерживаемый преемник OpenAI Gym, — это стандартный программный интерфейс для сред RL. Любой агент, соответствующий его интерфейсу, работает с любой совместимой средой, поэтому создание собственной среды открывает возможность применять RL к нестандартным задачам.

pip install gymnasium

import gymnasium as gym

Наследование от gymnasium.Env

Пользовательская среда наследуется от gymnasium.Env и реализует четыре компонента: пространства действий и наблюдений, а также 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

Метод <code>reset</code>

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

Метод <code>step</code>

step(action) продвигает среду на один шаг. Он возвращает пять значений: (obs, reward, terminated, truncated, info). Правильная реализация этой сигнатуры необходима для совместимости.

def step(self, action):
    self._move(action)
    obs = self._get_obs()
    ...

terminated и truncated

Это два отдельных флага: 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, {}

Проектирование вознаграждения

Функция вознаграждения определяет цель. Тщательно настройте её: небольшой штраф за каждый шаг вместе с бонусом за достижение цели побуждает быстро добираться до неё. Неправильно спроектированное вознаграждение — самая распространённая причина неудач RL.

Регистрация среды

Зарегистрируйте среду с помощью ID, чтобы создавать её через gym.make, следуя соглашению, принятому для встроенных сред.

gym.register(id="GridWorld-v0", entry_point=GridWorld)
env = gym.make("GridWorld-v0")

Использование с агентом

Поскольку пользовательская среда соответствует стандартному программному интерфейсу, её можно напрямую подключить к библиотекам вроде Stable-Baselines3 без дополнительного связующего кода.

from stable_baselines3 import PPO

env = gym.make("GridWorld-v0")
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=50_000)

Стандартный цикл взаимодействия

Каждый цикл RL выглядит одинаково: выполните сброс, чтобы получить первое наблюдение, затем многократно выбирайте действие, вызывайте 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, а также спроектировав вознаграждение. Соблюдение стандартного программного интерфейса позволяет любой библиотеке RL обучаться в этой среде.

Часто задаваемые вопросы

Урок «Пользовательские среды Gymnasium» бесплатный?

Да — полный текст урока «Пользовательские среды Gymnasium» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Пользовательские среды Gymnasium»?

Подкласс gym.Env, пространства наблюдений и действий, step/reset/render, регистрация пользовательской среды Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Пользовательские среды Gymnasium»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Методы градиента политики: REINFORCE
  2. Методы Actor-Critic (A2C)
  3. Проксимальная оптимизация политики (PPO)
  4. Пользовательские среды Gymnasium
← Назад к Learn AI with Python