ComeçarComece gratuitamente

Epsilon-greediness

Neste exercício, você implementará uma função select_action() que aplica a degradação do épsilon-greediness.

A gratidão ao Épsilon incentivará seu agente a explorar o ambiente, o que deve melhorar o aprendizado!

O cronograma de epsilon-greediness determina um limite \(\varepsilon\) para qualquer step, conforme a fórmula: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() deve retornar uma ação aleatória com probabilidade \(\varepsilon\) e a ação com o valor Q mais alto com probabilidade \(1-\varepsilon\).

Este exercício faz parte do curso

Aprendizado por reforço profundo em Python

Ver Curso

Instruções de exercício

  • Calcule o limite epsilon para o valor fornecido de step.
  • Sorteie um número aleatório entre 0 e 1.
  • Com probabilidade epsilon, retorne uma ação aleatória.
  • Com probabilidade 1-epsilon, retorne a ação com o valor Q mais alto.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

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")
Editar e executar código