Every-Visit Monte Carlo 구현하기
Every-Visit Monte Carlo 방법은 First-Visit 방식과 달리, 상태-행동 쌍이 에피소드에서 등장할 때마다 값을 업데이트합니다. 이 접근 방식은 에피소드에서 얻을 수 있는 모든 정보를 활용하므로 정책을 더 폭넓게 평가할 수 있지만, 에피소드 내에서 언제 발생했는지와 무관하게 모든 샘플을 포함하기 때문에 가치 추정의 분산이 커질 수 있습니다. 여러분의 작업은 every_visit_mc() 함수를 완성해 num_episodes개의 에피소드에 걸쳐 행동-가치 함수 Q를 추정하는 것입니다.
상태-행동 쌍을 키로 하는 딕셔너리 returns_sum과 returns_count가 초기화되어 있으며, generate_episode() 함수와 함께 미리 로드되어 있습니다.
이 연습은 강의의 일부입니다
Python으로 배우는 Gymnasium 기반 Reinforcement Learning
연습 안내
generate_episode()함수를 사용해 에피소드를 생성하세요.- 에피소드 내 각 상태-행동 쌍에 대해 반환과 그 횟수를 업데이트하세요.
- 추정된 Q 값을 계산하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
Q = np.zeros((num_states, num_actions))
for i in range(100):
# Generate an episode
episode = ____
# Update the returns and their counts
for j, (state, action, reward) in ____:
returns_sum[(state, action)] += sum(____)
returns_count[(state, action)] += ____
# Update the Q-values for visited state-action pairs
nonzero_counts = ____
Q[nonzero_counts] = ____
render_policy(get_policy())