시작하기무료로 시작하기

Multi-armed bandit에서 수렴 평가하기

Multi-armed bandit 문제에서 전략의 성능과 수렴을 평가하는 것은 효과성을 파악하는 데 매우 중요해요. 시간이 지남에 따라 각 팔이 얼마나 자주 선택되는지를 분석하면, 학습 과정과 최고의 팔을 식별하고 활용하는 전략의 능력을 추론할 수 있어요. 이 연습 문제에서는 반복(iteration)에 따라 각 팔의 선택 비율을 시각화하여 epsilon-greedy 전략의 수렴을 평가해 봅니다.

각 반복에서 어떤 팔을 당겼는지를 나타내는 selected_arms 배열은 미리 로드되어 있어요.

이 연습은 강의의 일부입니다

Python으로 배우는 Gymnasium 기반 Reinforcement Learning

강의 보기

연습 안내

  • 시간에 따른 각 bandit의 선택 비율을 추적할 수 있도록, 0으로 초기화된 selections_percentage 배열을 적절한 크기로 초기화하세요.
  • 각 bandit에 대해 반복마다 선택의 누적 합을 계산하고, 반복 번호로 나누어 시간에 따른 selections_percentage를 구하세요.
  • 각 bandit의 누적 선택 비율을 그래프로 그려, 반복에 따라 각 bandit이 얼마나 자주 선택되는지 시각화하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Initialize the selection percentages with zeros
selections_percentage = ____
for i in range(n_iterations):
    selections_percentage[i, selected_arms[i]] = 1
# Compute the cumulative selection percentages 
selections_percentage = np.____(____, axis=____) / np.arange(1, ____).reshape(-1, 1)
for arm in range(n_bandits):
  	# Plot the cumulative selection percentage for each arm
    plt.plot(____, label=f'Bandit #{arm+1}')
plt.xlabel('Iteration Number')
plt.ylabel('Percentage of Bandit Selections (%)')
plt.legend()
plt.show()
for i, prob in enumerate(true_bandit_probs, 1):
    print(f"Bandit #{i} -> {prob:.2f}")
코드 편집 및 실행