정책과 상태 가치 함수

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Fouad Trad

Machine Learning Engineer

정책(Policy)

  • RL 목표 → 효과적인 정책 수립
  • 각 상태에서 수익을 극대화하는 행동 지정

큰 로드맵 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

그리드 월드 예시

  • 에이전트 목표: 산을 피하며 다이아몬드 도달
  • 9개 상태
  • 결정적 이동

action_numbers_green.png

9개 격자, 2개는 산, 1개는 다이아몬드인 사용자 정의 환경 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

그리드 월드 예시 - 보상

  • 상태별 보상:
    • 다이아몬드: +10

인접 칸에서 다이아몬드로 이동 시 보상 +10 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

그리드 월드 예시 - 보상

  • 상태별 보상:
    • 다이아몬드: +10
    • 산: -2

산으로 가는 행동은 보상 -2를 준다는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

그리드 월드 예시 - 보상

  • 상태별 보상:
    • 다이아몬드: +10
    • 산: -2
    • 기타: -1

다른 모든 이동은 보상 -1을 준다는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

그리드 월드 예시: 정책

# 0: left, 1: down, 2: right, 3: up
policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

state, info = env.reset() terminated = False while not terminated: action = policy[state] state, reward, terminated, _, _ = env.step(action)

상태 간 이동을 화살표로 나타낸 정책 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

상태 가치 함수

  • 상태의 가치를 추정
  • 정책을 따를 때 상태에서의 기대 수익

상태 가치 함수 공식을 보여주는 이미지: 상태 s에서 시작해 정책을 따를 때의 할인 수익.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

그리드 월드 예시: 상태 가치

상태 간 이동을 화살표로 나타낸 정책 이미지.

  • 9개 상태 → 9개 상태 가치
  • 할인율: $\gamma = 1$
Python으로 배우는 Gymnasium 기반 Reinforcement Learning

목표 상태의 가치

목표 상태에 있는 에이전트 이미지.

  • 목표 상태에서 시작하면 이동 없음
  • $V(\text{goal state}) = 0$

목표 상태의 가치가 0임을 보여주는 이미지

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

상태 5의 가치

상태 5에 있는 에이전트 이미지.

  • 5에서 시작하면 목표로 이동
  • $V(5) = 10$

상태 5의 가치가 10임을 보여주는 이미지

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

상태 2의 가치

상태 2에 있는 에이전트 이미지.

  • 2에서 시작, 보상: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

상태 2의 가치가 9임을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

전체 상태 가치

환경의 9개 상태에 대한 모든 상태 가치를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

벨만 방정식

  • 재귀 공식
  • 상태 가치를 계산

벨만 방정식: 현재 상태의 즉시 보상 + 다음 상태의 할인된 가치.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

상태 가치 계산하기

def compute_state_value(state):

if state == terminal_state: return 0
action = policy[state]
_, next_state, reward, _ = env.unwrapped.P[state][action][0]
return reward + gamma * compute_state_value(next_state)

벨만 방정식: 현재 상태의 즉시 보상 + 다음 상태의 할인된 가치.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

상태 가치 계산하기

terminal_state = 8
gamma = 1

V = {state: compute_state_value(state) for state in range(num_states)}
print(V)
{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

환경의 9개 상태에 대한 모든 상태 가치를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

정책 변경하기

# 0: left, 1: down, 2: right, 3: up
policy_two = {
    0:2, 1:2, 2:1,
    3:2, 4:2, 5:1,
    6:2, 7:2
}

V_2 = {state: compute_state_value(state) for state in range(num_states)} print(V_2)

상태 간 이동을 화살표로 나타낸 정책 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

정책 비교

정책 1의 상태 가치

{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

정책 1의 상태 가치 이미지.

정책 2의 상태 가치

{0: 7, 1: 8, 2: 9, 
 3: 7, 4: 9, 5: 10, 
 6: 8, 7: 10, 8: 0}

정책 2의 상태 가치 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

연습해 봅시다!

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Preparing Video For Download...