開始使用免費開始

解多拉霸問題

在這個練習中,你要實作 epsilon-greedy 策略來解一個具有 10 支拉霸臂的 bandit 問題;epsilon 會隨時間遞減,從探索逐步轉向利用。

epsilonmin_epsilonepsilon_decay 已為你預先定義好。epsilon_greedy() 函式也已匯入。

本練習屬於課程

使用 Python 的 Gymnasium 進行強化學習

檢視課程

練習說明

  • 使用 create_multi_armed_bandit() 函式初始化一個含 10 支拉霸臂的 bandit 問題,該函式會回傳 true_bandit_probscountsvaluesrewardsselected_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 = ____
編輯並執行程式碼