let us not love with words or tongue but actions and truth.

IT/강화학습

Frozen Lake 구동해보기

sarah0518 2022. 9. 17. 17:48
728x90

 

강화학습의 간단한 실습인

Frozen Lake를 구동해보겠습니다.

우선 import로 gym을 불러옵니다.

 

 

1
2
3
import gym
env=gym.make(“FrozenLake-v1”, new_step_api=True, render_mode=”human”, is_slippery=False)
 
cs

 

  • new_step_api 새로운 버전을 쓸지에 대한 여부
  • render_mode = “human” : graphical하게 볼수 있는 옵션 (ansi도 있음)
  • is_slippery=False: FrozenLake의 미끄러운 version으로 사용여부

 

위와 같이 환경을 구성했으면 아래 reset에 대한 state도 설정해줍니다.

1
state=env.reset() 
cs

episode가 끝날 때 agent를 초기화 시킬 지에 대한 상태설정으로 

위와 같이 입력하면 episode가 끝날 때 상태가 초기화 됩니다.

1
env.render()
cs

위의 코드를 입력하면 Frozen Lake의 환경을 시각적으로 볼 수 있습니다.

 

 

 

추가로, space에 대한 정보값을 보려면 아래와 같이 입력해주면 됩니다.

env.observation_space

> Discrete(4)

 

env.action_space

> Discrete(4)

 

 

 

예를 들어 아래와 같은 환경이 주어져있다고 해볼게요.

H는 Hole의 약자, F는 얼음의 약자로 구멍에 빠지게 되면 episode는 종료됩니다.

encodings: 0 (left), 1 (down), 2(right), 3 (up)

env.P[6][1]을 입력하게되면 아래와 같은 값이 나옵니다.

[(0.33, 5, 0.0, True),

(0.33, 10, 0.0, False),

(0.33, 7, 0.0, True)]

env.P[6][1] 이 말은

6번상태에서 이동하게 되면

1/3의 확률로, 5, 7, 10으로 이동하게 된다는 말입니다.

 

다른 예를 들어,

env.P[1][1] : 1번상태에서 아래로 이동하게 되면

  • Transition probability (1.0) 
  • The next state (5) 
  • Reward (0) 
  • Is terminal state? (True)

** 100%의 확률로 next state는 5 이동하고, reward는 0이라는 뜻이에요.

 

아래와 같이 다양한 값을 확인해보면서 이해하시면 될거같아요.

 

 

만약 Hall state에서는 어떤 값이 나오는지 확인해보면

env.P[5][0]

→ [(1.0, 5, 0, True)]

라는 값이 나오는것을 확인할 수 있습니다.

728x90

'IT > 강화학습' 카테고리의 다른 글

Temporal Difference Learning  (0) 2022.10.25
Monte Carlo methods - Importance Sampling  (0) 2022.10.12
Monte Carlo methods  (0) 2022.10.11
Bellman equation 정리  (0) 2022.09.27
강화학습 소개  (2) 2022.09.13