강화학습의 간단한 실습인
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는 종료됩니다.
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)]
라는 값이 나오는것을 확인할 수 있습니다.
'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 |