close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

김성훈 교수님께서 작성한 첫번째 예제 코드는 키보드 조작을 통하여 action을 선택하고 다음 상태로 천이하는 과정을 거치게 됩니다.

키보드 코드 관련 코드가 들어감으로 인해서 코드가 복잡해져서 처음 접하는 분들이 조금은 난해하게 느껴지며, 키입력에 대한 리눅스 OS, 윈도우 OS, 맥 OS가 각기 다름으로 인해서 오는 설치의 어려움이 있습니다.

그래서 키보드를 사용하지 않고 램덤하게 action을 선택하는 방식으로 소스를 수정하여 전반적인 강화학습의 코드 흐름을이해할 수 있도록 하였습니다.

 


 

1. 간단한 예제

 

 
import gym
env = gym.make("FrozenLake-v0")
env.reset()

for _ in range(1000):
    env.render()
    action = env.action_space.sample()
    env.step(action)

 

state, reward, done, _ 

파일을 카피하여 이름을 바꾼 후에 위의 빨간색 부분을 추가 합니다.

동작을 시켜보면 1000번 까지 동작을 하고 끝나는 방식입니다.

env.action_space.sample() 함수를 사용하여 랜덤하게 action을 선택하고 env.step(action)을 사용하여 선택된 action을 가지고 한 스텝 실행을 시켜 다음 상태로 이동 합니다.

 


2. 임무를 완수하면 끝내기

 

 
import gym
env = gym.make("FrozenLake-v0")
env.reset()

done = None
while not done:                            # 게임 한판
    env.render()
    action = env.action_space.sample()
    state, reward, done, _ = env.step(action)

 

env.step(action)의 실행결과 리턴 중에 done을 업데이트 한다.

done의 결과가 1이면 실행 종료

 

 


3. 에피소드 1000번 수행하고 끝내기

 

 
import gym
env = gym.make("FrozenLake-v0")

num_episodes = 1000
for i in range(num_episodes) : # 학습을 num_episodes 만큼 시키면서 업데이트
    env.reset()​
    done = None
    while not done:                            # 게임 한판
        #####env.render()                      # 속도를 위해 주석 처리함
        action = env.action_space.sample()
        state, reward, done, _ = env.step(action) 
    env.render()                               # 에피소드가 끝날 때 마다 상태 확인

 

에피소드를 100번 수행하고 끝낸다.

실패인 경우와 성공인 경우가 랜덤하게 발생할 수 있다.

에피소스가 끝날 때 마다 렌더링을 한다.

 


추가 적을 해볼 것

 

1. print를 사용하여 각 상태 모니터링

 

 

번호 제목 글쓴이 날짜 조회 수
공지 RL4RWS 이용 안내 모두의연구소 2017.09.04 1940
32 강화학습 실습 3. FrozonLake - dummy Q-learning file cosmos 2018.02.09 237
» 강화학습 실습 2. FrozonLake 동작 시켜 보기 file cosmos 2018.02.09 190
30 강화학습 실습 1. Python과 OpenAI Gym 설치 및 간단한 동작 file cosmos 2018.02.09 434
29 1차 아두이노 및 부품 리스트 file cosmos 2018.02.07 118
28 2월 6일 세미나 진행 내용 cosmos 2018.02.06 62
27 아두이노 기반 실물 제작 발표자료 file cosmos 2018.02.02 109
26 아두이노 설치 및 초음파센서, 모터, 블루투스 예제 사이트 정리 cosmos 2018.02.01 720
25 향후 일정 정리 file cosmos 2018.01.31 155
24 1월 30일 세미나 진행 내용 cosmos 2018.01.31 33
23 강화학습의 진화 : 3차원 및 물리환경의 적용 - LG blog file cosmos 2018.01.26 108
22 1월 23일 세미나 진행 내용 cosmos 2018.01.23 85
21 Autonomous self-learning systems 영문 번역 1차 file cosmos 2018.01.22 81
20 이산 시간 확률 과정, 마르코프 체인, 마르코프 의사결정 과정 관련 사이트 정리 cosmos 2018.01.18 542
19 시즌 2에 사용할 실물 회로 및 부품 file cosmos 2018.01.12 84
18 10월 31일 세미나에서 진행할 내용 cosmos 2017.10.31 67
17 Line Tracer 예제 코드 컴파일 하기 [4] file 쪼알 2017.10.26 152
16 10월 24일 세미나에서 진행할 내용 cosmos 2017.10.24 52
15 20171018 세미나에서 진행할 내용 file cosmos 2017.10.16 79
14 9/26 3장 소스 코드 애매한 부분 설명 통통배 2017.09.26 94
13 OpenAI GYM 설치/구동법 (리눅스/윈도우즈) file 통통배 2017.09.26 1622