開始使用免費開始

評估多拉霸問題中的收斂情形

在多拉霸(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}")
編輯並執行程式碼