마르코프 결정 과정

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Fouad Trad

Machine Learning Engineer

MDP

  • RL 환경을 수학적으로 모델링

복잡한 환경(스마트 시티)에서 추출할 구성요소: 상태, 동작, 보상, 전이 확률.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP

  • RL 환경을 수학적으로 모델링

복잡한 환경에서 MDP 구성요소(상태, 동작, 보상, 전이 확률)를 추출해 모델 기반 RL로 해결하는 다이어그램.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

마르코프 성질

  • 미래 상태는 오직 현재 상태와 동작에만 의존

가능한 이동을 화살표로 표시한 체스판 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake

  • 구멍에 빠지지 않고 목표에 도달해야 함

Frozen Lake 환경 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 상태

  • 에이전트가 점유할 수 있는 위치

Frozen Lake 환경에서 에이전트의 세 가지 다른 위치를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 종료 상태

  • 에피소드 종료로 이어짐

Frozen Lake 환경의 종료 상태를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 동작

  • 위, 아래, 왼쪽, 오른쪽

Frozen Lake에서 수행할 수 있는 동작과 레이블: 0-왼쪽, 1-아래, 2-오른쪽, 3-위.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 전이

  • 동작이 기대한 결과로 이어지지 않을 수 있음

오른쪽으로 이동하려는, 얼어붙은 호수 격자 좌상단의 에이전트 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 전이

  • 동작이 기대한 결과로 이어지지 않을 수 있음

에이전트가 오른쪽으로 이동할 수 있음을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 전이

  • 동작이 기대한 결과로 이어지지 않을 수 있음

에이전트가 아래로도 이동할 수 있음을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 전이

  • 동작이 기대한 결과로 이어지지 않을 수 있음

에이전트가 제자리에 머무를 수도 있음을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 전이

  • 동작이 기대한 결과로 이어지지 않을 수 있음

오른쪽으로 이동하려 할 때, 오른쪽/아래/제자리 확률이 있음을 보여주는 이미지.

  • 전이 확률: 주어진 상태와 동작에서 특정 상태에 도달할 가능성
Python으로 배우는 Gymnasium 기반 Reinforcement Learning

MDP로 본 Frozen Lake - 보상

  • 보상은 목표 상태에서만 제공

목표 상태의 에이전트를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Gymnasium 상태와 동작

import gymnasium as gym


env = gym.make('FrozenLake', is_slippery=True)
print(env.action_space)
print(env.observation_space)
print("Number of actions: ", env.action_space.n)
print("Number of states: ", env.observation_space.n)
Discrete(4)

Discrete(16)
Number of actions: 4
Number of states: 16
Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Gymnasium 보상과 전이

env.unwrapped.P: 상태-동작 쌍을 키로 하는 딕셔너리

print(env.unwrapped.P[state][action])
[
  (probability_1, next_state_1, reward_1, is_terminal_1), 
  (probability_2, next_state_2, reward_2, is_terminal_2), 
  etc.
]
Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Gymnasium 보상과 전이 - 예시

state = 6
action = 0

print(env.unwrapped.P[state][action])
[(0.3333333333333333, 2, 0.0, False), 
(0.3333333333333333, 5, 0.0, True), 
(0.3333333333333333, 10, 0.0, False)]

동작 번호: 0-왼쪽, 1-아래, 2-오른쪽, 3-위를 보여주는 이미지.

상태가 왼쪽 위부터 줄별로 번호 매겨졌을 때, 에이전트가 상태 6에 있음을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

연습해 봅시다!

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Preparing Video For Download...