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)를 통해 윈도우 화면 미러링 방법

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

안드로이드(android) 전체 화면 시계 앱(clock app) 예제 코드

mkfs.fat Device or resource busy 에러 해결법