始める無料で始める

イプシロン・グリーディ

この演習では、減衰付きのイプシロン・グリーディを適用する select_action() 関数を実装します。

イプシロン・グリーディはエージェントに環境の探索を促し、学習の向上が期待できます。

イプシロン・グリーディのスケジュールは、任意の step に対するしきい値 \(\varepsilon\) を次式で定めます。 $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() は、確率 \(\varepsilon\) でランダムな行動を、確率 \(1-\varepsilon\) で Q 値が最大の行動を返すべきです。

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

Pythonで学ぶDeep Reinforcement Learning

コースを見る

演習の手順

  • 与えられた step の値に対するしきい値 epsilon を計算します。
  • 0 から 1 の間の乱数を 1 つ生成します。
  • 確率 epsilon でランダムな行動を返します。
  • 確率 1-epsilon で Q 値が最大の行動を返します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

def select_action(q_values, step, start, end, decay):
    # Calculate the threshold value for this step
    epsilon = end + (____) * math.exp(____ / ____)
    # Draw a random number between 0 and 1
    sample = random.____
    if sample < epsilon:
        # Return a random action index
        return random.____
    # Return the action index with highest Q-value
    return torch.____.item()
      
for step in [1, 500, 2500]:
    actions = [select_action(torch.Tensor([1, 2, 3, 5]), step, .9, .05, 1000) for _ in range(20)]
    print(f"Selecting 20 actions at step {step}.\nThe action with highest q-value is action 3.\nSelected actions: {actions}\n\n")
コードを編集して実行