CommencezCommencez gratuitement

Terrain de jeu de l'entropie

Si vous n'avez jamais rencontré la notion d'entropie, un exemple vous aidera à bien la saisir.

Vous allez créer une fonction plot_probabilities qui prend en argument une liste de probabilités. Elle calcule l'entropie et trace les probabilités sous forme d'histogramme à barres.

En explorant l'entropie, vous devriez constater qu'elle est plus élevée lorsque la distribution de probabilité est répartie sur de nombreuses actions.

La classe torch.distribution.Categorical est chargée dans votre environnement sous le nom Categorical; cette classe offre une méthode, .entropy(), qui retourne l'entropie en nats.

Cette activité fait partie du cours

Deep Reinforcement Learning en Python

Voir le cours

Instructions de l’exercice

  • Obtenez l'entropie de la distribution de probabilité en nats.
  • Pour plus de commodité, convertissez l'entropie de nats en bits.
  • Essayez d'utiliser une autre liste comme entrée de la fonction.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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(____)
Modifier et exécuter le code