ÎncepețiÎncepe gratuit

Epsilon-greedy

În acest exercițiu, vei implementa o funcție select_action() care aplică strategia epsilon-greedy cu descreștere.

Strategia epsilon-greedy îl încurajează pe agentul tău să exploreze mediul, ceea ce ar trebui să îmbunătățească procesul de învățare!

Planificarea epsilon-greedy determină un prag \(\varepsilon\) pentru orice step dat, conform formulei: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() ar trebui să returneze o acțiune aleatoare cu probabilitatea \(\varepsilon\) și acțiunea cu cea mai mare valoare Q cu probabilitatea \(1-\varepsilon\).

Acest exercițiu face parte din cursul

Deep Reinforcement Learning în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Calculează pragul epsilon pentru valoarea dată a lui step.
  • Generează un număr aleator între 0 și 1.
  • Cu probabilitatea epsilon, returnează o acțiune aleatoare.
  • Cu probabilitatea 1-epsilon, returnează acțiunea cu cea mai mare valoare Q.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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")
Editează și rulează codul