openai gym을 사용하여 강화학습(reinforcement learning) 환경 만들기

강화 학습 알고리즘 공부를 위해 미리 openai gym을 사용하여 환경을 만들어 보았다. 

[openai gym 설치]

- 'anaconda tensorflow-gpu 및 gym 설치' 포스트를 참조.
- 만약 위 설치 포스트로 부족하면  How to Install OpenAI Gym in a Windows Environment  참조

[Space Invaders 게임 환경]

import gym
import time # sleep(초) 사용을 위해

env = gym.make("SpaceInvaders-v0")
num_actions = env.action_space.n

for episode in range(10):
    observation = env.reset()

    for step in range(100000):
        env.render()
        time.sleep(0.01) # 화면 표시 딜레이를 위해

        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)

        if(done):
            print('episode ',episode,' finished after ',step+1,'steps')
            break

env.close()

  • 게임 환경은 gym.make('게임이름')으로 불러온다.
  • 화면 랜더링을 위해서 env.render()를 호출, 만약 랜더링 필요 없을 때는 호출 하지 않아도 된다.
  • action은 임의로 env.action_space_sample()에서 가져온다. 추후 이 부분이 dqn Agent로 교체 될것이다.
  • env.reset()는 환경을 초기화하며, 초기 observation을 반환한다. 
  • env.step()을 통해 action을 주면, action에 대한 observation, reward, doen, info가 반환된다.
    • observation : 환경에대한 관찰을 나태내고, 환경에 따라 형태가 다른 객체이다.
    • reward : float 형식, action으로 달성한 보상. 크기는 환경에 따라 다르다.
    • done : boolean 형식, 에피소드 종료를 나타낸다.
    • info : 디버깅에 유요한 정보, 떄로는 학습에 사용될 수도 있다. 


[에이전트 환경 루프]

전형적인 강화 학습을 위한 환경으로 Agent는 action을 선택하고, 환경은 observation과 reward를 반환한다. 이를 이용해 높은 reward를 얻는 정책 선택을 학습하게 된다. 

   Agent  ---------- action ----------v
      ^----observation, reward ---- Environment



[관련 포스트]

댓글

이 블로그의 인기 게시물

간단한 cfar 알고리즘에 대해

windows에서 간단하게 크롬캐스트(Chromecast)를 통해 윈도우 화면 미러링 방법

쉽게 설명한 파티클 필터(particle filter) 동작 원리와 예제

base64 인코딩 디코딩 예제 c 소스

간단한 칼만 필터(Kalman Filter) 소스 코드와 사용 예제