マルチアーム・バンディットを解く
この演習では、epsilon 値を時間とともに減衰させて探索から活用へと切り替える、epsilon-greedy 戦略を実装して、10 本腕のバンディット問題を解きます。
epsilon、min_epsilon、epsilon_decay はあらかじめ定義されています。epsilon_greedy() 関数もインポート済みです。
この演習はコースの一部です
Pythonで学ぶGymnasiumによるReinforcement Learning
演習の手順
create_multi_armed_bandit()関数を使って 10 本腕のバンディット問題を初期化し、true_bandit_probs、counts、values、rewards、selected_armsを取得します。epsilon_greedy()関数を用いて引くアームを選択します。- 真のバンディット確率に基づいて
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 = ____