ComenzarEmpieza gratis

Epsilon-greediness

En este ejercicio, pondrás en práctica una función select_action() que aplica la degradación épsilon-greediness.

Epsilon-greediness animará a tu agente a explorar el entorno, ¡lo que debería mejorar el aprendizaje!

La programación de la fidelidad épsilon determina un umbral \(\varepsilon\) para cualquier step dado, según la fórmula: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() debe devolver una acción aleatoria con probabilidad \(\varepsilon\), y la acción con mayor valor Q con probabilidad \(1-\varepsilon\).

Este ejercicio forma parte del curso

Aprendizaje profundo por refuerzo en Python

Ver curso

Instrucciones de ejercicio

  • Calcula el umbral epsilon para el valor dado de step.
  • Saca un número al azar entre 0 y 1.
  • Con la probabilidad epsilon, devuelve una acción aleatoria.
  • Con probabilidad 1-epsilon, devuelve la acción con mayor valor Q.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

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 y ejecutar código