評估多拉霸問題中的收斂情形
在多拉霸(multi-armed bandit)問題中評估各種策略的效能與是否收斂,對了解其效果至關重要。透過分析每個拉霸手臂隨時間被選取的頻率,我們可以推斷學習進程,以及策略找出並利用最佳手臂的能力。這個練習要將各手臂在多次迭代中的選取百分比視覺化,以評估 epsilon-greedy 策略的收斂情形。
已經為你預先載入 selected_arms 陣列,記錄每次迭代被拉動的是哪一支手臂。
本練習屬於課程
使用 Python 的 Gymnasium 進行強化學習
練習說明
- 以全為 0 的陣列初始化
selections_percentage,其維度需能追蹤每個 bandit 隨時間的選取百分比。 - 透過對每個 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}")