始める無料で始める

マルチアーム・バンディットを解く

この演習では、epsilon 値を時間とともに減衰させて探索から活用へと切り替える、epsilon-greedy 戦略を実装して、10 本腕のバンディット問題を解きます。

epsilonmin_epsilonepsilon_decay はあらかじめ定義されています。epsilon_greedy() 関数もインポート済みです。

この演習はコースの一部です

Pythonで学ぶGymnasiumによるReinforcement Learning

コースを見る

演習の手順

  • create_multi_armed_bandit() 関数を使って 10 本腕のバンディット問題を初期化し、true_bandit_probscountsvaluesrewardsselected_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 = ____
コードを編集して実行