解多拉霸問題
在這個練習中,你要實作 epsilon-greedy 策略來解一個具有 10 支拉霸臂的 bandit 問題;epsilon 會隨時間遞減,從探索逐步轉向利用。
epsilon、min_epsilon 與 epsilon_decay 已為你預先定義好。epsilon_greedy() 函式也已匯入。
本練習屬於課程
使用 Python 的 Gymnasium 進行強化學習
練習說明
- 使用
create_multi_armed_bandit()函式初始化一個含 10 支拉霸臂的 bandit 問題,該函式會回傳true_bandit_probs、counts、values、rewards與selected_arms。 - 使用
epsilon_greedy()函式選擇要拉的手臂。 - 依據真實的 bandit 機率來模擬
reward。 - 遞減
epsilon值,並確保不會低於min_epsilon。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Create a 10-armed bandit
true_bandit_probs, counts, values, rewards, selected_arms = ____
for i in range(n_iterations):
# Select an arm
arm = ____
# Compute the received reward
reward = ____
rewards[i] = reward
selected_arms[i] = arm
counts[arm] += 1
values[arm] += (reward - values[arm]) / counts[arm]
# Update epsilon
epsilon = ____