OpenAI Gym Retro 시작하기

 

Gym Retro는 게임에 대한 강화학습(reinforcement learning) 연구를 위한 플랫폼입니다. 약 70개의 Atari 게임과 30개의 Sega 게임등 다양한 지원 에뮬레이터를 통해 1,000개가 넘는 게임이 제공됩니다. 또한 플랫폼에 새로운 게임을 추가하는데 사용하는 도구도 있습니다.

Gym Retro는 지원되는 Python 버전 (3.5, 3.6 또는 3.7) 중 하나가 필요합니다. 미리 컴퓨터 운영체제(OS)에 맞는 파이썬 배포본을 설치하세요. 일부 코어와의 호환성 문제로 인해 32 비트 운영 체제는 지원되지 않습니다.

pip3 install gym-retro

Gym 환경 만들기

gym-retro 설치후에 파이썬에서 Gym 환경을 만들 수 있습니다.

import retro
env = retro.make(game='Airstriker-Genesis')

Airstriker-Genesis는 비상업적 ROM이 기본적으로 포함되어 있습니다.

다른 게임의 ROM은 포함되어 있지 않으므로 직접 구입해야 합니다. 대부분의 ROM 해시는 해당 No-Intro SHA-1 합계에서 제공됩니다. ROM을 Gym Retro로 가져 오기에 대한 정보는 ROM 가져오기를 참조하세요.

사용법 예

Gym Retro는 주로 고전 비디오 게임에서 강화학습(RL)을 훈련시키는 수단으로 유용하지만 파이썬에서 해당 비디오 게임을 제어하는 데에도 사용할 수 있습니다.

Gym Retro를 사용하는 몇 가지 방법은 다음과 같습니다.

인터렉티브 스크립트

Gym 인터페이스를 사용하여 게임과 상호 작용할 수있는 파이썬 스크립트가 있습니다. 터미널(리눅스) 또는 명령 프롬프트(윈도우)에서 다음과 같이 명령를 실행해 보세요. 새로운 윈도우창이 실행되면서 게임이 시작됩니다.

python3 -m retro.examples.interactive --game Airstriker-Genesis

키보드의 화살표키와 x키를 사용하여 우주선을 움직이고 총을 발사할 수 있습니다.  이 파이썬 스크립트는 Gym Retro Python API를 사용하여 환경을 시험해볼 수 있습니다. 확장 도구는 통합 UI를 확인하십시오.

랜덤 에이전트

각 타임 스텝에서 무작위 액션을 선택하는 랜덤 에이전트는 Gym의 랜덤 에이전트 예제와 매우 유사합니다.

import retro

def main():
    env = retro.make(game='Airstriker-Genesis')
    obs = env.reset()
    while True:
        obs, rew, done, info = env.step(env.action_space.sample())
        env.render()
        if done:
            obs = env.reset()
    env.close()


if __name__ == "__main__":
    main()

보다 완전한 기능을 갖춘 랜덤 에이전트 스크립트는 다음 예제에서 확인할 수 있습니다.

python3 -m retro.examples.random_agent --game Airstriker-Genesis

현재 보상을 출력하고 시나리오가 끝나면 종료됩니다. 해당 게임에 대해 보상이나 시나리오 데이터가 정의되어 있지 않으면 예외가 발생합니다. 이 스크립트는 시나리오가 올바르게 설정되어 있고 보상 기능이 너무 과대하지 않은지 확인하는 데 유용합니다.

*Getting Started