사용자 지정 Gymnasium 환경
gym.Env 서브클래스, 관찰 및 행동 공간, step/reset/render, 사용자 지정 환경 등록을 다룹니다.
사용자 지정 Gymnasium 환경은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
Gymnasium이란 무엇인가
Gymnasium(현재 유지 관리되는 OpenAI Gym의 후속작)은 RL 환경을 위한 표준 인터페이스입니다. 해당 인터페이스를 따르는 에이전트는 호환되는 모든 환경에서 작동하므로, 직접 환경을 만들면 사용자 정의 문제에도 RL을 적용할 수 있습니다.
pip install gymnasium
import gymnasium as gymgymnasium.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) 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)은 환경을 한 시간 단계만큼 진행합니다. 다섯 개의 값인 (obs, reward, terminated, truncated, info)를 반환합니다. 호환성을 위해 이 형식을 정확히 지키는 것이 필수적입니다.
def step(self, action):
self._move(action)
obs = self._get_obs()
...정상 종료와 강제 종료 비교
서로 구분되는 두 플래그가 있습니다. 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 반복문은 같은 형태입니다. 먼저 초기 관측을 얻기 위해 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 반환)을 구현하고 보상을 설계하여 사용자 정의 환경을 만들었습니다. 표준 인터페이스를 따르면 모든 RL 라이브러리에서 이 환경을 사용해 학습할 수 있습니다.
자주 묻는 질문
“사용자 지정 Gymnasium 환경” 강의는 무료인가요?
네 — “사용자 지정 Gymnasium 환경” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“사용자 지정 Gymnasium 환경”에서 뭘 배우나요?
gym.Env 서브클래스, 관찰 및 행동 공간, step/reset/render, 사용자 지정 환경 등록을 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 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 환경