ComenzarEmpieza gratis

Parque infantil Entropía

Si no te has enfrentado antes al concepto de entropía, es útil que te lo expliques con un ejemplo.

Construirás una función plot_probabilities tomando como argumento una lista de probabilidades. Calcula la entropía y traza las probabilidades en un gráfico de barras.

Jugando con la entropía, deberías descubrir que la entropía es mayor cuando la distribución de probabilidad se reparte entre muchas acciones.

La clase torch.distribution.Categorical se carga en tu entorno como Categorical; esta clase tiene un método, .entropy(), que devuelve la entropía en nats.

Este ejercicio forma parte del curso

Aprendizaje profundo por refuerzo en Python

Ver curso

Instrucciones de ejercicio

  • Obtén la entropía de la distribución de probabilidad en nats.
  • Por comodidad, convierte la entropía de nats a bits.
  • Prueba a utilizar otra lista como entrada para la función.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

def plot_probabilities(probs):
  dist = Categorical(torch.tensor(probs))
  # Obtain the entropy in nats
  entropy = dist.____
  # Convert the entropy to bits
  entropy = entropy / math.log(____)
  print(f"{'Probabilities:':>15} {[round(prob, 3) for prob in dist.probs.tolist()]}")
  print(f"{'Entropy:':>15} {entropy:.2f}\n")
  plt.figure()
  plt.bar([str(x) for x in range(len(dist.probs))], dist.probs, color='skyblue', edgecolor='black')
  plt.ylabel('Probability'); plt.xlabel('Action index'); plt.ylim(0, 1)
  plt.show()
  
plot_probabilities([.25, .25, .25, .25])
plot_probabilities([.1, .15, .2, .25, .3])
# Try with your own list
plot_probabilities(____)
Editar y ejecutar código