Kom igångKom igång gratis

Epsilon-girighet

I den här övningen ska du implementera en select_action()-funktion som tillämpar avklingande epsilon-girighet.

Epsilon-girighet uppmuntrar agenten att utforska miljön, vilket bör förbättra inlärningen!

Epsilon-girighetsschemat bestämmer ett tröskelvärde \(\varepsilon\) för ett givet step enligt formeln: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() ska returnera en slumpmässig aktion med sannolikhet \(\varepsilon\), och aktionen med högst Q-värde med sannolikhet \(1-\varepsilon\).

Den här övningen är en del av kursen

Djup förstärkningsinlärning i Python

Visa kurs

Övningsinstruktioner

  • Beräkna tröskelvärdet epsilon för det givna värdet på step.
  • Dra ett slumpmässigt tal mellan 0 och 1.
  • Med sannolikhet epsilon, returnera en slumpmässig aktion.
  • Med sannolikhet 1-epsilon, returnera aktionen med högst Q-värde.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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")
Redigera och kör kod