시작하기무료로 시작하기

Every-Visit Monte Carlo 구현하기

Every-Visit Monte Carlo 방법은 First-Visit 방식과 달리, 상태-행동 쌍이 에피소드에서 등장할 때마다 값을 업데이트합니다. 이 접근 방식은 에피소드에서 얻을 수 있는 모든 정보를 활용하므로 정책을 더 폭넓게 평가할 수 있지만, 에피소드 내에서 언제 발생했는지와 무관하게 모든 샘플을 포함하기 때문에 가치 추정의 분산이 커질 수 있습니다. 여러분의 작업은 every_visit_mc() 함수를 완성해 num_episodes개의 에피소드에 걸쳐 행동-가치 함수 Q를 추정하는 것입니다.

상태-행동 쌍을 키로 하는 딕셔너리 returns_sumreturns_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())
코드 편집 및 실행