RL 프레임워크 탐색

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Fouad Trad

Machine Learning Engineer

RL 프레임워크

에이전트 구성요소를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

RL 프레임워크

에이전트와 환경 구성요소를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

RL 프레임워크

  • 에이전트: 학습자, 의사결정 주체
  • 환경: 해결해야 할 과제

에이전트, 환경, 상태, 행동, 보상 등 모든 RL 구성요소를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

RL 프레임워크

  • 에이전트: 학습자, 의사결정 주체
  • 환경: 해결해야 할 과제
  • 상태: 특정 시점의 환경 스냅샷

환경이 에이전트에게 상태를 제공함을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

RL 프레임워크

  • 에이전트: 학습자, 의사결정 주체
  • 환경: 해결해야 할 과제
  • 상태: 특정 시점의 환경 스냅샷
  • 행동: 상태에 대한 에이전트의 선택

에이전트가 환경의 상태에 반응해 행동을 수행함을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

RL 프레임워크

  • 에이전트: 학습자, 의사결정 주체
  • 환경: 해결해야 할 과제
  • 상태: 특정 시점의 환경 스냅샷
  • 행동: 상태에 대한 에이전트의 선택
  • 보상: 행동에 대한 피드백

에이전트가 환경의 상태에 반응해 행동을 수행하고, 그 행동에 따라 환경으로부터 보상을 받는 것을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

RL 상호작용 루프

env = create_environment()
state = env.get_initial_state()

for i in range(n_iterations): action = choose_action(state)
state, reward = env.execute(action)
update_knowledge(state, action, reward)

에이전트가 환경의 상태에 반응해 행동을 수행하고, 그 행동에 따라 환경으로부터 보상을 받는 것을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

에피소드형 vs. 연속형 과제

에피소드형 과제
  • 과제가 에피소드로 구분됨
  • 에피소드는 시작과 끝이 있음
  • 예: 체스를 두는 에이전트

체스를 두는 고양이를 보여주는 이미지.

연속형 과제
  • 상호작용이 연속적임
  • 뚜렷한 에피소드 없음
  • 예: 신호등 제어 조정

자전거를 탄 개구리가 신호가 초록불로 바뀌길 기다리는 이미지를 보여줌.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

반환값

  • 행동은 장기적 영향을 가짐
  • 에이전트의 목표: 시간에 따른 총보상 최대화
  • 반환값(Return): 기대 보상의 합

반환값이 r_1부터 r_n까지 개별 보상의 합임을 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

할인된 반환값

  • 즉시 보상은 미래 보상보다 가치가 큽니다
  • 할인된 반환값: 가까운 보상에 더 큰 가중치 부여
  • 할인율($\gamma$): 미래 보상을 할인

할인된 반환값이 각 시점에 따른 할인율 거듭제곱을 곱한 보상의 합으로 표현됨을 보여주는 공식 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

할인율

  • 01 사이
  • 단기 vs. 장기 보상 균형
    • 낮을수록 → 즉시 이익 중시
    • 높을수록 → 장기 이익 중시

할인율 극값의 영향: 0은 즉시 이익만, 1은 미래 보상 무할인 선호를 보여주는 이미지.

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

수치 예시

import numpy as np
expected_rewards = np.array([1, 6, 3])

discount_factor = 0.9
discounts = np.array([discount_factor ** i for i in range(len(expected_rewards))])
print(f"Discounts: {discounts}")
Discounts: [1.   0.9  0.81]
discounted_return = np.sum(expected_rewards * discounts)
print(f"The discounted return is {discounted_return}")
The discounted return is 8.83
Python으로 배우는 Gymnasium 기반 Reinforcement Learning

연습해 봅시다!

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

Preparing Video For Download...