해결된 질문
작성
·
59
0
안녕하세요! 이번에 금융권 핀테크 기업으로 이직하면서 강화학습을 직무에 활용할 수 있을까하여 공부하고 있는 사람입니다.
import gymnasium as gym
import numpy as np
import pprint
# SFFF (S: 시작점, 안전)
# FHFH (F: 얼어있는 표면, 안전)
# FFFH (H: 구멍, 추락)
# HFFG (G: 목표, 프리스비 위치)
# LEFT = 0
# DOWN = 1
# RIGHT = 2
# UP = 3
map = "4x4"
SLIPPERY = False # 결정론적 환경
#SLIPPERY = True # 확률적 환경
# FrozenLake-v1 환경을 생성합니다.
# desc: None이면 기본 맵을 사용합니다.
# map_name: 사용할 맵의 이름을 지정합니다.
# is_slippery: True이면 미끄러운 표면(확률적 환경)을 사용하고, False이면 결정론적 환경을 사용합니다.
env = gym.make('FrozenLake-v1', desc=None, map_name=map, is_slippery=SLIPPERY)
GAMMA = 1.0 # 감가율 (discount factor), 미래 보상의 현재 가치
THETA = 1e-5 # 정책 평가의 종료 조건, 변화가 이 값보다 작으면 평가 종료
num_states = env.observation_space.n # 환경의 상태(state) 개수
num_actions = env.action_space.n # 환경에서 가능한 행동(action) 개수
transitions = env.P # 상태-행동 전이 확률 (state-action transition probabilities)s)
강의로는 36강, 자료로는 015_DP_frozenlake_policy_evaluation.py
상에서 질문이 있습니다.
여기서 THETA가 1E-5인데, 이는 정책 평가의 종료 조건이라고 되어있었습니다. 이 때, 모든 그리드에서의 변화량 중 단 하나의 값이라도 THETA보다 작아지면 평가가 종료되는 것인지, 모든 그리드의 변화량이 THETA보다 작아지면 평가가 종료되는 것인지 궁금합니다.
답변 1
1
정책 평가에서 THETA
는 모든 상태에서의 가치 함수가 충분히 수렴했는지를 결정하는 종료 조건입니다. 즉, 모든 상태에서의 가치 변화량 중 가장 큰 값이 THETA
보다 작아질 때 평가가 종료된다는 의미입니다.
for s in range(num_states):
...............................
delta = max(delta, np.abs(old_value - V[s]))
위에서 delta는 모든 state 를 loop 돌았을 때 이전 state value 와 새로운 state value 간의 가장 큰 차이를 저장한 변수이므로 단 하나의 상태에서만 변화량이 THETA
보다 작아진다고 종료되는 것이 아니라, 모든 상태의 변화량이 THETA
보다 작아져야 평가가 종료된다는 의미입니다. 이는 가치 함수가 충분히 수렴했음을 보장하는 방법입니다.
좋은 질문 감사합니다.
정확하게 이해하였습니다.
모든 상태에서의 가치 함수의 변화량이 theta보다 작아야만 종료가 된다, 라고 기억해두겠습니다.
이번에 딥러닝과 머신러닝, 시계열 데이터까지 한 달 남짓한 시간 동안에 공부를 할 생각인데, 강의 정말 잘 활용하고 있습니다.
중간 중간 스스로 해결하기 어려운 질문들을 드리도록 하겠습니다. 질 좋은 강의 감사합니다.