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
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(____)