ComenzarEmpieza gratis

La relación de probabilidad recortada

Ahora pondrás en práctica la relación de probabilidad recortada, un componente esencial de la función objetivo PPO.

Como referencia, la razón de probabilidad se define como: $$\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$$

Y la razón de probabilidad recortada es: \(\mathrm{clip}(r_t(\theta), 1-\varepsilon, 1+\varepsilon)\).

Este ejercicio forma parte del curso

Aprendizaje profundo por refuerzo en Python

Ver curso

Instrucciones de ejercicio

  • Obtén la probabilidad de acción prob a partir de action_log_prob, y prob_old a partir de action_log_prob_old.
  • Separar el antiguo registro de acciones prob del gráfico de cálculo del gradiente de la antorcha.
  • Calcula el cociente de probabilidades.
  • Recorta el objetivo sustitutivo.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

log_prob = torch.tensor(.5).log()
log_prob_old = torch.tensor(.4).log()

def calculate_ratios(action_log_prob, action_log_prob_old, epsilon):
    # Obtain prob and prob_old
    prob = ____
    prob_old = ____
    # Detach the old action log prob
    prob_old_detached = ____.____()
    # Calculate the probability ratio
    ratio = ____ / ____
    # Apply clipping
    clipped_ratio = torch.____(ratio, ____, ____)
    print(f"+{'-'*29}+\n|         Ratio: {str(ratio)} |\n| Clipped ratio: {str(clipped_ratio)} |\n+{'-'*29}+\n")
    return (ratio, clipped_ratio)

_ = calculate_ratios(log_prob, log_prob_old, epsilon=.2)
Editar y ejecutar código